Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-végpont a Microsoft Fabric
Warehouse-ban a Microsoft Fabric
Visszaadja annak a hibának az állapotszámát, amely a CATCH blokkot okozta egy TRY-n... CATCH konstrukció futásra kerül.
Transact-SQL szintaxis konvenciók
Syntax
ERROR_STATE ( )
Visszatérési típusok
int
Visszaadott érték
Ha CATCH blokkot hívnak, visszaadja annak a hibaüzenetnek az állapotszámát, amely a CATCH blokkot futtatta.
Null értéket ad vissza, ha a CATCH blokk hatókörén kívül hívják.
Remarks
Néhány hibaüzenet több ponton is felmerülhet a Microsoft SQL Server Database Engine kódjában. Például egy "1105" hiba több különböző feltétel esetén is előfordulhat. Minden konkrét feltétel, amely a hibát felkelt, egyedi állapotkódot rendel hozzá.
Amikor ismert problémák adatbázisait nézzük, például a Microsoft tudásbázis-t, az állapotszám alapján megállapíthatod, hogy a rögzített hiba ugyanaz lehet-e a hibával, amellyel találkoztál. Például, ha egy Knowledge Base cikk egy 1105-ös hibaüzenetről szól, amelynek állapota 2, és a 1105-ös hibaüzenet állapota 3, akkor a hibád valószínűleg más oka volt, mint amiről a cikkben jelentett.
Az SQL Server támogató mérnöke a hiba állapotkódját is felhasználhatja, hogy megtalálja a forráskódban azt a helyet, ahol a hiba felmerül, ami további ötleteket adhat a probléma diagnosztizálásához.
ERROR_STATE a CATCH blokk hatókörén belül bárhol meghívható.
ERROR_STATE visszaadja a hibaállapotot, függetlenül attól, hányszor futtatják, vagy hol fut a CATCH blokk hatókörén belül. Ez ellentétben áll az olyan függvényekkel, mint az @@ERROR, amely csak a hibaszámot adja vissza az állításban közvetlenül a hibát okozó utasítás után, vagy a CATCH blokk első utasításában.
A beágyazott CATCH blokkokban ERROR_STATE a CATCH blokk hatókörére jellemző hibaállapotot adja vissza, amelyben a hivatkozás van. Például egy külső TRY-n a CATCH blokk... A CATCH konstrukciónak lehet egy beágyazott TRY... CATCH konstrukció. A beépített CATCH blokkon belül ERROR_STATE visszaadja azt az állapotot, amely a beágyazott CATCH blokkot idézte elő hibából. Ha ERROR_STATE a külső CATCH blokkban fut, akkor visszaadja azt az állapotot, amely a CATCH blokkot idézte elő hiba alapján.
Examples
A. ERROR_STATE használata egy CATCH blokkban
Az alábbi példa egy olyan utasítást SELECT mutat be, amely osztva nullával hibát okoz. A hiba állapotát visszaadják.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. ERROR_STATE használata egy CATCH blokkban más hibakezelő eszközökkel
Az alábbi példa egy olyan utasítást SELECT mutat be, amely osztva nullával hibát okoz. A hibaállapot mellett visszaküldik a hibához kapcsolódó információkat is.
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éldák: Azure Synapse Analytics és elemzési platformrendszer (PDW)
C. ERROR_STATE használata egy CATCH blokkban más hibakezelő eszközökkel
Az alábbi példa egy olyan utasítást SELECT mutat be, amely osztva nullával hibát okoz. A hibaállapot mellett visszaküldik a hibához kapcsolódó információkat is.
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
Kapcsolódó tartalom
- Üzenetek (hibák esetén) katalógusnézetek - sys.messages
- TRY... CATCH (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)
- Hibák és események referenciája (adatbázismotor)