SQL Server 2012需要很长时间才能在简单的alter上添加NULL列

我在SQL Server 2012中更改表有一个问题,需要很长时间才能将04列允许为大型表,其中包含340列和大约166M行以及01非聚集索引

恢复后,此问题仅发生在特定的表中.
我正在等待执行10个小时,但还没有完成,所以我必须取消它以进行更多调查.这很奇怪,因为脚本非常简单,如下所示,我们之前成功完成了:

alter table sample_database.sample_schema.sample_table
add column_001 int null
   ,column_002 numeric(18,4) null
   ,column_003 nvarchar(500) null
   ,column_004 int null;

我的问题是:

>为什么会奇怪地发生?
>如何解决这个问题,因为它与我们的部署包有关?我们已经完成了使用新列和加载数据创建新表的解决方法.但它对我们不起作用.
>将来如何防止这个问题?

非常感谢大家,

最佳答案 如果是2012年(根据标签),可能会发生这种情况:

http://rusanu.com/2012/02/16/adding-a-nullable-column-can-update-the-entire-table/

If adding a nullable column in SQL Server 2012 has the potential of
increasing the row size over the 8060 size then the ALTER performs an
offline size-of-data update to every row of the table to ensure it
fits in the page. This behavior is new in SQL Server 2012.

点赞