Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Улавяне на множество съобщения за грешка от един израз в TRY CATCH

В зависимост от вашите нужди и разрешенията на акаунта, под който изпълнявате този скрипт, може да можете да използвате DBCC OUTPUTBUFFER(@@spid) .

Попаднах на тази идея, когато четях статията за обработка на грешки на Erland Sommarskog . Той препраща към процедура spGET_ErrorMessage .

За съжаление това не съвсем работят в тестовия ми скрипт на SQL Server 2008, така че не съм сигурен дали форматът на буфера се е променил, но може да стигне до там с малко коригиране!

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

GO
EXEC spGET_LastErrorMessage

Действителен резултат

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.

Заявен резултат

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за данни в дървовидна структура в SQL Server

  2. Как да създадете първичен ключ в SQL Server (T-SQL примери)

  3. Как да зададете езика по подразбиране за всички нови влизания в SQL Server (T-SQL)

  4. Как да чета множество набори от резултати, върнати от съхранена процедура на SQL Server в R

  5. Групиране на общия брой активни потребители за всяка от предходните 8 седмици