Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL ServerAzure
SQL Managed InstanceAzure
Synapse AnalyticsAnalytics
Platform System (PDW)
SQL analytics endpoint in Microsoft FabricWarehouse
in Microsoft Fabric
Vrátí číslo stavu chyby, která způsobila blok CATCH v TRY... Spuštěn konstrukt CATCH.
Syntax
ERROR_STATE ( )
Návratové typy
int
Návratová hodnota
Při volání v bloku CATCH vrátí číslo stavu chybové zprávy, která způsobila spuštění bloku CATCH.
Vrací NULL, pokud je vyvolán mimo rozsah bloku CATCH.
Remarks
Některé chybové zprávy lze zobrazit na více místech v kódu Microsoft SQL Server Database Engine. Například chyba "1105" může být zvýšena pro několik různých podmínek. Každá konkrétní podmínka, která chybu vyvolá, přiřadí jedinečný stavový kód.
Při prohlížení databází známých problémů, jako je znalostní báze Microsoft Knowledge Base, můžete použít číslo stavu k určení, zda zaznamenaný problém může být stejný jako chyba, na kterou jste narazili. Například pokud článek ve Znalostní bázi diskutuje chybovou zprávu 1105 se stavem 2 a chybová zpráva 1105, kterou jste obdrželi, měla stav 3, vaše chyba pravděpodobně měla jinou příčinu než ta, která je uvedena v článku.
Inženýr podpory SQL Server může také použít stavový kód chyby k nalezení místa ve zdrojovém kódu, kde je chyba vyvolána, což může poskytnout další nápady, jak problém diagnostikovat.
ERROR_STATE může být volán kdekoli v rámci CATCH bloku.
ERROR_STATE vrací chybový stav bez ohledu na to, kolikrát je spuštěn, nebo kde je spuštěn v rozsahu bloku CATCH. To je na rozdíl od funkcí jako @@ERROR, která vrací chybové číslo pouze v příkazu bezprostředně po tom, které chybu způsobuje, nebo v prvním příkazu bloku CATCH.
V vnořených blocích CATCH ERROR_STATE vrací chybový stav specifický pro rozsah bloku CATCH, na který je odkazován. Například blok CATCH vnější TRY... CATCH konstrukce by mohla mít vnořený TRY... CATCH konstrukce. V rámci vnořeného bloku CATCH ERROR_STATE vrací stav z chyby, která vyvolala vnořený blok CATCH. Pokud je ERROR_STATE vykonána ve vnějším bloku CATCH, vrátí stav z chyby, která tento blok CATCH vyvolala.
Examples
A. Použití ERROR_STATE v bloku CATCH
Následující příklad ukazuje SELECT příkaz, který generuje chybu dělení nulou. Stav chyby se vrátí.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. Použití ERROR_STATE v bloku CATCH s dalšími nástroji pro zpracování chyb
Následující příklad ukazuje SELECT příkaz, který generuje chybu dělení nulou. Spolu se stavem chyby se vrací informace týkající se chyby.
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
Příklady: Azure Synapse Analytics a systém PDW (Analytics Platform System)
C. Použití ERROR_STATE v bloku CATCH s dalšími nástroji pro zpracování chyb
Následující příklad ukazuje SELECT příkaz, který generuje chybu dělení nulou. Spolu se stavem chyby se vrací informace týkající se chyby.
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
Související obsah
- Zobrazení katalogu zpráv (pro chyby) - sys.messages
- VYZKOUŠET... ZACHYTIT (Transact-SQL)
- ERROR_LINE (Transact-SQL)
- ERROR_MESSAGE (Transact-SQL)
- ERROR_NUMBER (Transact-SQL)
- ERROR_PROCEDURE (Transact-SQL)
- ERROR_SEVERITY (Transact-SQL)
- RAISERROR (Transact-SQL)
- @@ERROR (Transact-SQL)
- Referenční dokumentace k chybám a událostem (databázový stroj)