Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Acquisizione di più messaggi di errore da una singola istruzione all'interno di TRY CATCH

A seconda delle tue esigenze e delle autorizzazioni dell'account con cui stai eseguendo questo script, potresti essere in grado di utilizzare DBCC OUTPUTBUFFER(@@spid) .

Mi sono imbattuto in questa idea leggendo l'articolo sulla gestione degli errori di Erland Sommarskog . Si collega a una procedura spGET_ErrorMessage .

Sfortunatamente questo non è stato del tutto funziona nel mio script di test su SQL Server 2008, quindi non sono sicuro che il formato del buffer sia cambiato, ma potrebbe arrivarci con un po' di ritocco!

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

GO
EXEC spGET_LastErrorMessage

Uscita effettiva

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.

Risultato rivendicato

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