2016-09-14 50 views

回答

5

實際上有兩種方法,這兩種方法都與TFS協同工作。真正的TFS只是簡化了您將用於更新數據庫的任何腳本的執行,包括您的自定義手工腳本。

有一種基於狀態的方法,它使用比較技術來查看VCS/dev/test/staging數據庫並將其與生產進行比較。 SQL Source Control和Redgate Software的DLM自動化套件也是如此,其他比較工具也是如此。你要做的是使用命令行或編程接口來設置源和目標,捕獲輸出,然後在發佈過程中將其用作工件。我可能會將該工件的審閱作爲流程中的腳本選擇。

請注意,基於狀態的比較不能很好地解決一些問題。重命名,拆分,合併,數據移動等等。有些比較工具可以解決這個問題,有些則沒有。請注意這可能是一個問題。如果你有一個更成熟的數據庫,也許沒有,但你應該考慮這一點。 SQL源代碼管理允許自定義遷移腳本,它可以處理這些問題。

另一種方法是腳本運行器或遷移策略,其中您對開發數據庫所做的每個更改都會被捕獲爲有序腳本,並且框架會按順序執行這些操作(如果需要)。這是一些人的首選,因爲您可以確切地看到在開發和部署時將執行哪些代碼。來自Redgate Software,Liquibase,Rails Migrations,DBUp,FlywayDB的ReadyRoll都使用這種策略。

這些都不是好或壞。兩者都有工作,都有優點和缺點,但真正的選擇歸結於您的舒適度和偏好。

披露:我爲Redgate Software工作。

1

如果部署數據庫更改意味着使用Team Foundation Server中的Team Foundation Build使用SQL Server數據庫項目(.sqlproj文件)。

有幾種方法可以做到這一點:

  • 使用MSBuild任務的一些參數來構建過程中發佈的SQL項目 。
  • 在您的sqlproj文件中添加一個部署目標,在生成 完成後運行目標。
  • 或者在您的build 定義中添加「批處理腳本」步驟以運行「SqlPackage.exe」來發布.dacpac文件。

更多詳情請參考此博客:Deploying SSDT During Local and Server Build


至於採用TFS2015,你也可以嘗試使用SQL Server Database Deployment任務。

使用此任務可將SQL Server數據庫部署到現有SQL 服務器實例。該任務使用DACPACSqlPackage.exe,其中 提供對數據庫創建和升級的細粒度控制。

相關問題