Compreendendo os erros do Mecanismo de Banco de Dados

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Os erros acionados pelo Mecanismo de Banco de Dados do Microsoft SQL Server têm os atributos descritos na tabela a seguir.

Atributo Descrição
Número do erro Cada mensagem de erro tem um número de erro exclusivo.
Error message string A mensagem de erro contém informações de diagnóstico sobre a causa do erro. Muitas mensagens de erro têm variáveis de substituição nas quais são inseridas informações, como o nome do objeto que gera o erro.
Severity A severidade indica a gravidade do erro. Erros com uma severidade baixa , como 1 ou 2, são mensagens de informações ou advertências de nível baixo. Erros com uma severidade alta indicam problemas que devem ser tratados o mais rápido possível. Para obter mais informações sobre severidades, consulte Severidade de erro do mecanismo de banco de dados.
Estado Algumas mensagens de erro podem ser geradas em vários pontos no código para o mecanismo de banco de dados. Por exemplo, um erro 1105 pode ser gerado para várias condições diferentes. Cada condição específica que gera um erro atribui um código de estado exclusivo.

Quando você estiver exibindo bancos de dados que contêm informações sobre assuntos conhecidos, como Base de Dados de Conhecimento da Microsoft, você pode usar o número do estado para determinar se o assunto registrado é igual ao erro que você encontrou. Por exemplo, se um Artigo da Base de Dados de Conhecimento descreve um erro 1105 com um estado 2 e a mensagem de erro 1105 que você recebeu tinha um estado 3, o erro provavelmente tem uma causa diferente daquela informada no artigo.

Um engenheiro de suporte da Microsoft também pode usar o código de estado de um erro para encontrar o local no código de origem onde está sendo gerado aquele código de erro. Essas informações podem fornecer ideias adicionais sobre como diagnosticar o problema.
Nome do procedimento É o nome do procedimento armazenado ou disparador no qual ocorreu o erro.
Line number Indica qual instrução em um lote, procedimento armazenado, disparador ou função gerou o erro.

Todas as mensagens de erro do sistema e definidas pelo usuário em uma instância do Mecanismo de Banco de Dados estão na exibição de catálogo sys.messages. Você pode usar a instrução RAISERROR para retornar erros definidos pelo usuário a um aplicativo.

Todas as APIs de banco de dados, como o namespace SQLClient do Microsoft .NET Framework, ADO (ActiveX Data Objects), o OLE DB e o ODBC, relatam os atributos de erro básicos. Essa informação inclui o número de erro e cadeia de caracteres de mensagem. Porém, nem todos os APIs informam todos os outros atributos de erro.

Informações sobre um erro que acontece no escopo do bloco TRY de um constructo TRY…CATCH podem ser obtidas em código Transact-SQL usando-se funções como ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY e ERROR_STATE no escopo do bloco CATCH associado. Para obter mais informações, confira TRY...CATCH (Transact-SQL).

Exemplos

O exemplo a seguir consulta a exibição de catálogo sys.messages para retornar uma lista de todas as mensagens de erro do sistema e definidas pelo usuário no Mecanismo de Banco de Dados que tenham texto em inglês (1033).

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

Para obter mais informações, confira sys.messages (Transact-SQL).

Consulte Também

sys.messages (Transact-SQL)
RAISERROR (Transact-SQL)
@@ERROR (Transact-SQL)
TRY...CATCH (Transact-SQL)
ERROR_LINE (Transact-SQL)
ERROR_MESSAGE (Transact-SQL)
ERROR_NUMBER (Transact-SQL)
ERROR_PROCEDURE (Transact-SQL)
ERROR_SEVERITY (Transact-SQL)
ERROR_STATE (Transact-SQL)