2008-09-19 90 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管理中看到的指示,我不会抱有希望。事情更多的是将打包的应用程序包含在单个数据库中,大部分代码都将重点放在这一点上。

相关问题