這可能是最經典的數據庫問題。將數據庫更改推送到服務器的腳本
我有一個電子商務軟件解決方案託管在SQL服務器上的數據和前端的Web服務器。每個實例/客戶有SQL Server上自己的數據庫2008年
在下一版本的發展,我可能會改變或添加表,視圖,存儲過程等
如何發佈這一變化對所有數據庫,而不會丟失數據?它應該通過腳本或類似的東西來完成。集中管理是關鍵......
這可能是最經典的數據庫問題。將數據庫更改推送到服務器的腳本
我有一個電子商務軟件解決方案託管在SQL服務器上的數據和前端的Web服務器。每個實例/客戶有SQL Server上自己的數據庫2008年
在下一版本的發展,我可能會改變或添加表,視圖,存儲過程等
如何發佈這一變化對所有數據庫,而不會丟失數據?它應該通過腳本或類似的東西來完成。集中管理是關鍵......
此問題實質上是自動執行登錄到SQL Server的手動過程以及針對一個或多個數據庫運行腳本的一個問題,該腳本會執行所需的修改。
當然,如果您需要更新的SQL Server實例遠離您,並且因此無法直接訪問,情況會變得更糟。
確保腳本按順序應用也很重要 - 在「create table」腳本之前運行「add index」腳本沒有意義。
我們解決這個問題的方法是使用一個Web服務,它將腳本文件打包爲數據集,並在他們回家時以正確的順序將它們傳送到遠程系統。
在遠程SQL Server上,我們有一個.NET應用程序調用Web服務,下載腳本文件,解包它們並將它們應用到數據庫。
當遠程系統呼入時,它提供最近升級的ID。當Web服務完成時,它知道它傳遞的最後一個。因此知道遠程系統的級別是微不足道的。
所需的唯一手動干預是首先創建腳本,並將它們上載到中央服務器。
一個腳本應該由db管理員在sql server上執行。
這種scipt的主要算法是創建備份,鎖定每個表的循環,改變它,釋放。
也許這是你已經考慮過的事情,但是我的公司使用Red Gate的軟件(http://www.red-gate.com/),它比較了我們的數據庫和生產版本的開發版本,生成並執行腳本以使生產與開發保持一致。
(我不是從紅門一個銷售人員,但我認爲這可能是你在找什麼)
我們也使用這個軟件,它的工作非常出色。再次,不是紅門銷售人員,只是一個非常高興的客戶! – 2009-01-27 12:53:06
我用SQL Compare的架構更改和SQL Data Compare數據的變化。奇蹟般有效!
另一個海報中提到的紅門產品,我會扔另一種商業產品在那裏 - 任務更改導演:
http://www.quest.com/change-director-for-sql-server/
聲明:我工作的探索,雖然我在銷售我不是。Change Director可以進行比較,同步,鏈接到更改管理系統,可以使用您的dev/qa服務器作爲源或使用T-SQL腳本,具有審計追蹤和回滾功能等。
像你說的,中央管理是關鍵,而這個產品專注於此。
如何生成您上傳到中央服務器的更改腳本? – MartinHN 2009-01-27 17:08:59