Tempo de execução da coluna de alteração
-
20-09-2019 - |
Pergunta
Tendo uma mesa com 60 colunas e 200 linhas. Alterar a BIT
coluna de NULL
para NOT NULL
, agora tem um tempo de execução em execução acima de 3 horas. Por que isso está demorando tanto?
Esta é a consulta que sou executada:
ALTER TABLE tbl
ALTER COLUMN col BIT NOT NULL
Existe uma maneira mais rápida de fazê -lo, além de criar uma nova coluna, atualizando -a com valores da coluna antiga e depois soltando a coluna antiga e renomeando a nova?
Isso está no MS SQL Server 2005.
Solução
O altero é bloqueado por metadados compartilhados bloqueios mantidos por outras declarações? Qualquer alter requer um bloqueio exclusivo de metadados e, como tal, será bloqueado por qualquer outra declaração que use a tabela.
Verificar Monitor de atividade, ou olhar para sys.dm_exec_requests E veja quem está bloqueando seu índice de alter.
Outras dicas
Ainda está funcionando após 3 horas (enquanto você publica a pergunta) ou conclui após 3 horas?
Se ainda está executando o dbcc opentran: você provavelmente é uma transação aberta em algum lugar que deixou uma trava de esquema na mesa
Ou SELECT * FROM sys.sysprocesses WHERE blocked <> 0
dá a você o que foi bloqueado