我有一個跨多個SQL Azure數據庫分割的解決方案。這些數據庫都具有完全相同的數據模式,並從其中一個數據庫生成edmx。SQL服務器具有相同模式的多個數據庫
如何在變更管理方面維護多個數據庫的模式? 一個模式中的任何更改都必須自動應用於所有其他數據庫。有什麼我失蹤?我查看了數據同步,但它似乎正在解決另一個問題。在我的情況下,模式是完全一樣的,存儲的數據是不同的。
我有一個跨多個SQL Azure數據庫分割的解決方案。這些數據庫都具有完全相同的數據模式,並從其中一個數據庫生成edmx。SQL服務器具有相同模式的多個數據庫
如何在變更管理方面維護多個數據庫的模式? 一個模式中的任何更改都必須自動應用於所有其他數據庫。有什麼我失蹤?我查看了數據同步,但它似乎正在解決另一個問題。在我的情況下,模式是完全一樣的,存儲的數據是不同的。
這可以使用SSDT(Addin for VS)和自動部署工具(我使用Final Builder)來實現。
我目前使用SSDT工具創建原始模式的數據庫項目。 如果其中一個數據庫有任何更改,我在SSDT中使用模式比較並更新數據庫項目。 然後我按照以下步驟將更改發佈到其他數據庫。
第1步:更新數據庫項目的模式更改。
步驟2:使用MSBuild並通過將其中一個數據庫設置爲目標來生成部署腳本。
第3步:使用任何自動部署工具在所有數據庫中運行生成的腳本。
也可以使用SqlPackage.exe命令行工具使用構建SSDT項目時生成的.dacpac文件將其部署到每個數據庫。好處是它檢查每個數據庫的狀態,因此如果它們中的任何一個與其他數據庫不同步,它仍然會確保數據庫最終處於正確的狀態。這是使用MSBulid的不錯選擇。 –
如果您總是使用Entity Framework遷移對數據庫結構進行更改,那麼您可能可以在下面使用該方法。這取決於您的多個數據庫如何與EF應用程序相關使用。
或者你可以使用EF遷移到generate a script,你可以在每個服務器上手動運行。
如果你有興趣在自動化過程中它可能是值得考慮從紅門看看Deployment Manager(全披露我的紅門工作)。
這讓你把一個數據庫,並從Visual Studio或SSMS把它變成可以部署到多個服務器和環境的包裝。最多5個項目和5臺服務器的初始版本可以免費使用,並部署到Azure。它也可以部署.NET Web應用程序,但您可以將其用於數據庫。
這對於確保相同的數據庫架構是所有服務器上的環境中非常好,並通過測試/開發/生產符合任何應用程序更改傳播數據庫的變化。您也可以將它與源控制和CI系統相集成,數據庫更改從開發到自動化生產
我還沒有與Azure中使用它,但在以前的生活中,我喜歡紅門多腳本,並取得了很大的使用工具SQLFarms將更改部署到共享通用模式的許多數據庫。 –
多腳本適用於Azure。 – user529265
如果您想以編程方式執行此操作,除了使用Aaron建議的工具以外,您可以查看Django遷移for python - https://docs.djangoproject.com/en/dev/topics/migrations/ 或hibernate爲Java http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/toolsetguide。html – chaos