在多个数据库上运行相同的复制脚本

时间:2009-04-14 19:49:00

标签: sql-server tsql replication

我们有几个SQL Server 2000数据库(我知道,我们需要升级)具有相同的结构并将它们设置为复制到另一台服务器。问题在于,每当我必须更改结构时(通常在所有数据库上都很容易,尤其是使用Red Gate的工具),我必须停止复制,更改结构,然后再次设置复制。设置复制的步骤只需要花费几分钟来完成每个数据库,但它重复并让我发疯。我让IDE创建了一个复制过程的脚本,然后用以下数据库的名称替换先前数据库的名称并运行该脚本。仍然很烦人,但比点击IDE并忘记一个选项更快。

我尝试过使用“SP_MSFOREEACHDB”之类的东西,但看起来不太有希望。

我的猜测是我应该使用从IDE生成的TSQL,并将其用作构建新TSQL脚本的起点,并将其作为参数传递给数据库的名称。然后,当某些内容随数据库结构发生变化时,我需要在TSQL复制脚本中解决这个问题并在那里进行更改。这对其他人来说是个问题吗? 2005或2008有没有更好的“SP_MSFOREACHDB”,所以我不需要维护一些疯狂的脚本,只需让IDE生成一个脚本,然后我可以轻松地在多个数据库上使用这些更改?

3 个答案:

答案 0 :(得分:1)

您使用的是SQL Server复制吗?如果是这样,为什么不对发布数据库进行更改并让它将模式更改推送给其订阅者?我们偶尔会在SQL 2005上这样做,它在大多数情况下运行良好;我没有任何2000服务器上的复制经验。

答案 1 :(得分:0)

如果您可以使用SQL Server Management Studio,那么SSMS tools pack有一个小部件,允许在不同的数据库上运行相同的脚本。

答案 2 :(得分:0)

SQLCMD工具可以连接到SQL Server 2000并从命令行启用交互。使用参数化查询和一组固定的.bat文件(每个服务器一个)可以替代您现在所做的事情。