SQL Server 2005:2.4 亿行表。列要求从 NOT NULL 更改为 NULL。
在处理这么大的表时使用 ALTER 语句通常是不好的做法(而且通常是不可能的),但是,如果可能的话,尽量避免重建表。
针对包含 20m 行的开发表测试 ALTER 语句,该语句在 <1 秒内成功执行。
问题:这似乎应该对巨大的生产表起作用......但是那里的任何人都可以根据经验(除了明显的)指出风险或影响吗?
非常感谢。
SQL Server 2005:2.4 亿行表。列要求从 NOT NULL 更改为 NULL。
在处理这么大的表时使用 ALTER 语句通常是不好的做法(而且通常是不可能的),但是,如果可能的话,尽量避免重建表。
针对包含 20m 行的开发表测试 ALTER 语句,该语句在 <1 秒内成功执行。
问题:这似乎应该对巨大的生产表起作用......但是那里的任何人都可以根据经验(除了明显的)指出风险或影响吗?
非常感谢。
从 NOT NULL 更改为 NULL 很好,因为不需要检查/更改现有数据。然而,另一个方向需要检查所有现有数据;所以这可能是有问题的。
我建议您注意现有查询(在列仍为 NOT NULL 时写入)现在不会因为 NULL 值的可能性而被“破坏”的可能性。问题是确认逻辑在所有情况下仍然合理可能很棘手,因为您不太可能收到任何明显的错误。
注意聚合函数。
我自己在大桌子上做这件事从来没有遇到过问题。
例如,如果您要更改数据类型或缩短列的大小,那将涉及更多工作。但是对于从 NOT NULL 到 NULL 的更改,它不应该是一项繁重的任务。
但是,作为一种标准方法,我会在安静的时期安排更新。
从 NOT NULL 到 NULL 应该不是问题。我以前做过这个并且没有遇到任何问题。
我唯一能想到的可能是一个问题是获得整个表的锁。