Share via


MSSQLSERVER_3624

Aplica-se a:SQL Server

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 3624
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico SYS_ASSERTFAIL
Texto da mensagem Uma verificação de asserção do sistema falhou. Verifique o log de erros do SQL Server para obter detalhes. Normalmente, uma falha de asserção é causada por um bug de software ou corrupção de dados. Para verificar se há corrupção no banco de dados, considere executar DBCC CHECKDB. Se você concordou em enviar despejos para a Microsoft durante a instalação, um mini despejo será enviado para a Microsoft. Uma atualização pode estar disponível da Microsoft no Service Pack mais recente ou em um Hotfix do Suporte Técnico.

Explicação

Asserções são declarações colocadas no código de um aplicativo para garantir que certas condições sejam satisfeitas. Nesse aspecto, uma asserção se comporta de forma semelhante a um erro. Você pode pensar em afirmações como erros enfáticos e firmes. A condição especificada deve ser atendida para que o programa continue a execução regular. Se a condição não for atendida, a afirmação é levantada. Para obter mais informações, consulte Asserções C/C++.

O SQL Server usa declarações em muitos lugares para garantir que as condições sejam verdadeiras. Por exemplo, a condição 'existingState == DB_Unencrypted' afirma que um estado de banco de dados não é criptografado antes que o próximo comando no código seja executado. Se não for esse o caso, a afirmação é levantada. O erro 3624 notifica que tal condição não foi atendida e uma declaração foi levantada.

O erro 3624 é gerado junto com MSSQLSERVER_17066. Aqui estão exemplos de como você pode ver esses erros no log de erros do SQL Server. Você também verá a condição de declaração gerada durante o tempo de execução e o erro é enviado do SQL Server para o aplicativo cliente.

Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"e:\\b\\s3\\sources\\sql\\ntdbms\\hekaton\\engine\\hadr\\physical\\ckptctrlprocesslogrecord.cpp">, line=1634 Failed Assertion = 'existingState == DB_Unencrypted'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
Error: 17066, Severity: 16, State: 1.
SQL Server Assertion: File: <"xdes.cpp">, line=4919 Failed Assertion = 'lck_sufficient (lckMode, LCK_M_IX) || lck_sufficient (lckMode, LCK_M_BU)'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.
SQL Server Assertion: File: <diskio.cpp>, line=2902 Failed Assertion = 'filepos + cBytes <= GetMaxOffsetForIO ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Error: 3624, Severity: 20, State: 1.
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Causa

Aqui estão algumas possíveis razões para que uma falha de declaração ocorra:

Bug do produto
Uma razão comum para falhas de afirmação são problemas no produto que levam a que as condições não sejam verdadeiras. Esses problemas precisam ser investigados pela Microsoft e, quando reproduzidos e compreendidos, podem ser corrigidos.

Corrupção de banco de dados Outra causa comum de falhas de declaração são as inconsistências físicas nos bancos de dados. Estruturas de dados danificadas, quando lidas na memória, podem fazer com que as condições esperadas sejam falsas e, assim, gerar uma afirmação.

Biblioteca externa ou driver de filtro Uma causa um tanto comum para mensagens de declaração foi causada por DLL externa dentro da memória do SQL Server ou um driver de filtro projetado para monitorar ou interceptar a atividade do SQL Server. Se esse componente externo modificar objetos ou estruturas que o SQL Server usa, poderão ocorrer falhas de declaração. Para obter mais informações, consulte Problemas de desempenho e consistência quando determinados módulos ou drivers de filtro são carregados.

Problema de hardware (memória, CPU) O hardware defeituoso pode causar corrupção de estruturas de dados na memória e, portanto, levar a falhas de afirmação. Esse problema é menos comum, mas ocorre.

Ação do usuário

  1. Verifique sua compilação do SQL Server, consulte Determinar qual versão e edição do Mecanismo de Banco de Dados do SQL Server está em execução

  2. Encontre as atualizações mais recentes disponíveis para sua versão do SQL Server ou melhor abra o arquivo do Excel que lista todas as correções para todas as compilações

  3. Analise os artigos ou o arquivo do Excel para obter quaisquer correções de declaração lançadas após a compilação atual do SQL Server. Se você encontrar uma compilação posterior que corrija problemas de declaração, considere atualizar para essa compilação.

  4. Em alguns casos, você pode procurar a condição de declaração específica na parte Asserção com falha do erro 17066. Por exemplo, na mensagem acima, procure lck_sufficient (lckMode, LCK_M_IX)por . Essa expressão ajudará você com uma pesquisa mais precisa para um problema de correspondência. Essa expressão é a condição que desencadeia a asserção em primeiro lugar e é bastante específica.

  5. Execute DBCC CHECKDB em seus bancos de dados. Se o DBCC CHECKDB relatar erros de corrupção de banco de dados, concentre-se em resolver esse problema antes de qualquer outra coisa. Restaure um backup de banco de dados limpo e investigue a causa raiz das inconsistências do banco de dados. Para obter mais informações, consulte Solucionar erros de consistência de banco de dados relatados pelo DBCC CHECKDB. Lembre-se de que o DBCC CHECKDB não verifica se há corrupção no log de transações e, se o log de transações estiver danificado, isso não poderá ser detectado.

  6. Verifique se há módulos externos carregados no espaço de memória do SQL Server e também verifique se há drivers de filtro

    SELECT * FROM sys.dm_os_loaded_modules
    WHERE company != 'Microsoft Corporation'
    

    Para drivers de filtro, execute o seguinte comando no prompt de comando

    fltmc filters
    

    Siga as recomendações em Problemas de desempenho e consistência quando determinados módulos ou drivers de filtro são carregados.

  7. Se você já atualizou seu SQL Server para a Atualização Cumulativa mais recente e o DBCC CHECKDB não relata erros, entre em contato com o suporte técnico da Microsoft e esteja pronto para fornecer as seguintes informações:

    • Logs de erro do SQL Server da pasta \Log
    • Despejos de memória do SQL Server (SQLDump00xx.mdmp) gerados na pasta \Log
    • Etapas para reproduzir a declaração quando disponível. Que pergunta ou ação leva à afirmação a ser levantada?
    • Saída de fltmc filters e para o Detran sys.dm_os_loaded_modules
    • Informações sobre o seu sistema - saída de systeminfo