Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Ghi lại nhiều thông báo lỗi từ một câu lệnh duy nhất bên trong TRY CATCH

Tùy thuộc vào nhu cầu của bạn và quyền của tài khoản mà bạn đang chạy tập lệnh này trong đó, bạn có thể sử dụng DBCC OUTPUTBUFFER(@@spid) .

Tôi nảy ra ý tưởng này khi đọc bài viết về Xử lý lỗi của Erland Sommarskog . Anh ta liên kết đến một thủ tục spGET_ErrorMessage .

Thật không may, điều này không hoàn toàn hoạt động trong tập lệnh thử nghiệm của tôi trên SQL Server 2008, vì vậy tôi không chắc liệu định dạng bộ đệm có thay đổi hay không nhưng nó có thể đến đó với một chút tinh chỉnh!

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

GO
EXEC spGET_LastErrorMessage

Sản lượng thực tế

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.

Đầu ra được yêu cầu

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. Cách xóa cột trong SQL Server bằng T-SQL

  2. Kết nối với Cơ sở dữ liệu MSSQL bằng Flask-SQLAlchemy

  3. cách khai báo biến toàn cục trong SQL Server ..?

  4. Làm thế nào để tìm các hàng liên tiếp dựa trên giá trị của một cột?

  5. Máy chủ Xampp MS SQL PHP 5.6