Execution time of ALTER COLUMN

老子叫甜甜 提交于 2019-12-23 17:54:33

问题


Having a table with 60 columns, and 200 rows. Altering a BIT column from NULL to NOT NULL, now has a running execution time of over 3 hours. Why is this taking so long?

This is the query that I'm execution:

ALTER TABLE tbl
ALTER COLUMN col BIT NOT NULL

Is there a faster way to do it, besides creating a new column, updating it with values from the old column, then dropping the old column and renaming the new one?

This is on MS SQL Server 2005.


回答1:


IS the ALTER blocked by metadata shared locks held by other statements? Any ALTER requires a metadata exclusive lock, and as such will be block by any other statement that uses the table.

Check Activity Monitor, or look into sys.dm_exec_requests and see who's blocking your ALTER INDEX.




回答2:


Is it still running after 3 hours (while you post the question), or completes after 3 hours?

If it's still running run DBCC OPENTRAN: you've probably an open transaction somewhere that has left a schema lock on the table

Or SELECT * FROM sys.sysprocesses WHERE blocked <> 0 gives you what has been blocked



来源:https://stackoverflow.com/questions/2465455/execution-time-of-alter-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!