Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL ServerAzure
SQL Managed InstanceAzure
Synapse AnalyticsAnalytics
Platform System (PDW)
SQL analytics endpoint in Microsoft FabricWarehouse
in Microsoft Fabric
Returnerar tillståndsnumret för felet som orsakade CATCH-blocket i en TRY... CATCH-konstruktionen ska köras.
Transact-SQL syntaxkonventioner
Syntax
ERROR_STATE ( )
Returtyper
int
Returvärde
När den anropas i ett CATCH-block returneras tillståndsnumret för felmeddelandet som orsakade att CATCH-blocket kördes.
Returnerar NULL om det anropas utanför omfattningen av ett CATCH-block.
Remarks
Vissa felmeddelanden kan visas på flera punkter i koden för Microsoft SQL Server Database Engine. Till exempel kan ett "1105"-fel höjas för flera olika tillstånd. Varje specifikt villkor som ger fel tilldelar en unik tillståndskod.
När du tittar på databaser med kända problem, såsom Microsoft Knowledge Base, kan du använda tillståndsnumret för att avgöra om det registrerade problemet kan vara detsamma som det fel du stött på. Till exempel, om en artikel i Knowledge Base diskuterar ett 1105-felmeddelande med tillstånd 2, och felmeddelandet 1105 du fick hade tillstånd 3, hade ditt fel troligen en annan orsak än den som rapporterades i artikeln.
En SQL Server-supportingenjör kan också använda tillståndskoden från ett fel för att hitta platsen i källkoden där felet uppstår, vilket kan ge ytterligare idéer om hur problemet kan diagnostiseras.
ERROR_STATE kan anropas var som helst inom ramen för ett CATCH-block.
ERROR_STATE returnerar felstatusen oavsett hur många gånger den körs eller var den körs inom CATCH-blockets omfattning. Detta står i kontrast till funktioner som @@ERROR, som endast returnerar felnumret i satsen direkt efter den som orsakar felet, eller i den första satsen i ett CATCH-block.
I nästlade CATCH-block returnerar ERROR_STATE felstatusen som är specifik för omfattningen av CATCH-blocket där den refereras. Till exempel, CATCH-blocket på en yttre TRY... CATCH-konstruktionen skulle kunna ha en nästlad FÖRSÖK... CATCH-konstruktionen. Inom det nästlade CATCH-blocket returnerar ERROR_STATE tillståndet från felet som anropade det nästlade CATCH-blocket. Om ERROR_STATE körs i det yttre CATCH-blocket, returnerar det tillståndet från felet som anropade det CATCH-blocket.
Exempel
A. Att använda ERROR_STATE i ett CATCH-block
I följande exempel visas en SELECT instruktion som genererar ett divide-by-zero-fel. Felets tillstånd returneras.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. Att använda ERROR_STATE i ett CATCH-block tillsammans med andra felhanteringsverktyg
I följande exempel visas en SELECT instruktion som genererar ett divide-by-zero-fel. Tillsammans med feltillståndet returneras information som relaterar till felet.
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
Exempel: Azure Synapse Analytics och analysplattformssystem (PDW)
C. Att använda ERROR_STATE i ett CATCH-block tillsammans med andra felhanteringsverktyg
I följande exempel visas en SELECT instruktion som genererar ett divide-by-zero-fel. Tillsammans med feltillståndet returneras information som relaterar till felet.
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
Relaterat innehåll
- Meddelanden (för fel) katalogvyer - 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)
- Referens för fel och händelser (databasmotor)