我们的数据库是 SQL Server 2008 R2。我们有一些表有一些 varchar(500) 列,我想切换到 datetime2 或 bigint。我可以保证要切换的列中的所有数据对于正确的类型都是有效的。列更改确实会影响索引,但不会影响键。
在与同事讨论时,我们得出了两种解决问题的方法。这两个都将通过 T-Sql 脚本完成。
ALTER TABLE x ALTER COLUMN Y datetime2
,然后重建或重新创建索引。因为我相信数据会干净利落地转换,所以我倾向于#2。我的同事和 DBA 朋友更喜欢 #1,但我的同事不记得他们为什么这样训练他。DBA 朋友正在休假,所以我没有问他为什么。
有人可以提供有关他们认为更好的选择以及为什么的见解吗?最终这是我的决定,我想知道为什么 #1 比 #2 更受欢迎?