簡體   English   中英

版本控制DDL更改

[英]Version controlling DDL changes

我正在嘗試找出SQL版本更改的最佳方法。 我知道有像Redgate和Microsoft的SSDT這樣的產品,但是同樣地,我想知道是否可以通過更手動的過程來簡化自動化部署。

我有以下要求

  • 必須能夠在表格結構上產生差異
  • 必須能夠自動對數據庫進行更改
  • 必須能夠責怪更改並查看提交評論

如果我使用Redgate或SSDT,是否需要從數據庫的當前狀態生成部署腳本?

目前,我想知道是否將更改腳本和同步創建腳本放入git / svn是最簡單的方法。 但是,兩個人可能不同步,這讓我感到不安。

將更改腳本保留在源代碼管理中是一件很痛苦的事情,因為要回到特定的時間點,您需要運行基本創建,然后運行所有更改腳本,並且必須編寫手動回滾腳本(如果需要)

編寫手動更改腳本也很麻煩,因為您必須實際編寫腳本,而這是2015年,所以不要這樣做!

因此,我真的建議您使用SSDT或redgate,redgate很酷,但是SSDT是免費的,並且還包括設計時檢查和重構,因此,如果您在SSDT中重命名表,它將生成sp_rename而不是刪除第一個表並創建一個新的(這是redgate工具會執行的操作)

無論使用哪種工具,都有命令行版本的工具可以在您實際要發布時進行比較/部署,因此簽入的代碼僅在發布時顯示您希望數據庫處於的狀態。

根據您的要求,redgate和ssdt都將執行全部三個操作(第3個除外,第3個通過在源代碼管理中使用create語句表示數據庫來解決)

您唯一沒有提到的是靜態數據或參考數據,可以使用redgate數據比較工具來處理此問題,或者如果您不打算使用ssdt來鏈接表,則可以使用redgate源代碼控制ssms加載項到csv文件。

如果要使用SSDT,請使用部署后腳本,並為需要存儲在源代碼管理中的每個表提供合並語句。

對於所有開發T-Sql代碼的人來說,SSDT確實是前進的方向(即使他們還沒有意識到!)

埃德

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM