sql >> Databasteknik >  >> RDS >> Sqlserver

Fånga flera felmeddelanden från en enda sats inuti TRY CATCH

Beroende på dina behov och behörigheterna för kontot som du kör det här skriptet under kanske du kan använda DBCC OUTPUTBUFFER(@@spid) .

Jag stötte på den här idén när jag läste Erland Sommarskogs felhanteringsartikel . Han länkar till en procedur spGET_ErrorMessage .

Tyvärr gick det inte helt fungerar dock i mitt testskript på SQL Server 2008 så jag är inte säker på om buffertformatet har ändrats men det kan komma dit med lite justeringar!

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

GO
EXEC spGET_LastErrorMessage

Faktisk utgång

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.

Hämta utdata

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. Hämta ett rekord på maxdatum för varje månad

  2. SQL Server v.Next:STRING_AGG Performance, del 2

  3. Uppdatera flera rader mysql

  4. Förhindra uppföljning för att släppa databasen i node.js-appen