Sql server SQL Server将表的字段类型从数字更改为int

Sql server SQL Server将表的字段类型从数字更改为int,sql-server,Sql Server,我需要将表的字段从Numeric(5,10)更改为int 此字段是一个主键,与20多个其他表相关(某些表的记录超过数百万条) 有人知道更改字段类型的最简单和最安全的方法吗 我试图从SQLServerStudio管理中更改它,但我担心 表将被删除并重新创建,这会减慢进程,甚至在我尝试时,它也会出现超时错误, 有没有人能提供一个关于最佳方式的经验建议。。。 关于我将按照以下步骤进行: 删除引用当前主键列的所有FK 创建一个可为null的新int列 为所有行填充新列,使其唯一 将新列设为非空 删除现有

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

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

有人知道更改字段类型的最简单和最安全的方法吗

我试图从SQLServerStudio管理中更改它,但我担心 表将被删除并重新创建,这会减慢进程,甚至在我尝试时,它也会出现超时错误, 有没有人能提供一个关于最佳方式的经验建议。。。
关于

我将按照以下步骤进行:

  • 删除引用当前主键列的所有FK
  • 创建一个可为null的新int列
  • 为所有行填充新列,使其唯一
  • 将新列设为非空
  • 删除现有的主键和列
  • (可选)重命名新列
  • 添加新的PK
  • 对于您丢弃的每个FK
    • 执行类似的转换以切换到int列
    • 创建新的FK
  • 更新所有存储过程、自定义项、触发器等
  • 使用该表更新任何应用程序
  • 更新任何报告、SSI。。。使用表格
  • (也就是说,这可能需要大量工作:因此,遗留数据库往往会保留类似的内容。)

    所有这些都可以编写脚本,这肯定会最大限度地减少停机时间


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

    查看此项如果需要增加SSMS超时,可能还希望查看此项: