Udostępnij za pośrednictwem


ERROR_STATE (Transact-SQL)

Zwraca liczbę stanie błąd, który spowodował CATCH blok TRY…CATCH konstrukcja ma zostać uruchomione.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

ERROR_STATE ( )

Zwracane typy

int

Wartość zwracana

Po wywołaniu w blokCATCH zwraca numer Państwo komunikat o błędzie, powodującej CATCH blok do uruchomienia.

Zwraca wartość NULL, jeśli o nazwie poza zakres blokCATCH.

Uwagi

Komunikaty o błędach może zostać podniesiony w wielu punktach kod Microsoft SQL Server Aparat baz danych.Na przykład, "1105" błąd może zostać podniesiony do kilku różnych warunków.Każdy określony warunek, który wywołuje błąd przypisuje kod stanu unikatowego.

Podczas przeglądania bazy danych znane problemy, takie jak Microsoft bazy wiedzy Knowledge Base, można użyć numeru Państwo do ustalenia, jeśli nagrane problemu może być taka sama, jak mają wystąpił błąd.Na przykład jeśli wiedzy artykuł omówiono komunikat o błędzie 1105 z Państwem 2, a komunikat o błędzie 1105, który otrzymałeś miał stan 3, ten błąd prawdopodobnie miał inną przyczyną niż zgłoszone w artykuł.

A SQL Server inżynier pomocy technicznej można również użyć kod stanu błędu, aby znaleźć lokalizację w kodzie źródło , gdy błąd ten jest wniesionego, które mogą dostarczyć dodatkowe pomysły dotyczące zdiagnozować problem.

ERROR_STATE może być wywołana gdziekolwiek w obrębie zakres blokCATCH.

ERROR_STATE zwraca stan błędu niezależnie od tego, ile razy jest uruchamiany lub gdzie jest uruchomiona w ramach zakres blokCATCH.Jest to w przeciwieństwie do funkcji, takich jak @@ błąd, który zwraca numer błędu tylko w instrukcja bezpośrednio po jednej, która powoduje błąd lub w pierwszej instrukcja CATCH blok.

Zagnieżdżone bloki CATCH ERROR_STATE zwraca stan błędu określonego blok CATCH, w której jest odwołanie do zakres .Na przykład, połowu blok TRY zewnętrzne...Konstrukcja CATCH może mieć zagnieżdżony blok TRY...CATCH konstrukcji.Zagnieżdżone połowu blokERROR_STATE zwraca stan błędu, która wywołała CATCH zagnieżdżonego blok.Jeśli ERROR_STATE jest uruchamiana w zewnętrznej połowu blok, zwraca stan błędu, która wywołała blokCATCH.

Przykłady

A.Za pomocą ERROR_STATE w blokCATCH

W poniższym przykładzie SELECT instrukcja , która generuje błąd dzielenia przez zero.Zwracany jest stan błędu.

USE AdventureWorks2008R2;
GO

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

B.Za pomocą ERROR_STATE w blok CATCH inne narzędzia do obsługi błędów

W poniższym przykładzie SELECT instrukcja , która generuje błąd dzielenia przez zero.Wraz z stan błędu zwracane są informacje, który odnosi się do błędu.

USE AdventureWorks2008R2;
GO

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