1

这是我之前提出的问题的持续问题:Change Database Column Design in SQL Server

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

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

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

提前致谢。

4

5 回答 5

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

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

  • ALTER TABLE是您唯一的选择,除非您想先复制整个表(在这种情况下,无论如何您都会遇到引用完整性问题,不推荐)。

于 2012-05-10T06:25:45.677 回答
1

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

  1. 向数据库添加新列 (nvarchar)
  2. 使用原始列中的数据更新列
  3. 删除原始列
  4. 重命名新列

我更喜欢将其作为脚本进行。您可以在测试系统中尝试上述步骤。理想情况下,它应该比任何其他方法都快。

于 2012-05-10T06:42:19.997 回答
1

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

但是先做一个相同结构的测试表,然后把你的脚本作为一个存储过程,首先在这个表上测试,如果它工作得很好,然后安排SP在晚上运行一次。没有用户会受到伤害:)

于 2012-05-10T08:08:23.140 回答
0

最佳实践是创建另一个数据库作为测试并恢复生产数据库的副本以进行测试并尝试运行脚本来更改表,然后您可以决定更改后的情况。

瑞安 A.

于 2012-05-10T07:26:43.797 回答
0

您的问题的答案
1) 一定要在下班后等待,这是一项维护活动,不应在工作时间内运行
2) 需要多长时间取决于您的硬件、网络速度和表中的数据量。行数不是衡量数据量的好方法。正如你所说,我只能有 3 列所有整数和尽可能多的行。如果你明白我的意思。
3)我已经在那个问题中发表了我的评论。

于 2012-05-10T11:23:50.203 回答