有一张有60列和200行的表。将BIT列从更改NULL为NOT NULL,现在具有3小时以上的运行执行时间。为什么要花这么长时间?
BIT
NULL
NOT NULL
这是我正在执行的查询:
ALTER TABLE tbl ALTER COLUMN col BIT NOT NULL
除了创建新列,使用旧列中的值对其进行更新,然后删除旧列并重命名新列之外,还有没有更快的方法呢?
这是在MS SQL Server 2005上。
ALTER是否被其他语句持有的元数据共享锁阻止?任何ALTER都需要元数据互斥锁,因此将被使用该表的任何其他语句阻塞。
检查“活动监视器”,或查看sys.dm_exec_requests,看看谁在阻止您的ALTER INDEX。