Sintomas
Suponha que você use a replicação de mesclagem no Microsoft SQL Server 2012 ou no Microsoft SQL Server 2014. Como parte do processo de sincronização, o agente de mesclagem faz nova geração em uma sessão. Se por algum motivo, como um deadlock ou tempo limite, a geração que faz a transação for selecionada como vítima de deadlock, e a transação for revertida, talvez haja uma grande cadeia de bloqueios para o bloqueio do aplicativo do MSinternal_makegeneration_inprog nas tomadas de geração futuras, e a sessão mencionada anteriormente será exibida como o bloqueador de cabeçotes.
Causa
O bloqueio de aplicativo que é usado para ajudar a proteger um processo de geração de geração é um bloqueio de aplicativo em nível de sessão. Quando um deadlock é detectado durante o processo de criação de geração, somente a transação é revertida, mas a sessão não é desconectada. Para liberar um bloqueio de aplicativo em nível de sessão, a sessão deve fazer logoff. Portanto, devido ao design da lógica de repetição (a sessão não será desconectada durante a geração que faz uma falha na replicação de mesclagem), se a primeira geração falhar com o deadlock, o bloqueio de sessão (MSinternal_makegeneration_inprog) obtida não será liberado durante a reversão da transação. Isso faz com que o bloqueio da cadeia de solicitações de bloqueio seja o processo de criação de geração em breve. O bloqueador de cabeçotes é exibido para ser a primeira geração que faz a solicitação, o que falha com o deadlock. Antes do hotfix, o SQL Server apenas limpa o bloqueio para um processo de geração bem-sucedido. Ele deixa um bloqueio de aplicativo órfão de sessão antes do logoff da sessão, se ocorrer um deadlock.
Resolução
Este problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Atualização cumulativa 5 para SQL Server 2014 /en-us/help/3011055
Atualização cumulativa 3 para SQL Server 2012 SP2 /en-us/help/3002049
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:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".