想要更改表定义但数据量很大

时间:2012-05-10 06:21:50

标签: sql sql-server database-design sqldatatypes

这是我提出的上一个问题的持续问题:Change Database Column Design in SQL Server

我正在尝试更改表定义的表非常大(4137631行),因此Management Studio表示在转换过程中该表将无法访问,可能需要一些时间才能完成。

所以我需要有关如何处理这种情况的建议。

  • 我应该等待下班后时间进行更改吗?
  • 任何想法需要多长时间?
  • 或者还有其他更快的方式来更改表定义(varchar到nvarchar)

提前致谢。

5 个答案:

答案 0 :(得分:1)

  • 您应该安排作业,直到根本不使用数据库。如果做不到这一点,请先使数据库脱机。

  • 没有人能够准确地告诉你。

  • ALTER TABLE是你唯一的选择,除非你想首先复制整个表格(在这种情况下你会遇到参考完整性的问题,不推荐)。

答案 1 :(得分:1)

被更改的列是否是任何索引的一部分?如果不是

  1. 将新列(nvarchar)添加到数据库
  2. 使用原始列
  3. 中的数据更新列
  4. 删除原始列
  5. 重命名新列
  6. 我更喜欢将其作为脚本。您可以在测试系统中尝试上述步骤。它应该比任何其他方法更快。

答案 2 :(得分:1)

使用alter table / alter column创建脚本:http://msdn.microsoft.com/en-us/library/ms190273.aspx

但是先制作一个具有相同结构的测试表,然后将您的脚本作为存储过程,然后在此表上首先进行测试,如果它完美运行,则安排SP在夜间运行一次。没有用户会受到伤害:)

答案 3 :(得分:0)

最佳做法是创建另一个数据库作为测试并恢复生产数据库的副本以进行测试并尝试运行脚本来更改表格,从那时起您可以决定更改后的事情。

Rhian A.

答案 4 :(得分:0)

你的问题的答案
1)绝对等待数小时后,这是一项维护活动,不应在工作时间内运行 2)需要多长时间取决于表中的硬件,网络速度和数据量。行数不是衡量数据量的好方法。我可以只有3列所有整数和你说的行数。如果你明白我的意思。
3)我已将我的意见放在该问题中。