2009-07-04 84 views
2

假設我有一個網站和本地託管在本地計算機上的數據庫(用於開發)和另一個數據庫託管(用於生產)......即首先執行更改在開發數據庫,​​然後我做的更改數據庫。將更改從開發數據庫傳輸到生產數據庫

將我對本地數據庫所做的更改傳輸到託管數據庫的最佳方式是什麼?

如果它的事項,我使用的MS SQL Server(2008)

回答

3

使用Visual Studio和SQL Server執行此操作的正確方法是將數據庫項目添加到Web應用程序解決方案中。數據庫項目應該有SQL文件,可以在新的服務器上完整地重新創建整個數據庫以及所有必要的表,過程用戶和角色。

這樣,它們也包含在所有其他代碼的源代碼管理中。

有一個更改數據庫項目中的子文件夾,其中我將SQL文件應用於數據庫的任何新的更改或添加爲後續版本。

應該使用正確的「if exists」塊來編寫文件中的SQL,以便它可以在已更新的數據庫上安全地多次運行而不會出錯。

通常,您不應該直接在數據庫中進行更改 - 而是修改項目中的SQL腳本並將其應用於數據庫,以確保您的源代碼(SQL文件)始終處於最新狀態。

1

我們這樣做的(紅寶石上)寫「遷移」,Rails的世界您對DB其捕獲的變化結構在每個點上。這些工具通過遷移工具(rake任務)運行,該工具也寫入數據庫表,以便知道是否已經運行特定的遷移。

你可以爲你的開發平臺(.Net?)製作這樣的結構,但我認爲在其他人對這個問題的回答中,人們會建議可用的工具來處理開發平臺中的數據庫版本控制, D B。我不知道任何這些,but check out this list。我看到很多付費的東西,但必須有一些免費的東西。另外check this out

1

我通過開發人員在測試/驗證其更改後編寫的更改腳本來遷移更改。 (移動大量數據的例外情況。)所有腳本都存儲在Source控制系統中。並且可以由DBA驗證。

這是手冊,有時耗時但有效,安全和控制過程。

數據庫對於從開發中複製太重要。

有工具可以幫助創建/驗證這些腳本。 請參閱http://www.red-gate.com/ 我已經使用他們的工具比較2個數據庫來創建腳本。 Brian

1

如果變化很小,有時我會親手製作它們。對於較大的更改,我使用Red Gate的SQL比較來生成更改腳本。這些都是經過手工驗證的,並首先在QA環境中運行,以確保它們不會破壞任何內容。對於大的變更,我們在QA和生產中進行更改之前運行特殊備份。

0

我們曾經使用Ron提供的方法。這對於一個擁有專業DBA團隊的大型項目來說是有意義的。但是,如果你沒有專門的開發人員編寫代碼只爲DB這種方法是是時間和資源昂貴

使用RedGate DB比較的方法也不好。 你還有很多手工工作可以跳過

它需要更好的東西。這就是我們建立"Agile DB Recreation/Import/Reverse/Export tool" 該工具是免費的。

優點:您的開發人員使用任何首選工具來開發DEV DB。然後,他們運行DB RIRE,並使數據庫(表,視圖,存儲過程等)進行反向並將數據導出到XML文件中。您可以保存在任何代碼存儲庫系統中的XML文件。

第二步是再次運行DB RIRE以在XML文件和生產數據庫中生成結構和數據之間的差異腳本。

當然,您可以根據需要製作儘可能多的迭代。