2016-02-29 105 views
0

我需要將表的字段從Numeric(5,10)更改爲intSQL Server將字段類型從數字更改爲int

此字段是主鍵並與20多個其他表(某些表具有超過數百萬條記錄)相關。

有人可以知道最簡單和最安全的方式來改變字段類型嗎?

我試圖改變它從SQL Server Studio管理,但我關心的 表將被丟棄並重新創建,這會減慢進程,甚至當我試圖給出超時錯誤, 有人可以有經驗在最好的辦法意見... 問候

+0

看看這個http://dba.stackexchange.com/questions/82233/update-datatype-of-primary-key-without-deleting-the-table-sql-server – user1666620

+0

也許也想看看這個如果你需要增加SSMS超時時間:http://stackoverflow.com/questions/1137190/changing-the-commandtimeout-in-sql-management-studio –

回答

0

我將進行如下:

  1. 丟棄所有的FKS引用當前PK列
  2. 創建新的int列可爲空
  3. 填充所有行的新列,所以它是獨一無二的
  4. 使新列非空
  5. 除去現有PK和列
  6. (可選)重命名新列
  7. 添加新PK
  8. 對於每個FK你掉
    • 執行類似的變換,切換到int列
    • 創建新的FK
  9. 更新所有的存儲過程,觸發器在,...
  10. 更新使用表
  11. 更新任何報告,SSIS,...利用表

(即任何應用程序。潛在的這是很多工作:因此遺留數據庫往往有這樣的事情留在原地。)

所有這些都可以腳本化,這將最大限度地減少停機時間。

注意:如果您有DBA,那麼這是與DBA合作的好時機。他們可能有興趣確保任何這種變化儘可能平穩和儘可能快(例如,分配額外的臨時空間以確保添加新的集羣PK不會導致問題)。

相關問題