SQL Server更改字段从numeric到int的表类型

时间:2016-02-29 16:08:02

标签: sql-server

我需要将表格的字段从Numeric(5,10)更改为int

此字段是主键,与20多个其他表相关(某些表的记录超过数百万)。

有人能够知道更改字段类型的最简单,最安全的方法吗?

我尝试从SQL Server Studio管理中进行更改,但我担心的是 表将被删除并再次重新创建,这会减慢进程,即使我尝试它也会给出超时错误, 有人可以通过最好的方式获得经验建议...... 此致

1 个答案:

答案 0 :(得分:0)

我将按以下步骤进行:

  1. 删除所有引用当前PK列的FK
  2. 创建一个可以为空的新int列
  3. 为所有行填充新列,因此它是唯一的
  4. 使新列非空
  5. 删除现有的PK和列
  6. (可选)重命名新列
  7. 添加新PK
  8. 对于您丢弃的每个FK
    • 执行类似的转换以切换到int列
    • 创建新的FK
  9. 更新所有SProcs,UDF,触发器......
  10. 使用表
  11. 更新所有应用程序
  12. 使用表格
  13. 更新任何报告,SSIS,....

    (也就是说,这可能是很多工作:因此遗留数据库往往会留下这样的东西。)

    所有这些都可以编写脚本,这肯定会减少停机时间。

    NB。如果您有DBA,这样做是与DBA合作的好时机。他们可能有兴趣确保任何此类更改尽可能顺利和快速(例如,分配额外的临时空间以确保添加新的群集PK不会导致问题)。