Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL ServerAzure
SQL Managed InstanceAzure
Synapse AnalyticsAnalytics
Platform System (PDW)
SQL analytics endpoint in Microsoft FabricWarehouse
in Microsoft Fabric
Zwraca numer stanu błędu, który spowodował blok CATCH w TRY... Konstrukcja CATCH do uruchomienia.
Transact-SQL konwencje składni
Syntax
ERROR_STATE ( )
Typy zwracane
int
Wartość zwracana
Po wywołaniu bloku CATCH zwraca numer stanu komunikatu o błędzie, który spowodował uruchomienie bloku CATCH.
Zwraca NULL, jeśli wywoła się poza zakresem bloku CATCH.
Remarks
Niektóre komunikaty o błędach mogą pojawiać się w wielu miejscach kodu Microsoft SQL Server Database Engine. Na przykład błąd "1105" może być podniesiony dla kilku różnych warunków. Każdy konkretny warunek powodujący błąd przypisuje unikalny kod stanu.
Przeglądając bazy danych znanych problemów, takie jak Baza wiedzy Microsoft Knowledge Base, możesz użyć numeru stanu, aby sprawdzić, czy zarejestrowany problem może być taki sam jak błąd, na który natrafiłeś. Na przykład, jeśli artykuł w Knowledge Base omawia komunikat o błędzie 1105 o stanie 2, a otrzymany komunikat 1105 miał stan 3, Twój błąd prawdopodobnie miał inną przyczynę niż ta opisana w artykule.
Inżynier wsparcia SQL Server może również użyć kodu stanu z błędu, aby znaleźć miejsce w kodzie źródłowym, gdzie ten błąd jest zgłaszany, co może dostarczyć dodatkowych wskazówek dotyczących diagnozy problemu.
ERROR_STATE może być wywołany w dowolnym miejscu w zakresie bloku CATCH.
ERROR_STATE zwraca stan błędu niezależnie od liczby jego uruchomień lub tego, gdzie jest uruchamiany w zakresie bloku CATCH. Jest to w przeciwieństwie do funkcji takich jak @@ERROR, które zwracają numer błędu tylko w instrukcji bezpośrednio po tej, która powoduje błąd, lub w pierwszym poleceniu bloku CATCH.
W zagnieżdżonych blokach CATCH ERROR_STATE zwraca stan błędu specyficzny dla zakresu bloku CATCH, do którego się odwołuje. Na przykład blok CATCH zewnętrznego TRY... Konstrukcja CATCH mogłaby mieć zagnieżdżone TRY... Konstrukt CATCH. W zagnieżdżonym bloku CATCH ERROR_STATE zwraca stan z błędu, który wywołał zagnieżdżony blok CATCH. Jeśli ERROR_STATE jest wykonywany w zewnętrznym bloku CATCH, zwraca stan z błędu, który wywołał ten blok CATCH.
Examples
A. Wykorzystanie ERROR_STATE w bloku CATCH
W poniższym przykładzie pokazano instrukcję SELECT , która generuje błąd dzielenia przez zero. Zwracany jest stan błędu.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. Wykorzystanie ERROR_STATE w bloku CATCH z innymi narzędziami do obsługi błędów
W poniższym przykładzie pokazano instrukcję SELECT , która generuje błąd dzielenia przez zero. Wraz ze stanem błędu zwracane są informacje związane z tym błędem.
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
Przykłady: system platformy Azure Synapse Analytics i analizy (PDW)
C. Wykorzystanie ERROR_STATE w bloku CATCH z innymi narzędziami do obsługi błędów
W poniższym przykładzie pokazano instrukcję SELECT , która generuje błąd dzielenia przez zero. Wraz ze stanem błędu zwracane są informacje związane z tym błędem.
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
Treści powiązane
- Komunikaty (dla błędów) widoki katalogu - sys.messages
- TRY... CATCH (Transact-SQL)
- ERROR_LINE (Transact-SQL)
- ERROR_MESSAGE (Transact-SQL)
- ERROR_NUMBER (Transact-SQL)
- BŁĄD_PROCEDURY (Transact-SQL)
- ERROR_SEVERITY (Transact-SQL)
- RAISERROR (Transact-SQL)
- @@ERROR (Transact-SQL)
- Informacje o błędach i zdarzeniach (aparat bazy danych)