当使用ALTER语句更改数据类型时,会出现长时间等待的情况。解决此问题的方法是使用以下脚本:
--创建临时表
select [column 1], [column 2]..., cast(null as [new data type]) AS [new column name] INTO TempTable from OriginalTable;
--删除原表
DROP TABLE OriginalTable;
--重命名临时表
EXEC sp_rename 'TempTable', 'OriginalTable';
--在新表中插入旧表中的数据
INSERT INTO OriginalTable([column 1], [column 2], [new column name]) SELECT [column 1], [column 2], [old column name] FROM TempTable;
--删除临时表
DROP TABLE TempTable;
将[column 1],[column 2]替换为您的列名,将[new data type]替换为您要更改的数据类型,将[new column name]替换为一个描述性的列名。这个脚本将创建新的临时表,将旧表数据存储在新表中,并在完成数据更新后删除旧表。