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

Sql 要更改表定义,但数据量很大,sql,sql-server,database-design,sqldatatypes,Sql,Sql Server,Database Design,Sqldatatypes,这是我上一个问题的连续问题: 我试图修改表定义的表相当大(4137631行),因此ManagementStudio表示,在转换过程中,该表将无法访问,可能需要一些时间才能完成 所以我需要关于如何处理这种情况的建议 我应该等到下班后再做改变吗 你知道需要多长时间吗 或者有没有其他更快的方法来更改表定义(varchar到nvarchar) 提前感谢。 您应该安排一个作业,直到数据库完全不被使用为止。否则,请先使数据库脱机 没有人能准确地告诉你 altertable是您唯一的选择,除非您想先复制整

这是我上一个问题的连续问题:

我试图修改表定义的表相当大(4137631行),因此ManagementStudio表示,在转换过程中,该表将无法访问,可能需要一些时间才能完成

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

  • 我应该等到下班后再做改变吗
  • 你知道需要多长时间吗
  • 或者有没有其他更快的方法来更改表定义(varchar到nvarchar)
提前感谢。

  • 您应该安排一个作业,直到数据库完全不被使用为止。否则,请先使数据库脱机

  • 没有人能准确地告诉你

  • altertable
    是您唯一的选择,除非您想先复制整个表(在这种情况下,您将遇到引用完整性问题,不推荐这样做)


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

  • 向数据库中添加一个新列(nvarchar)
  • 使用原始列中的数据更新列
  • 删除原始列
  • 重命名新列

  • 我更喜欢以脚本的形式来做。你可以在你的测试系统中尝试上面的步骤。理想情况下,它应该比任何其他方法都快。

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


    Rhian A.

    使用alter table/alter column创建脚本:


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

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

    3) 我已经就这个问题发表了我的意见

    谢谢你的快速回复。我正在使用SQL Management Studio GUI进行更改,但您认为使用SQL脚本会更快吗?@YeMyatAung Management Studio如果您尝试,可能会超时。我建议使用generatescript选项并作为脚本调用。是的,不要使用GUI,自己编写SQL并执行它(或从GUI生成脚本)。不过,这不会更快。请看,Management studio不是魔术-它无论如何都会创建脚本并将其发送到SQL Server。@tomtom GUI本身有相当多的“我受够了”超时设置。回答第一个和第二个问题:这取决于。你为什么不在试验台上测试呢?啊-你知道这是一个小试验台吗?