0

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

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

正如我所说,更多的服务器不断出现,我们需要同时对所有活动服务器执行查询并生成输出文件。你能帮帮我吗?

4

1 回答 1

1

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

for /F "tokens=*" %%A in (readme.txt) do (
    SQLCMD -S%%A -Uswpos -isalto_folio.sql -osalto_folio.txt
)
于 2013-02-18T20:10:07.230 回答