sql >> Database >  >> RDS >> Sqlserver

Meerdere foutmeldingen vastleggen vanuit een enkele instructie in TRY CATCH

Afhankelijk van uw behoeften en de machtigingen van het account waaronder u dit script uitvoert, kunt u mogelijk DBCC OUTPUTBUFFER(@@spid) gebruiken .

Ik kwam op dit idee bij het lezen van Erland Sommarskog's Error Handling artikel . Hij linkt naar een procedure spGET_ErrorMessage .

Helaas ging dit niet helemaal werk echter in mijn testscript op SQL Server 2008 dus ik weet niet zeker of het bufferformaat is veranderd, maar het zou er kunnen komen met een beetje tweaken!

CREATE TABLE #foo
(
c INT DEFAULT(0)
)
ALTER TABLE #foo ALTER COLUMN c VARCHAR(10)

GO
EXEC spGET_LastErrorMessage

Werkelijke output

Msg 5074, Level 16, State 1, Line 2
The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.

    Msg 4922, Level 16, State 9, Line 2
    ALTER TABLE ALTER COLUMN c failed because one or more objects access this column.

Geclaimde uitvoer

errNumber            errState    errLevel    errMessage                                                                               errInstance                                                                                                                     errProcedure    errLine
-------------------- ----------- ----------- ---------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------- --------------- -----------
5074                 1           16          The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.                  MARTINHP                                                                                                                        NULL            2
4922                 9           16          The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.ALTER TABL        MARTINHP 䄀䰀吀䔀刀 䌀伀䰀唀䴀一 挀 昀愀椀氀攀搀 戀攀挀愀甀猀攀 漀渀攀 漀爀 洀漀爀攀 漀戀樀攀挀琀猀 愀挀挀攀猀猀 琀栀椀         NULL            117


  1. Opgeslagen procedure voor het verwijderen van records in Oracle DBMS

  2. Ontwikkelaarstools om rechtstreeks toegang te krijgen tot databases

  3. Typefout geneste Case-instructie (postgres)

  4. selecteer het laatste bericht van het gesprek voor elk gesprek in mysql