2009-01-27 109 views
1

这可能是最经典的数据库问题。将数据库更改推送到服务器的脚本

我有一个电子商务软件解决方案托管在SQL服务器上的数据和前端的Web服务器。每个实例/客户有SQL Server上自己的数据库2008年

在下一版本的发展,我可能会改变或添加表,视图,存储过程等

如何发布这一变化对所有数据库,而不会丢失数据?它应该通过脚本或类似的东西来完成。集中管理是关键......

回答

0

此问题实质上是自动执行登录到SQL Server的手动过程以及针对一个或多个数据库运行脚本的一个问题,该脚本会执行所需的修改。

当然,如果您需要更新的SQL Server实例远离您,并且因此无法直接访问,情况会变得更糟。

确保脚本按顺序应用也很重要 - 在“create table”脚本之前运行“add index”脚本没有意义。

我们解决这个问题的方法是使用一个Web服务,它将脚本文件打包为数据集,并在他们回家时以正确的顺序将它们传送到远程系统。

在远程SQL Server上,我们有一个.NET应用程序调用Web服务,下载脚本文件,解包它们并将它们应用到数据库。

当远程系统呼入时,它提供最近升级的ID。当Web服务完成时,它知道它传递的最后一个。因此知道远程系统的级别是微不足道的。

所需的唯一手动干预是首先创建脚本,并将它们上载到中央服务器。

+0

如何生成您上传到中央服务器的更改脚本? – MartinHN 2009-01-27 17:08:59

0

一个脚本应该由db管理员在sql server上执行。

这种scipt的主要算法是创建备份,锁定每个表的循环,改变它,释放。

2

也许这是你已经考虑过的事情,但是我的公司使用Red Gate的软件(http://www.red-gate.com/),它比较了我们的数据库和生产版本的开发版本,生成并执行脚本以使生产与开发保持一致。

(我不是从红门一个销售人员,但我认为这可能是你在找什么)

+0

我们也使用这个软件,它的工作非常出色。再次,不是红门销售人员,只是一个非常高兴的客户! – 2009-01-27 12:53:06

0

另一个海报中提到的红门产品,我会扔另一种商业产品在那里 - 任务更改导演:

http://www.quest.com/change-director-for-sql-server/

声明:我工作的探索,虽然我在销售我不是。Change Director可以进行比较,同步,链接到更改管理系统,可以使用您的dev/qa服务器作为源或使用T-SQL脚本,具有审计追踪和回滚功能等。

像你说的,中央管理是关键,而这个产品专注于此。