SQL Server 2005多个数据库部署/升级软件建议
我们有一款产品可以利用带有触发器的多个SQL Server 2005数据库。我们正在寻找一种可持续的解决方案,用于在客户服务器上部署和升级数据库架构。
当前,我们使用的是Red Gate的SQL Packager,这似乎是针对此特定工作的错误工具。 SQL Packager不仅适合于单个数据库,而且我们拥有的特定(旧)版本在SQL Server 2005中也存在一些问题。(即使我们必须做一个许多变通办法,使其能够使用触发器处理多个数据库。)
有人可以建议一种可以创建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的产品,但该产品可以轻松处理多个数据库。如果不存在这样的产品,我们将不得不制造自己的产品。
预先感谢建议!
解决方案
我一直在寻找该产品,因为我知道RedGate解决方案对于"一个" DB可以很好地工作。不幸的是我一直找不到这样的工具:(
最后,我不得不推出自己的解决方案以执行"类似"操作。这是很痛苦的,但它奏效了。
我的方案比方案简单得多,因为我们没有触发器和T-SQL。
后来,我决定采用另一种方法:
每个数据库更改都有一个SCRIPT。已编号。 001_Create_Table_xXX.SQL,002_AlterTable_whatever.SQL等。
无论更改有多小,都必须有一个脚本。新版本的更新程序会执行以下操作:
- 制作customerDB的BKP(以防万一)
- 开始按字母顺序执行脚本。 (001,002 ...)
- 如果脚本失败,它将删除BD。记录脚本错误,脚本编号等,并还原客户的数据库。
- 如果完成,它将再次备份客户数据库(在"迁移"之后),并更新一个表,用于存储数据库版本;应用程序会检查此表,以确保数据库和应用程序同步。
- 显示味精成功。
事实证明,这有点"手动",但实际上已经花了三年的时间了。
秘密在于在部署之前保留一些测试数据库以测试"升级"。但是,除了少数隔离的Db之外,其中一些脚本由于数据不一致而失败,这可以正常工作。
由于情况要复杂一些,因此我不知道这种方法是否可以接受。
截至撰写本文时(2009年6月),市场上仍然没有可以针对多个数据库完成所有这些工作的产品。我为Quest Software工作,该公司是SQL Server Change Director(另一个数据库更改自动化系统)的制造商。我们的数据库无法像我们所追求的那样处理多个数据库,而我已经看到了其他数据库。没有骰子。
鉴于我在SQL Server管理中看到的指示,我也不会抱有希望。打包的应用程序被包含在单个数据库中的情况越来越多,而大多数代码都将重点放在了打包的应用程序上。