2011-02-02 57 views
0

我想寫一個自動化的sqlcmd腳本,在兩臺不同的服務器上創建兩個相同的登錄名。因此,相關步驟走:SETVAR SID SID從那裏名稱= 'myuser的' syslogins中:如何在使用t-sql和/或sqlcmd的服務器之間傳遞數據?

:connect primaryDb 

create login myuser with password='mypassword' 
Go 

:setvar SID sid from syslogins where name = 'myuser' 

:connect secondaryDb 

create login myuser with password='mypassword', sid=$(SID) 
Go 

不幸的是,腳本在步驟失敗。我似乎無法找到一個有效的語法來允許setvar接受SQL語句的結果。

這是否有語法?或者不涉及使用鏈接服務器的解決方法?

乾杯, 馬特

回答

1

MSDN並沒有給出如何做這樣的事情的任何例子,從我讀有我假設有初始化一些數據的腳本變量沒有標準的方法你進入查詢。

你可能會嘗試解決這個問題,使用輸出到一個文本文件,並可能一些批處理腳本。

這個想法基本上是這樣的。您將查詢分成兩部分。第一部分獲取SID並將其寫入文本文件(使用:OUT腳本命令)。然後你在第二部分之外初始化腳本var(當然,在執行之前),運行第二部分,並且你希望在那裏。

+0

謝謝 - 這當然是一個可行的方法。但是我有興趣聽到有人能提出一些不太密集的建議。在sqlcmd中,這似乎是一個明顯的省略,我幾乎不相信這是不可能的*不知何故,如果語法是正確的! – 2011-02-03 12:10:36

相關問題