这可能是最经典的数据库问题。
我在SQL服务器上托管了一个用于数据的电子商务软件解决方案,以及一个用于前端的Web服务器。每个实例/客户在SQL Server 2008上都有自己的数据库。
在开发下一个版本期间,我可能会更改或添加表,视图,存储过程等。
如何在不丢失数据的情况下将此更改发布到所有数据库?它应该通过脚本或类似的东西来完成。集中管理是关键......
答案 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脚本,具有审计跟踪和回滚功能等。
就像你说的那样,集中管理是关键,本产品专注于此。