Bagikan melalui


ERROR_STATE (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Mengembalikan jumlah status kesalahan yang menyebabkan blok CATCH dari TRY... KONSTRUKSI CATCH yang akan dijalankan.

Konvensi sintaks transact-SQL

Sintaks

ERROR_STATE ( )  

Jenis Kembalian

int

Tampilkan Nilai

Ketika dipanggil dalam blok CATCH, mengembalikan nomor status pesan kesalahan yang menyebabkan blok CATCH dijalankan.

Mengembalikan NULL jika dipanggil di luar cakupan blok CATCH.

Keterangan

Beberapa pesan kesalahan dapat dimunculkan di beberapa titik dalam kode untuk Mesin Database Microsoft SQL Server. Misalnya, kesalahan "1105" dapat dimunculkan untuk beberapa kondisi yang berbeda. Setiap kondisi tertentu yang memunculkan kesalahan menetapkan kode status unik.

Saat melihat database masalah yang diketahui, seperti Pangkalan Pengetahuan Microsoft, Anda dapat menggunakan nomor status untuk menentukan apakah masalah yang direkam mungkin sama dengan kesalahan yang Anda temui. Misalnya, jika artikel Pangkalan Pengetahuan membahas pesan kesalahan 1105 dengan status 2, dan pesan kesalahan 1105 yang Anda terima memiliki status 3, kesalahan Anda mungkin memiliki penyebab yang berbeda dari yang dilaporkan dalam artikel.

Teknisi dukungan SQL Server juga dapat menggunakan kode status dari kesalahan untuk menemukan lokasi dalam kode sumber tempat kesalahan tersebut dimunculkan, yang dapat memberikan ide tambahan tentang cara mendiagnosis masalah.

ERROR_STATE dapat dipanggil di mana saja dalam cakupan blok CATCH.

ERROR_STATE mengembalikan status kesalahan terlepas dari berapa kali dijalankan, atau di mana ia dijalankan dalam cakupan blok CATCH. Ini berbeda dengan fungsi seperti @@ERROR, yang hanya mengembalikan nomor kesalahan dalam pernyataan segera setelah yang menyebabkan kesalahan, atau dalam pernyataan pertama blok CATCH.

Dalam blok CATCH berlapis, ERROR_STATE mengembalikan status kesalahan khusus untuk cakupan blok CATCH tempat blok tersebut direferensikan. Misalnya, blok CATCH dari TRY luar... Konstruksi CATCH bisa memiliki TRY berlapis ... KONSTRUKSI CATCH. Dalam blok CATCH berlapis, ERROR_STATE mengembalikan status dari kesalahan yang memanggil blok CATCH berlapis. Jika ERROR_STATE dijalankan di blok CATCH luar, ia mengembalikan status dari kesalahan yang memanggil blok CATCH tersebut.

Contoh

J. Menggunakan ERROR_STATE dalam blok CATCH

Contoh berikut menunjukkan SELECT pernyataan yang menghasilkan kesalahan dibagi berdasarkan nol. Status kesalahan dikembalikan.

BEGIN TRY  
    -- Generate a divide by zero error  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT ERROR_STATE() AS ErrorState;  
END CATCH;  
GO  

B. Menggunakan ERROR_STATE dalam blok CATCH dengan alat penanganan kesalahan lainnya

Contoh berikut menunjukkan SELECT pernyataan yang menghasilkan kesalahan dibagi berdasarkan nol. Bersama dengan status kesalahan, informasi yang berkaitan dengan kesalahan dikembalikan.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT  
        ERROR_NUMBER() AS ErrorNumber,  
        ERROR_SEVERITY() AS ErrorSeverity,  
        ERROR_STATE() AS ErrorState,  
        ERROR_PROCEDURE() AS ErrorProcedure,  
        ERROR_LINE() AS ErrorLine,  
        ERROR_MESSAGE() AS ErrorMessage;  
END CATCH;  
GO  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Menggunakan ERROR_STATE dalam blok CATCH dengan alat penanganan kesalahan lainnya

Contoh berikut menunjukkan SELECT pernyataan yang menghasilkan kesalahan dibagi berdasarkan nol. Bersama dengan status kesalahan, informasi yang berkaitan dengan kesalahan dikembalikan.

BEGIN TRY  
    -- Generate a divide-by-zero error.  
    SELECT 1/0;  
END TRY  
BEGIN CATCH  
    SELECT  
        ERROR_NUMBER() AS ErrorNumber,  
        ERROR_SEVERITY() AS ErrorSeverity,  
        ERROR_STATE() AS ErrorState,  
        ERROR_PROCEDURE() AS ErrorProcedure,  
        ERROR_MESSAGE() AS ErrorMessage;  
END CATCH;  
GO  

Lihat Juga

sys.messages (Transact-SQL)
COBA... CATCH (Transact-SQL)
ERROR_LINE (T-SQL)
ERROR_MESSAGE (T-SQL)
ERROR_NUMBER (T-SQL)
ERROR_PROCEDURE (T-SQL)
ERROR_SEVERITY (T-SQL)
RAISERROR (Transact-SQL)
@@ERROR (T-SQL)
Referensi Kesalahan dan Peristiwa (Mesin Database)