2008-09-19 58 views
2

我們有一款產品利用多個帶有觸發器的SQL Server 2005數據庫。我們正在尋找可持續的解決方案來部署和升級客戶服務器上的數據庫模式。SQL Server 2005多個數據庫部署/升級軟件建議

目前,我們正在使用Red Gate的SQL Packager,它似乎是這個特定工作的錯誤工具。 SQL Packager似乎不僅適用於單個數據庫,而且我們擁有的特定(舊)版本在SQL Server 2005中存在一些問題。(我們的SQL Packager版本在SQL Server 2000中運行良好,即使我們必須做很多解決方法使它能夠處理帶觸發器的多個數據庫。)

有人可以建議一個產品可以創建一個EXE或.NET項目來執行以下操作嗎?

* Create a main database with some default data. 
* Create an audit trail database. 
* Put triggers on the main database so audit data will automatically be inserted into the audit trail database. 
* Create a secondary database that has nothing to do with the main database and audit trail database. 

然後,當客戶需要更新他們的數據庫架構,該產品可以看看原來設置的數據庫和更新的一組我們的服務器上的數據庫之間的變化。然後,該產品可以創建一個EXE或.NET項目,該項目就可以了,客戶的服務器上...

* Temporarily drop triggers on the main database so alterations can be made. 
* Alter database schemas, triggers, stored procedures, etc. on any of the original databases, while leaving the customer's data alone. 
* Put the triggers back on the main database. 

基本上,我們正在尋找類似SQL打包一個產品,而是一個將輕鬆處理多個數據庫。如果沒有這樣的產品存在,我們將不得不自己做。

在此先感謝您的建議!

回答

1

我一直在找這個產品,知道RedGate解決方案對於「一個」數據庫工作得很好;不幸的是,我一直無法找到這種工具:(

最後,我不得不推出自己的解決方案做一些「相似」,這是一個痛...但它的工作。

我的情況是比你的方式簡單,因爲我們沒有觸發器和T-SQL

後來,我決定採取不同的方法:。

每個DB變化有劇本編號001_Create_Table_xXX.SQL ,002_AlterTable_whatever.SQL等。

無論變化有多小,都必須有一個腳本。該更新的新版本中做到這一點:

  1. 使爲CustomerDB的BKP(以防萬一)
  2. 開始按字母順序執行腳本。 (001,002 ...)
  3. 如果腳本失敗,則會丟棄BD。記錄腳本錯誤,腳本編號等,並恢復客戶的數據庫。
  4. 如果完成,它將對客戶的數據庫(在「遷移」之後)進行另一次備份並更新我們存儲數據庫版本的表;此表由應用程序檢查以確保數據庫和應用程序同步。
  5. 顯示一個不錯的成功消息。

事實證明這是一個多「手動」,但它已經真正在三年工作了很少的努力。 祕訣在於在部署之前保留一些測試數據庫以測試「升級」。但除了一些由於數據不一致而導致某些腳本失敗的孤立的DBS之外,這一切都運行良好。

由於您的情況稍微複雜一些,我不知道這種方法是否適合您。

0

截止撰寫本文時(2009年6月),市場上還沒有產品可以爲多個數據庫做所有這些工作。我爲Quest Software工作,這是SQL Server變更總監(另一個數據庫變更自動化系統)的製作人。我們不像處理多個數據庫一樣處理多個數據庫,而且我也看到了其他的數據庫。沒有骰子。

鑑於我在SQL Server管理中看到的指示,我不會抱有希望。事情更多的是將打包的應用程序包含在單個數據庫中,大部分代碼都將重點放在這一點上。

相關問題