Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL ServerAzure
SQL Managed InstanceAzure
Synapse AnalyticsAnalytics
Platform System (PDW)
SQL analytics endpoint in Microsoft FabricWarehouse
in Microsoft Fabric
Devolve o número de estado do erro que causou o bloco CATCH de um TRY... Construção CATCH a ser executada.
Transact-SQL convenções de sintaxe
Syntax
ERROR_STATE ( )
Tipos de devolução
int
Valor de retorno
Quando chamado num bloco CATCH, devolve o número de estado da mensagem de erro que causou a execução do bloco CATCH.
Devolve NULL se for chamado fora do âmbito de um bloco CATCH.
Observações
Algumas mensagens de erro podem ser geradas em vários pontos do código do Microsoft SQL Server Database Engine. Por exemplo, um erro "1105" pode ser criado para várias condições diferentes. Cada condição específica que gera o erro atribui um código de estado único.
Ao consultar bases de dados de problemas conhecidos, como a Base de Dados de Conhecimento Microsoft, pode usar o número de estado para determinar se o problema registado pode ser o mesmo que o erro que encontrou. Por exemplo, se um artigo da Knowledge Base discute uma mensagem de erro 1105 com um estado 2, e a mensagem de erro 1105 que recebeu tinha um estado 3, o seu erro provavelmente teve uma causa diferente da reportada no artigo.
Um engenheiro de suporte SQL Server pode também usar o código de estado de um erro para encontrar a localização no código-fonte onde esse erro está a ser gerado, o que pode fornecer ideias adicionais sobre como diagnosticar o problema.
ERROR_STATE pode ser chamada em qualquer lugar dentro do âmbito de um bloco CATCH.
ERROR_STATE devolve o estado de erro independentemente de quantas vezes é executado, ou onde é executado dentro do âmbito do bloco CATCH. Isto contrasta com funções como @@ERROR, que só devolve o número de erro na instrução imediatamente após a que causa o erro, ou na primeira instrução de um bloco CATCH.
Nos blocos CATCH aninhados, ERROR_STATE devolve o estado de erro específico do âmbito do bloco CATCH em que está referenciado. Por exemplo, o bloco CATCH de um TRY exterior... A construção CATCH poderia ter um TRY aninhado... Construção CATCH. Dentro do bloco CATCH aninhado, ERROR_STATE devolve o estado do erro que invocou o bloco CATCH aninhado. Se ERROR_STATE for executado no bloco CATCH externo, devolve o estado do erro que invocou esse bloco CATCH.
Examples
A. Usar ERROR_STATE num bloco CATCH
O exemplo a seguir mostra uma SELECT instrução que gera um erro de divisão por zero. O estado do erro é devolvido.
BEGIN TRY
-- Generate a divide by zero error
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_STATE() AS ErrorState;
END CATCH;
GO
B. Usar ERROR_STATE num bloco CATCH com outras ferramentas de gestão de erros
O exemplo a seguir mostra uma SELECT instrução que gera um erro de divisão por zero. Juntamente com o estado do erro, a informação relacionada com o erro é devolvida.
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
Exemplos: Azure Synapse Analytics e Analytics Platform System (PDW)
C. Usar ERROR_STATE num bloco CATCH com outras ferramentas de gestão de erros
O exemplo a seguir mostra uma SELECT instrução que gera um erro de divisão por zero. Juntamente com o estado do erro, a informação relacionada com o erro é devolvida.
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
Conteúdo relacionado
- Mensagens (para erros) visualizações de catálogo - sys.messages
- TENTE... CAPTURAR (Transact-SQL)
- LINHA_ERRO (Transact-SQL)
- MENSAGEM_DE_ERRO (Transact-SQL)
- ERROR_NUMBER (Transact-SQL)
- PROCEDIMENTO_ERRO (Transact-SQL)
- ERROR_SEVERITY (Transact-SQL)
- RAISERROR (Transact-SQL)
- @@ERROR (Transact-SQL)
- Referência de erros e eventos (Mecanismo de Banco de Dados)