Dot-Net

使用 MSDeploy 自動遷移數據庫

  • August 16, 2015

我是一個持續傳遞迷,我對自動化建構、測試和部署過程充滿熱情。我真正需要幫助的一件事是在自動化部署中部署數據庫遷移腳本時的最佳實踐是什麼。這些是我的技術堆棧的相關細節。

  • ASP.NET MVC 3 網站
  • Visual Studio 2010 數據庫項目
  • SQL Server 2008 R2 數據庫
  • 視窗伺服器 2008 R2
  • 通過 Web Deploy 2.0 (MS Deploy) 進行遠端部署

目前,我能夠使用 Web Deploy 2.0 工具部署我們的 ASP.NET MVC 網站(哇,設置起來很有趣!)。MSDeploy 有一個“dbFullSql”提供程序,但這只能用於部署整個數據庫,而不是遷移。MSDeploy 為擴展“runCommand”提供程序敞開大門,以便在遠端伺服器上執行任意程序。我想我可以利用它以這種方式執行我的遷移腳本。但是,我覺得應該有更好的方法來做到這一點。

回答時請記住,我想將 MSDeploy 用於與遠端部署目標的所有互動。儘管如果您知道一種可用於將遷移安全地推送到不是 MSDeploy 的遠端目標的工具,我也會有興趣了解它!

編輯:回答者(誰刪除了他們的答案!)參考了以下文章:http ://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/deploying-database-項目

這是一個很棒的資源,我不知道。我以一種或另一種形式閱讀過大部分內容,不幸的是,這篇特定的文章再次證實了我自己的懷疑。從本質上講,沒有簡單的方法來使用目前工具推送自定義增量更新(vaporware 承諾在典型的 MS 風格的未來版本中提供更好的功能)。

在它提到的文章主題的註釋中。

… 使用 VSDBCMD 是增量數據庫發布的推薦方法。

然而,VSDBCMD 只能在源和目標之間生成增量腳本,我根本不相信遷移,尤其是在生產部署中。本文提到的通過 Web Deploy 推送增量更新的唯一解決方案是創建包含自定義 SQL 遷移腳本的自定義 WPP 目標文件。

您可以將 Web 部署配置為執行數據庫項目生成的 SQL 部署腳本,但為此,您需要為您的 Web 應用程序項目創建一個自定義 WPP 目標文件。這大大增加了部署過程的複雜性。此外,Web Deploy 不直接支持對現有數據庫的增量更新。有關此方法的更多資訊,請參閱擴展 Web 發布管道以打包數據庫項目部署的 SQL 文件

啊!它確實看起來很複雜。我以前讀過這個,我希望有更好的方法。目前,我仍然傾向於執行 SQLCMD 的 MSDeploy ‘runCommand’ 提供程序。

您實際上可以將 SQL 腳本指定為 dbFullSql 提供程序 ( -source:dbfullsql="C:\sqlcmd.sql") 的“源”,它只會執行該腳本。我之前使用過它來部署一個自定義的遷移腳本管理工具,該工具會生成。

我確實希望數據庫項目對 CD 更友好,因為當需要進行 db 重構時,“自動”的東西往往會很快崩潰。

Web 部署 dbFullSql 提供程序參考

引用自:https://stackoverflow.com/questions/11170104