SQL Server 2005多个数据库部署/升级软件建议

时间:2008-09-19 13:58:01

标签: sql sql-server deployment triggers

我们有一个产品,它利用多个带有触发器的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 Packager的产品,但它可以轻松处理多个数据库。如果不存在这样的产品,我们必须自己做。

提前感谢您的建议!

2 个答案:

答案 0 :(得分:1)

我自己在寻找这款产品,因为他知道RedGate解决方案适用于“一个”DB;不幸的是我一直找不到这样的工具:(

最后,我不得不推出自己的解决方案来做一些“相似”的事情。这是...... 中的痛苦但它有效。

我的场景比你的场景简单,因为我们没有触发器和T-SQL。

后来,我决定采用不同的方法:

每次数据库更改都有一个SCRIPT。编号。 001_Create_Table_xXX.SQL,002_AlterTable_whatever.SQL等。

无论变化有多小,都必须有一个脚本。新版本的更新程序执行此操作:

  1. 制作customerDB的BKP(以防万一)
  2. 按字母顺序开始执行脚本。 (001,002 ......)
  3. 如果脚本失败,则会丢弃BD。记录脚本错误,脚本编号等,并恢复客户的数据库。
  4. 如果完成,它会对客户的数据库进行另一次备份(在“迁移”之后)并更新我们存储数据库版本的表格;应用程序检查此表以确保数据库和应用程序同步。
  5. 显示了一个不错的成功信息。
  6. 事实证明这更像是“手动”,但它现在已经用了很少的努力三年了。 秘诀在于保留一些测试DB以在部署之前测试“升级”。但是除了一些孤立的Dbs,其中一些脚本由于数据不一致而失败,这很好。

    由于你的场景有点复杂,我不知道这种方法是否适合你。

答案 1 :(得分:0)

在撰写本文时(2009年6月),市场上仍然没有产品可以为多个数据库做这一切。我为Quest Software工作,这是另一个数据库更改自动化系统SQL Server的Change Director的制造商。我们不会像你之前那样处理多个数据库,而且我已经看到了其他数据库。没有骰子。

考虑到我在SQL Server管理中看到的指示,我也不会对它抱有希望。事情正朝着包含在单个数据库中的打包应用程序的方式发展,并且大多数代码都专注于此。