Partilhar via


Severidades de erro do mecanismo de banco de dados

Aplica-se a:SQL Server

Quando um erro é gerado pelo Mecanismo de Banco de Dados do SQL Server, a gravidade do erro indica o tipo de problema encontrado pelo SQL Server.

Níveis de gravidade

A tabela a seguir lista e descreve os níveis de gravidade dos erros gerados pelo Mecanismo de Banco de Dados do SQL Server.

Nível de severidade Description
0-9 Indique mensagens informativas que retornem informações de status ou relatem erros que não sejam graves. O Mecanismo de Banco de Dados não gera erros do sistema com gravidades de 0 a 9.
10 Indica mensagens informativas que retornam informações de status ou relatam erros que não são graves. Por motivos de compatibilidade, o Mecanismo de Banco de Dados converte a gravidade 10 em gravidade 0 antes de retornar as informações de erro para o aplicativo chamador.
11-16 Indicar erros que podem ser corrigidos pelo utilizador.
11 Indica que determinado objeto ou entidade não existe.
12 Uma severidade especial para consultas que não usam bloqueio devido a dicas de consulta especiais. Em alguns casos, as operações de leitura realizadas por essas instruções podem resultar em dados inconsistentes porque os bloqueios não são usados para garantir a consistência.
13 Indica erros de bloqueio de transação.
14 Indica erros relacionados à segurança, como permissão negada.
15 Indica erros de sintaxe no comando Transact-SQL.
16 Indica erros gerais que podem ser corrigidos pelo usuário.
17-19 Indique erros de software que não podem ser corrigidos pelo usuário. Informe o administrador do sistema sobre o problema.
17 Indica que a instrução fez com que o SQL Server ficasse sem recursos (como memória, bloqueios ou espaço em disco para o banco de dados) ou excedesse algum limite definido pelo administrador do sistema.
18 Indica um problema no software Mecanismo de Banco de Dados, mas a instrução é concluída e a conexão com a instância do Mecanismo de Banco de Dados é mantida. O administrador do sistema deve ser informado sempre que ocorrer uma mensagem com um nível de gravidade de 18.
19 Indica que um limite não configurável do Mecanismo de Banco de Dados foi excedido e que o processo em lote atual foi encerrado. Mensagens de erro com um nível de gravidade de 19 ou superior interrompem a execução do lote atual. Os erros de nível de gravidade 19 são raros e devem ser corrigidos pelo administrador do sistema ou pelo seu provedor de suporte principal. Entre em contato com o administrador do sistema quando uma mensagem com um nível de gravidade 19 for gerada. As mensagens de erro com um nível de gravidade de 19 a 25 são gravadas no log de erros.
20-24 Indique problemas do sistema e erros fatais, o que significa que a tarefa do Mecanismo de Banco de Dados que está executando uma instrução ou lote não está mais em execução. A tarefa registra informações sobre o que ocorreu e, em seguida, é encerrada. Na maioria dos casos, a conexão do aplicativo com a instância do Mecanismo de Banco de Dados também pode ser encerrada. Se isso acontecer, dependendo do problema, o aplicativo pode não ser capaz de se reconectar.

As mensagens de erro nesse intervalo podem afetar todos os processos que acessam dados no banco de dados e podem indicar que um banco de dados ou objeto está danificado. As mensagens de erro com um nível de gravidade de 19 a 24 são gravadas no log de erros.
20 Indica que uma instrução encontrou um problema. Como o problema afetou apenas a tarefa atual, não é provável que o banco de dados em si esteja danificado.
21 Indica que foi encontrado um problema que afeta todas as tarefas no banco de dados atual, mas não é provável que o próprio banco de dados esteja danificado.
22 Indica que a tabela ou índice especificado na mensagem foi danificado por um problema de software ou hardware.

Os erros de nível de gravidade 22 ocorrem raramente. Se ocorrer, execute DBCC CHECKDB para determinar se outros objetos no banco de dados também estão danificados. O problema pode estar apenas no cache do buffer e não no disco em si. Em caso afirmativo, reiniciar a instância do Mecanismo de Banco de Dados corrige o problema. Para continuar trabalhando, você deve se reconectar à instância do Mecanismo de Banco de Dados. Caso contrário, use DBCC para reparar o problema. Em alguns casos, talvez seja necessário restaurar o banco de dados.

Se reiniciar a instância do Mecanismo de Banco de Dados não corrigir o problema, o problema está no disco. Às vezes, destruir o objeto especificado na mensagem de erro resolve o problema. Por exemplo, se a mensagem informar que a instância do Mecanismo de Banco de Dados encontrou uma linha com um comprimento de 0 em um índice não clusterizado, exclua o índice e reconstrua-o.
23 Indica que a integridade de todo o banco de dados está em questão devido a um problema de hardware ou software.

Os erros de nível de gravidade 23 ocorrem raramente. Se ocorrer, corra DBCC CHECKDB para determinar a extensão do dano. O problema pode estar apenas no cache e não no disco em si. Em caso afirmativo, reiniciar a instância do Mecanismo de Banco de Dados corrige o problema. Para continuar trabalhando, você deve se reconectar à instância do Mecanismo de Banco de Dados. Caso contrário, use DBCC para reparar o problema. Em alguns casos, talvez seja necessário restaurar o banco de dados.
24 Indica uma falha de mídia. O administrador do sistema pode precisar restaurar o banco de dados. Também pode ser necessário ligar para o fornecedor do hardware.

Severidade da mensagem de erro definida pelo usuário

Você pode usar sp_addmessage para adicionar mensagens de erro definidas pelo usuário com gravidades de 1 a 25 para a sys.messages exibição de catálogo. Essas mensagens de erro definidas pelo usuário podem ser usadas pelo RAISERROR. Para obter mais informações, consulte sp_addmessage.

RAISERROR pode ser usado para gerar mensagens de erro definidas pelo usuário com gravidades de 1 a 25. RAISERROR pode fazer referência a uma mensagem de erro definida pelo usuário armazenada na exibição de sys.messages catálogo ou criar uma mensagem dinamicamente. Quando RAISERROR usa uma mensagem de erro definida pelo usuário em sys.messages quando gera um erro, a gravidade especificada por RAISERROR substitui a gravidade especificada em sys.messages. Para obter mais informações, consulte RAISERROR.

Severidade do erro e TRY... CAPTURAS

Uma TRY...CATCH construção captura todos os erros de execução com gravidade maior que 10 que não encerram a conexão do banco de dados.

Erros com gravidade de 0 a 10 são mensagens informativas e não fazem com que a execução salte do CATCH bloco de uma TRY...CATCH construção.

Os erros que encerram a conexão do banco de dados, geralmente com gravidade de 20 a 25, não são tratados pelo bloco porque a execução é abortada CATCH quando a conexão é encerrada.

Para obter mais informações, consulte TRY... CAPTURA.

Recuperar gravidade do erro

A ERROR_SEVERITY função do sistema pode ser usada para recuperar a gravidade do erro que causou a execução do CATCH bloco de uma TRY...CATCH construção. ERROR_SEVERITY retorna NULL se chamado fora do escopo de um CATCH bloco. Para obter mais informações, consulte ERROR_SEVERITY.