Sintomas
Suponha que você tenha pelo menos um grupo de disponibilidade AlwaysOn com DTC_SUPPORT = PER_DB no Microsoft SQL Server 2016 ou 2017. Se você executar um gatilho do SQL Server que contém uma transação de banco de dados cruzada envolvendo pelo menos um dos bancos de dados de grupo de disponibilidade, pode ocorrer uma falha de asserção. O log de erros do SQL Server relata as seguintes mensagens de falha de declaração:
DateTime spid20s * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *DateTime spid20s * iniciar despejo de pilha:DateTime Spid20s * local: nome do arquivo: 3880DateTime spid20s * expressão: m_State = = BaseXact:: XACT_PREPARED | | m_state = = BaseXact:: XACT_COMMITTEDDateTime SPID20S * SPID: 20
DateTime spid20s erro: 17066, severidade: 16, estado: 1.DateTime Spid20s ASSERÇÃO do SQL Server: arquivo: <filename>, line =LineNumber falhou Assertion = ' m_state = = BaseXact:: XACT_PREPARED | | m_state = = BaseXact:: XACT_COMMITTED '. Este erro pode estar relacionado ao tempo. Se o erro persistir após a reexecução da instrução, use DBCC CHECKDB para verificar a integridade estrutural do banco de dados ou reinicie o servidor para garantir que as estruturas de dados na memória não sejam corrompidas.DateTime spid20s erro: 3624, severidade: 20, estado: 1.DateTime spid20s uma verificação de asserção do sistema falhou. Verifique o log de erros do SQL Server para obter detalhes. Geralmente, uma falha de asserção é causada por um bug de software ou corrupção de dados. Para verificar se há corrupção do 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 à Microsoft. Uma atualização pode estar disponível na Microsoft no Service Pack mais recente ou em um hotfix do suporte técnico.
Além disso, a seguinte mensagem de erro semelhante à seguinte pode ser exibida:
DateTime Erro de servidor DateTime: 19407, severidade: 16, estado: 1.
DateTime Servidor de DateTime a concessão entre o grupo de disponibilidade ' GroupName ' e o cluster de failover do Windows Server expirou. Ocorreu um problema de conectividade entre a instância do SQL Server e do cluster de failover do Windows Server. Para determinar se o grupo de disponibilidade está falhando corretamente, verifique o recurso de grupo de disponibilidade correspondente no cluster de failover do Windows Server.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Resolução
Informações de atualização cumulativa:
Esse problema foi corrigido nas seguintes atualizações cumulativas do SQL Server:
Sobre atualizações cumulativas do SQL Server:Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Informações sobre o hotfix sob demanda:
Esse problema foi corrigido nos seguintes hotfixes sob demanda para SQL Server:
Referências
Saiba mais sobre oterminologia usada pela Microsoft para descrever atualizações de software.