Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menangkap beberapa pesan kesalahan dari satu pernyataan di dalam TRY CATCH

Bergantung pada kebutuhan Anda dan izin akun tempat Anda menjalankan skrip ini, Anda mungkin dapat menggunakan DBCC OUTPUTBUFFER(@@spid) .

Saya menemukan ide ini ketika membaca artikel Penanganan Kesalahan Erland Sommarskog . Dia menautkan ke prosedur spGET_ErrorMessage .

Sayangnya ini tidak cukup bekerja di skrip pengujian saya di SQL Server 2008 jadi saya tidak yakin apakah format buffer telah berubah tetapi mungkin sampai di sana dengan sedikit penyesuaian!

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

GO
EXEC spGET_LastErrorMessage

Keluaran Sebenarnya

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.

Keluaran yang Diklaim

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. Bagaimana cara membagi nilai kolom tunggal menjadi beberapa nilai kolom?

  2. Izin SQL Server pada Procs Tersimpan dengan SQL dinamis

  3. Mempartisi menghasilkan kueri total yang berjalan

  4. Berapa jumlah maksimum baris yang dapat disimpan oleh satu tabel SQL Server?

  5. Bagaimana cara memperbarui dua tabel dalam satu pernyataan di SQL Server 2005?