Sintomas
Quando você executa as operações DDL, como criar índice ou truncar tabela no SQL Server 2016, as operações poderão ser bloqueadas se houver outra transação DDL em execução no mesmo banco de dados.
Resolução
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa do SQL Server:
Recomendação: instalar a atualização cumulativa mais recente para o 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. Recomendamos que você baixe e instale as atualizações cumulativas mais recentes para o SQL Server:
Mais informações
Quando um DDL cria ou exclui uma tabela ou um índice, ele precisa inserir ou excluir a id do conjunto de linhas da tabela ou do índice de sysrowsets, para o qual ele precisa manter um bloqueio X de nível de linha na entrada. Quando isso é feito dentro de uma transação, o bloqueio X será mantido durante a transação.
Quando o Tuple Mover descobre buffers de exclusão liberáveis, ele precisa iterar em sysrowsets para descobrir tabelas ou índices existentes. Para ler cada linha de sysrowsets, ele precisa manter um bloqueio S de nível de linha na entrada que ele lê no momento. O processo de descoberta é interrompido quando o Motor de Tupla encontra o primeiro conjunto de linhas no qual ele pode trabalhar. Neste ponto, o Tuple Mover fará o trabalho real de liberar o buffer de exclusão, mas para garantir que o conjunto de linhas descoberto ainda seja válido, ele manterá um bloqueio SCH-S em todos os conjuntos de linhas avaliados durante o processo de descoberta até concluir seu trabalho.
Sysrowsets é ordenado pela id do conjunto de linhas, portanto, pode acontecer que o Tuple Mover tenha verificado vários conjuntos de linhas existentes nos quais ele não tem nenhuma ação a fazer, mas ainda manterá o bloqueio SCH-S e chega a uma entrada em sysrowsets para os quais não pode adquirir o bloqueio S no nível da linha, porque atualmente está sendo alterado por uma transação de execução longa que mantém um bloqueio X na linha. Neste ponto, os DDLs que envolvem a alteração de id do conjunto de linhas são bloqueados por trás dos bloqueios SCH-S do Tupla Mover.
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.