SQL转换列超时

我需要一个查询,将一个列从nvarchar(max)改为32.真正的问题是这个表有800,000行。而我的alter table myTable alter column mycolumn语句超时了。有什么建议或提示吗?     
已邀请:
也许添加一个新列,然后选择新列中的数据,然后删除旧列并使用原始名称重命名新列将有所帮助。 另一种更简单的方法是根据需要创建一个具有规范的新表,然后选择.. into。完成此操作后,可以删除旧表。     
如果在SSMS中运行SQL脚本,则它没有设置超时。你只能使用c#等获得超时,这是默认的30秒CommandTimeout。 我建议将超时更改为3600,或者在SSMS中运行。 另一件需要考虑的事情是:将记录此更改,以便可以回滚。确保将日志文件预先调整为可观的大小,以便每次都不必增长10%(当您使用当前日志空间进行更改时)。 或者将其与codymanix的答案结合起来     
我能想到的两件事要尝试: 首先做一个
UPDATE
将数据截断为32个字符;这可能有助于
ALTER
更快地运行,因为它本身不必进行任何截断。如果需要,可以对ѭ0进行批量处理 要么 使用临时名称创建一个新的
nvarchar(32)
列 从
nvarchar(max)
列填充它
DROP
nvarchar(max)
栏 将
(32)
列重命名为
(max)
列的原始名称     
看到这个。 您还可以指定超时计数器或通过GUI禁用它。     
执行该语句时,请打开另一个SSMS副本,然后运行该语句
sp_who2
除其他外,这将向您展示一个名为“BlkBy”的列。这是一个可能阻止查询完成的进程的SPID。您可能在系统中的其他位置有一个打开的事务。如果你知道那个过程是什么,并且你知道它不会炸毁你的宇宙,那就杀了它。     

要回复问题请先登录注册