我正在研究一个大约 6Gb 的数据库。我需要将所有非 unicode 列转换为 unicode,例如将所有 varchar 更改为 nvarchar。
我已经使用 ALTER 语句编写了这个脚本,ALTER TABLE mytable ALTER COLUMN mycolumn nvarchar(...)
但我发现数据库大小在之后大幅增加。.mdf 文件增长到超过 70Gb,这让我感到惊讶。我知道 unicode 占用的空间是 varchar 的 x2 倍,但即使数据库全是 varchar 并且已转换,我希望它的最大大小为 12Gb。
我试图缩小数据库和文件以查看它是否是未分配的空间,但这几乎没有效果,并sp_spaceused
表明没有过多的未分配空间。
有谁知道为什么数据库会变得如此之大?我很想知道是什么原因造成的。
我已经设法通过创建一个从旧数据库编写脚本的新数据库并导入所有数据来将列数据类型更改为 unicode,结果只是增加了 1Gb 的大小,所以我想了解为什么更改列数据类型会导致这样的增长。