将数据库更改推送到服务器的脚本

时间:2009-01-27 12:14:40

标签: sql-server

这可能是最经典的数据库问题。

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

在开发下一个版本期间,我可能会更改或添加表,视图,存储过程等。

如何在不丢失数据的情况下将此更改发布到所有数据库?它应该通过脚本或类似的东西来完成。集中管理是关键......

5 个答案:

答案 0 :(得分:2)

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

(我不是红门的销售人员,但我认为这可能就是你要找的东西)

答案 1 :(得分:2)

我使用SQL Compare进行架构更改,使用SQL Data Compare进行数据更改。像魅力一样工作!

答案 2 :(得分:0)

应由db admin在sql server机器上执行脚本。

此类scipt的主要算法即将创建备份,锁定表中的每个表,更改它,释放。

答案 3 :(得分:0)

这个问题基本上是自动执行登录到SQL Server的手动过程,以及针对一个或多个数据库运行脚本,从而进行所需的修改。

当然,如果您需要更新的SQL Server实例远离您,因此更糟糕,因此无法直接访问。

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

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

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

当远程系统呼入时,它会提供其最近升级的ID。当Web服务完成时,它知道它传递的最后一个。因此,了解远程系统的级别是非常简单的。

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

答案 4 :(得分:0)

另一张海报提到了红门产品,我还会推出另一款商品 - Quest Change Director:

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

免责声明:我为Quest工作,虽然我没有销售。 Change Director进行比较,同步,链接到变更管理系统,可以使用dev / qa服务器作为源或使用T-SQL脚本,具有审计跟踪和回滚功能等。

就像你说的那样,集中管理是关键,本产品专注于此。