2013-02-18 89 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