2013-02-18 79 views
0

我需要自动执行查询,以便我可以在网络上的所有服务器上执行该查询。事情是更多的服务器不断添加,所以我需要保持动态。在一个表格中,我有一个当前活动服务器的列表,但是它们会重复多次,因为每个服务器都有不同的数据。它也只显示一个数字,而服务器名称具有特定的格式。我这样做来解决它:SQL批量变量

select distinct ('swp0'+ cast(rtl_loc_id as nvarchar(4000)) +'r01') 
from basename..inv_valid_destinations 

我得到这个输出文件,但现在我想用它作为输入到sqlcmd。每个服务器名称(前一个输出的每行)应该用作-s参数。我尝试了不同的方法来做到这一点无济于事。它应该是这样的:

SQLCMD -Sswp0241r01 -Uswpos -isalto_folio.sql -osalto_folio.txt 

正如我所说的,更多的服务器经常出现,我们需要的时候所有活动服务器上执行一个查询并生成一个输出文件。你能帮我吗?

回答

1

如果你真的想批量执行此操作,可以使用循环,其中yourfile是包含服务器列表的文件。

for /F "tokens=*" %%A in (readme.txt) do (
    SQLCMD -S%%A -Uswpos -isalto_folio.sql -osalto_folio.txt 
) 
+0

我只做了调整,删除了“tokens = *”部分,因为它不适用于它。但它做了我所需要的,非常感谢。 – gabrielbaca 2013-02-18 21:27:14