Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ALTER列的执行时间_Sql_Sql Server 2005_Alter Table - Fatal编程技术网

Sql ALTER列的执行时间

Sql ALTER列的执行时间,sql,sql-server-2005,alter-table,Sql,Sql Server 2005,Alter Table,具有60列和200行的表。将位列从空更改为非空,现在运行执行时间超过3小时。为什么要花这么长时间 这是我正在执行的查询: ALTER TABLE tbl ALTER COLUMN col BIT NOT NULL 除了创建一个新列、使用旧列中的值更新它、然后删除旧列并重命名新列之外,还有更快的方法吗 这是在MS SQL Server 2005上。ALTER是否被其他语句持有的元数据共享锁阻止?任何ALTER都需要元数据独占锁,因此将被使用该表的任何其他语句阻塞 检查或查看是谁阻止了您的ALTE

具有60列和200行的表。将
列从
更改为
非空
,现在运行执行时间超过3小时。为什么要花这么长时间

这是我正在执行的查询:

ALTER TABLE tbl
ALTER COLUMN col BIT NOT NULL
除了创建一个新列、使用旧列中的值更新它、然后删除旧列并重命名新列之外,还有更快的方法吗


这是在MS SQL Server 2005上。ALTER是否被其他语句持有的元数据共享锁阻止?任何ALTER都需要元数据独占锁,因此将被使用该表的任何其他语句阻塞


检查或查看是谁阻止了您的ALTER索引。

它在3小时后(当您发布问题时)仍在运行,还是在3小时后完成

如果它仍在运行rundbccopentran:您可能在某个地方有一个打开的事务,它在表上留下了一个模式锁


或者
从sys.sysprocesss中选择*,其中阻塞的0
为您提供已阻塞的内容

非常感谢。我不知道,并且认为SQL Server会在这种情况下抛出一个错误?如果设置锁超时,它将抛出一个锁超时错误。DBCC OPENTRAN会释放锁吗?@Tommy Jakobsen:不会。关闭连接/应用程序/查询窗口将很好地说明我为什么要运行DBCC OPENTRAN?