小编Pap*_*nUK的帖子

为什么 ALTER COLUMN 为 NOT NULL 会导致大量日志文件增长?

我有一个包含 64m 行的表,在磁盘上占用了 4.3 GB 的数据。

每行大约有 30 个字节的整数列,加上一个NVARCHAR(255)用于文本的变量列。

我添加了一个带有 data-type 的 NULLABLE 列Datetimeoffset(0)

然后我为每一行更新了这一列,并确保所有新的插入都在这一列中放置了一个值。

一旦没有 NULL 条目,我就运行这个命令来使我的新字段成为强制性的:

ALTER TABLE tblCheckResult 
ALTER COLUMN [dtoDateTime] [datetimeoffset](0) NOT NULL
Run Code Online (Sandbox Code Playgroud)

结果是事务日志大小大幅增长——从 6GB 增加到超过 36GB,直到空间用完!

有没有人知道 SQL Server 2008 R2 到底在为这个简单的命令做些什么来导致如此巨大的增长?

null sql-server sql-server-2008-r2 alter-table transaction-log

58
推荐指数
3
解决办法
4万
查看次数