我注意到在更改列的数据类型时,表大小可以通过简单的 ALTER 语句(列数据类型更改后回收空间)加倍。
为什么 SQL Server 会这样做,是什么原因造成的?
我已经看到了有关如何解决问题、如何观察问题的帖子,但没有任何关于它发生的原因以及 SQL Server 在幕后所做的事情。
看似正确的方法是创建一个新表,将所有数据放入具有正确数据类型的新表中,删除旧表,然后 sp_rename 新表(如您在 SSMS 中使用 Designer 编写更改脚本时所见) )。但奇怪的是,直接表更改在考虑“需要重新创建表”的操作时不会提供警告或错误消息。