將數據和/或模式從 DBv1 遷移到 DBv2
我有一個生產數據庫已經停止使用了幾個月。我一直在對測試/開發伺服器上的重複副本進行修改。我已經向幾個表添加了一些額外的欄位(允許為空),並且我已經向新表和現有表添加了一些新表和索引。
我的問題是:我準備好將我的測試/開發數據庫投入生產。問題是我需要將所有數據從生產數據庫遷移到我的測試/開發數據庫。我的第一個想法是使用 SSMS 將數據從生產“導入”到測試/開發,我遇到的問題是,即使使用“啟用身份插入”,我仍然會遇到所有類型的外鍵約束錯誤。這有點二分法
- 有沒有比我剛剛概述的過程更好的方法來將模式更改從測試/開發遷移到生產?
- 如果沒有,有沒有辦法在導入期間暫時禁用所有插入約束?
我很樂意只將我的測試/開發模式遷移到我的生產伺服器,但我還沒有找到任何方法來執行此操作,而無需手動逐表、逐個索引、逐個查看、逐個儲存過程。 . 等等 我見過一些聲稱能夠做到這一點的工具,但我正在尋找一個免費/開源的解決方案,但沒有找到任何東西。
注意:數據庫很小 < 10gb,test/dev 數據庫被完全截斷,每個表中的記錄為零。
聽起來你已經把它完全顛倒過來了。通常使用腳本跟踪更改,然後將其應用於生產數據庫。我從來沒有遇到過將生產數據導入到從開發中創建的下一個版本是有意義的情況。
如果您的數據庫目前未處於原始碼控制中,那麼連結到 Jeff Atwood 的文章Get Your Database Under Version Control的文章是一個很好的介紹。此外,免費的 Redgate 電子書SQL Server Team Based Development包括關於數據庫原始碼控制的一章。
如果您一直通過 GUI 工具進行更改並且沒有任何更改的記錄,那麼最好的選擇是數據庫比較工具,例如Redgate SQLCompare或Apex SQLDiff。這些工具將生成腳本以升級您的生產數據庫以匹配開發模式。
如果老闆不願意花錢購買比較工具,您可以使用WinMerge或DiffMerge等差異工具手動協調更改。使用 SSMS生成腳本工具將對像腳本寫入單個文件,然後使用 diff 工具來辨識差異。最後,為表的任何更改手工製作必要的 ALTER 語句。