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

Merekam tumpukan panggilan SQL Server saat melaporkan kesalahan

Oke, saya akan menambahkan penanganan kesalahan kami kembali :-)

Fungsi ERROR_%() terlihat oleh cakupan blok CATCH. Ini berarti Anda dapat menggunakannya dalam proc atau panggilan fungsi yang tersimpan di setiap blok CATCH

Dan dengan proses tersimpan bersarang, akan berguna untuk mengetahui apa yang menyebabkan kesalahan dan apa yang mencatat kesalahan tersebut

...
END TRY
BEGIN CATCH
    IF XACT_STATE() <> 0 AND @starttrancount = 0 
        ROLLBACK TRANSACTION
    EXEC dbo.MyExceptionHandler @@PROCID, @errmsg OUTPUT;
    RAISERROR (@errmsg, 16, 1);
END CATCH

---with this handler (cut down version of ours)
CREATE PROCEDURE dbo.MyExceptionHandler
    @CallerProcID int,
    @ErrorMessage varchar(2000) OUTPUT
WITH EXECUTE AS OWNER --may be needed to get around metadata visibility issues of OBJECT_NAME
AS
SET NOCOUNT, XACT_ABORT ON;

BEGIN TRY
    SET @ErrorMessage = --cutdown
            CASE
                WHEN @errproc = @callerproc THEN        --Caller = error generator
                        --build up stuff

                ELSE    --Just append stuff             --Nested error stack
            END;

    IF @@TRANCOUNT = 0
        INSERT dbo.Exception (Who, TheError, WhatBy, LoggedBy)
        VALUES (ORIGINAL_LOGIN()), RTRIM(ERROR_MESSAGE()), ERROR_PROCEDURE(), OBJECT_NAME(@CallerProcID));
END TRY
BEGIN CATCH
   --and do what exactly?
END CATCH
GO

Ini adalah ide dasarnya:setiap blok CATCH sederhana, pekerjaan berlangsung di penangan kesalahan. Misalnya tambahkan ERROR_NUMBER() jika Anda ingin



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkah Anda memantau eksekusi paket SSIS, dalam BIDS, saat dijalankan di server?

  2. Paket SSIS berjalan 500x lebih lama di satu server

  3. Bagaimana saya bisa membuat skrip database MS SQL Server dengan pemesanan objek yang tepat?

  4. Impor Otomatis banyak file .txt ke tabel server sql

  5. SQL - Ambil data berdasarkan halaman