首页 > 解决方案 > SQL Server 中 ALTER COLUMN 语句的幕后操作

问题描述

我正在使用以下查询更改具有大约 1 亿条记录的表的列数据类型:

ALTER TABLE dbo.TARGETTABLE
ALTER COLUMN XXX_DATE DATE

当我从有效数据源插入原始日期时,列值的日期格式正确。

但是,查询已经运行了很长时间,即使我尝试取消查询,它似乎也需要很长时间。

谁能解释执行 ALTER TABLE STATEMENT 时 SQL Server 幕后发生的事情以及为什么需要这些资源?

标签: sql-serverdatabasedatabase-schemaddlalter-column

解决方案


执行此操作的另一种方法如下:

  1. 向表中添加新列 - [_date] 日期
  2. 使用批量更新,您可以将值从旧列传输到新列,而不会阻止其他用户的表。

然后在一个事务中执行以下操作:

  1. 更新完成后插入的所有新值
  2. 删除旧列
  3. 重命名新列

请注意,如果您在此字段上有索引,则需要在删除旧列之前删除它,并在重命名新列之后创建 if。


推荐阅读