Udostępnij za pośrednictwem


ERROR_STATE (Transact-SQL)

Zwraca liczbę stan błędu, który spowodował blok CATCH konstrukcji TRY…CATCH ma być uruchomiony.

Topic link iconKonwencje składni języka Transact-SQL

ERROR_STATE ( )

Zwracane typy

int

Return Value

Po wywołaniu w blok CATCH zwraca liczbę stanu komunikat o błędzie, który spowodował blok CATCH do uruchomienia.

Zwraca wartość NULL, jeśli poza zakresem blok CATCH.

Remarks

Some error messages can be raised at multiple points in the code for the Microsoft SQL Server Database Engine.Na przykład błąd "1105" można podnieść w 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, znanych problemów, takich jak Microsoft Baza wiedza, można użyć numeru stanu do ustalenia, jeśli nagrany problemu może być taka sama, jak został napotkany błąd. Na przykład jeśli artykuł bazy wiedza omówiono komunikat o błędzie 1105 ze stanem 2 otrzymaną wiadomość błąd 1105 miał stan 3, błąd użytkownika prawdopodobnie było różne przyczyny niż ten, który zgłosił w artykule.

A SQL Server Pracownik pomocy technicznej, można użyć kodu stanu z błędem aby znaleźć lokalizację w kodzie źródłowym, którym tego błędu jest jest wywoływane, których może dostarczyć dodatkowe pomysły dotyczące zdiagnozować problem.

ERROR_STATE może być wywołana w dowolnym miejscu w zakresie blok CATCH.

ERROR_STATE zwraca stan błędu, niezależnie od tego, ile razy, to jest wykonywane, którym jest uruchomiony w zakresie połowy blok.Jest to w przeciwieństwie do funkcji, takich jak @@ błąd, który zwraca tylko numer błędu w instrukcja znajdującej się bezpośrednio po tej, która powoduje błąd, lub w pierwszej instrukcja blok CATCH.

W blokach CATCH zagnieżdżone, ERROR_STATE zwraca błąd stanu do zakres od połowy zablokować, w której istnieje odwołanie.Na przykład blok CATCH zewnętrzne konstrukcja TRY... CATCH może mieć zagnieżdżonych konstrukcja TRY... CATCH.W obrębie blok CATCH zagnieżdżone ERROR_STATE zwraca stan błędu, która wywołała zagnieżdżonych blok CATCH.Jeśli ERROR_STATE jest uruchamiana w zewnątrz blok CATCH, zwraca stan błędu, która wywołała tego blok CATCH.

Przykłady

A.Za pomocą ERROR_STATE w blok CATCH

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

USE AdventureWorks;
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 z innymi narzędziami obsługi błędów

W poniższym przykładzie SELECT instrukcja generuje błąd dzielenia przez zero. Informacje, które odnoszą się do błędu jest zwracana wraz z stan błędu.

USE AdventureWorks;
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