Compreendendo os erros do Mecanismo de Banco de Dados

Os atributos dos erros gerados pelo Microsoft Mecanismo de banco de dados do SQL Server são descritos na tabela abaixo.

Atributo

Descrição

Error number

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 dos erros do Mecanismo de Banco de Dados.

State

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 A Base de Dados de Conhecimento do 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 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 idéias adicionais sobre como diagnosticar o problema.

Procedure name

É 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.

Todos os APIs de banco de dados, como o Microsoft .NET FrameworkSQLClient namespace, ActiveX Data Objects (ADO), OLE DB e Open Database Connectivity (ODBC), informam os atributos básicos de erro. 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. Para obter mais informações, consulte Tratando erros e mensagens em aplicativos.

Informações sobre um erro que acontece no escopo do bloco TRY de uma construção 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, consulte Recuperando informações de erro em Transact-SQL e Usando TRY...CATCH na Transact-SQL.

Exemplos

O exemplo a seguir examina 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, consulte sys.messages (Transact-SQL).