同时在多个数据库上运行SQL脚本脚本(并行执行)

时间:2013-12-18 16:18:14

标签: sql sql-server sql-server-2008 deployment sqlcmd

我目前使用sqlcmd在部署过程中在数据库上执行脚本。现在有了多个数据库,一个解决方案就是在批处理或foreach数据库中使用这个脚本。这个问题,它一次一个地将脚本应用于数据库。我需要一些可以节省时间的东西。

SQLCMD可以并行执行多个数据库上的脚本吗?如果没有,是否有我可以利用的脚本命令来完成此任务?

有类似的问题,但没有一个有正确的解决方案,或者它必须是一个在Parallel中执行的方法,这是主要目标。 SQL Multi Script工具正是这样做的,但它不是开源的,我更喜欢编写脚本。

有什么想法吗? 提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您使用SSMS运行SQLCMD脚本,则可以使用组查询再次运行多个服务器。我不完全确定它是否并行运行。 Look here for more information

答案 1 :(得分:1)

我能够使用以下方法完成此任务。

  1. 用户将在特定实例中设置要部署的数据库。
  2. Foreach数据库将生成一组SQLCMD命令foreach脚本进行部署并将其放入批处理文件中。
  3. 例如:S QLCMD_Commands_DB1.batSQLCMD_Commands_DB2.bat

    1. 创建的Foreach批处理文件将生成带有START命令的新主批处理文件。

      START“”“SQLCMD_Commands_DB1.bat” START“”“SQLCMD_Commands_DB2.bat”

    2. 执行Master批处理文件,该文件将并行部署数据库脚本。我写了这个,它按预期工作。