相关疑难解决方法(0)

SQL Server - 更改表与删除并创建

我们的数据库是 SQL Server 2008 R2。我们有一些表有一些 varchar(500) 列,我想切换到 datetime2 或 bigint。我可以保证要切换的列中的所有数据对于正确的类型都是有效的。列更改确实会影响索引,但不会影响键。

在与同事讨论时,我们得出了两种解决问题的方法。这两个都将通过 T-Sql 脚本完成。

  1. 通过 select into 创建临时表,删除旧表并使用正确的数据类型重新创建表。重新创建索引。
  2. 通过更改当前表/数据类型 ALTER TABLE x ALTER COLUMN Y datetime2,然后重建或重新创建索引。

因为我相信数据会干净利落地转换,所以我倾向于#2。我的同事和 DBA 朋友更喜欢 #1,但我的同事不记得他们为什么这样训练他。DBA 朋友正在休假,所以我没有问他为什么。

有人可以提供有关他们认为更好的选择以及为什么的见解吗?最终这是我的决定,我想知道为什么 #1 比 #2 更受欢迎?

sql-server t-sql sql-server-2008-r2 alter-table drop-table

7
推荐指数
1
解决办法
1万
查看次数