2009-01-27 65 views
1

這可能是最經典的數據庫問題。將數據庫更改推送到服務器的腳本

我有一個電子商務軟件解決方案託管在SQL服務器上的數據和前端的Web服務器。每個實例/客戶有SQL Server上自己的數據庫2008年

在下一版本的發展,我可能會改變或添加表,視圖,存儲過程等

如何發佈這一變化對所有數據庫,而不會丟失數據?它應該通過腳本或類似的東西來完成。集中管理是關鍵......

回答

0

此問題實質上是自動執行登錄到SQL Server的手動過程以及針對一個或多個數據庫運行腳本的一個問題,該腳本會執行所需的修改。

當然,如果您需要更新的SQL Server實例遠離您,並且因此無法直接訪問,情況會變得更糟。

確保腳本按順序應用也很重要 - 在「create table」腳本之前運行「add index」腳本沒有意義。

我們解決這個問題的方法是使用一個Web服務,它將腳本文件打包爲數據集,並在他們回家時以正確的順序將它們傳送到遠程系統。

在遠程SQL Server上,我們有一個.NET應用程序調用Web服務,下載腳本文件,解包它們並將它們應用到數據庫。

當遠程系統呼入時,它提供最近升級的ID。當Web服務完成時,它知道它傳遞的最後一個。因此知道遠程系統的級別是微不足道的。

所需的唯一手動干預是首先創建腳本,並將它們上載到中央服務器。

+0

如何生成您上傳到中央服務器的更改腳本? – MartinHN 2009-01-27 17:08:59

0

一個腳本應該由db管理員在sql server上執行。

這種scipt的主要算法是創建備份,鎖定每個表的循環,改變它,釋放。

2

也許這是你已經考慮過的事情,但是我的公司使用Red Gate的軟件(http://www.red-gate.com/),它比較了我們的數據庫和生產版本的開發版本,生成並執行腳本以使生產與開發保持一致。

(我不是從紅門一個銷售人員,但我認爲這可能是你在找什麼)

+0

我們也使用這個軟件,它的工作非常出色。再次,不是紅門銷售人員,只是一個非常高興的客戶! – 2009-01-27 12:53:06

0

另一個海報中提到的紅門產品,我會扔另一種商業產品在那裏 - 任務更改導演:

http://www.quest.com/change-director-for-sql-server/

聲明:我工作的探索,雖然我在銷售我不是。Change Director可以進行比較,同步,鏈接到更改管理系統,可以使用您的dev/qa服務器作爲源或使用T-SQL腳本,具有審計追蹤和回滾功能等。

像你說的,中央管理是關鍵,而這個產品專注於此。

相關問題