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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top