3

目前我們手動將更改從我們的DEV SQL環境推送到測試和生產(使用Visual Studio中的架構比較,加上我們在對DEV進行更改時創建的一些腳本),但這是非常耗時且容易出錯。保持不同的數據庫環境同步

我們想知道是否有更好的方法來做到這一點,我們需要如何實現這一點。

我讀過關於也許使用版本控制(這將如何工作?),或者可能使用RED GATES的SQL源代碼控制(但可以用來將更改推送到TEST,還是僅用於保存軌道的局部變化?)

我們希望有一個可靠的方法來更新我們的測試&生產服務器,這樣的數據不會被破壞/丟失......我們使用SQL Server 2008 R2和Visual Studio 2012

我們正在開始一個新項目,所以是時候進行改變了!感謝您的時間!

+0

你也可以看看SQL比較從紅門。從他們的網站「比較數據庫模式和部署差異」 – 2013-02-14 08:37:50

+0

在[The Daily WTF](http://thedailywtf.com/Articles/Database-Changes-Done-Right.aspx)上有關於此主題的好文章。沒有開玩笑,去看看! – user1429080 2013-02-14 11:48:57

回答

2

一個簡單的方法就是在db中有一個簡單的版本表,一行一列存儲版本號。

現在,每當您將更改推向開發時,創建增量SQL腳本,請具有基於當前版本數據庫的主腳本將調用必要的增量SQL腳本以將架構升級到最新版本。

小心刪除列,更改列類型或減少列大小,例如您的增量腳本中的varchar(100)到varchar(10),因爲如果計劃不正確,可能會導致數據丟失。

您的增量腳本應該是冪等的,它們可以一遍又一遍地運行,以防在升級過程中db崩潰時處理這種情況。

0

VS中的模式比較是否有CLI?如果是這樣,你可以在白天自動運行幾次。如果沒有,您可以嘗試使用其他支持CLI的第三方工具,如用於架構的ApexSQL Diff和用於同步數據的ApexSQL Data Diff

1

儘管使用SQL源代碼管理有很多好處(我希望您能夠放手,因爲我是產品經理!),但其目的僅限於版本控制,而不是管理和部署到你的各種環境。正確的Red Gate工具是Deployment Manager。

http://www.red-gate.com/delivery/deployment-manager/

有部署管理項目團隊在這裏保持了博客,這應該給你當刀具爲首的一個想法:

http://thefutureofdeployment.com/

相關問題