在源代碼控制中保留更改腳本是一件痛苦的事情,因爲要回到特定時間點,需要運行基本創建,然後運行所有更改腳本+必須編寫手動回滾腳本(如果需要)
編寫手冊更改腳本也是一個痛苦,因爲你必須真正寫腳本,以及這是2015年,所以不要這樣做!
所以我真的推薦使用SSDT或redgate,redgate很酷,但SSDT是免費的,還包括設計時檢查和重構,所以如果你做一些像SSDT中重命名錶一樣的東西,它會生成一個sp_rename而不是刪除第一張桌子,並創建一個新的(這是什麼紅門工具將做什麼)
無論你使用的是命令行版本的工具來做一個比較/部署時,你真的想要釋放,所以只需要檢查代碼顯示您在發佈時希望數據庫處於的狀態。
對於你的要求,無論是展鵬和SSDT會做所有三個(除號被具有數據庫在源代碼控制創建語句所代表的照顧3)
你不提的唯一事情是靜態或參考數據來處理這個問題,要麼使用redgate數據比較工具,要麼你可能會使用redgate源代碼控制ssms加載項,如果你不打算使用ssdt來讓你將錶鏈接到csv文件。
如果您打算使用SSDT,那麼請使用後期部署腳本,併爲您需要在源代碼管理中存儲的每個表格創建合併語句。
SSDT巖確實是前進的方向,任何人開發的T-SQL代碼(即使他們沒有認識到這一點!)
埃德
如何在部署過程中處理數據遷移?如果我需要添加表/列,然後運行查詢來填充新的工件,然後刪除舊的列和舊的表,是否可以自動執行這種工作流程?我問得太多了嗎?:P –
如果你有一個複雜的變化,那麼你最好創建一個手動腳本 - 把它放在項目的post deploy腳本中,並且把它包裝在一個IF EXIST中,就像舊錶中的所有列一樣),這樣該腳本可以重新運行,當它已經部署到所有環境時,您可以根據需要將其刪除。要獲得這種狀態隨着時間的推移,你可以做的是創建你的新表,將數據插入新表中,然後在應用程序代碼部署到所有環境後刪除舊錶。 –
我應該有想到了!作爲兩個單獨的部署來做,很有意義,謝謝! –