Sql-Server
在 SQLCMD 模式下設置變數
使用 SQL Server 2008 R2 企業版
考慮以下語句:
:setvar source_server_name "SERVERNAME\INSTANCENAME"
是否可以在 SQLCMD 模式下使用 TSQL 獲取該值
就像是:
:setvar source_server_name = SELECT @@servername
謝謝
2013 年 7 月 15 日更新
下面提供的兩個答案並沒有給出預期的結果,所以我添加了一個更相關的例子。
:setvar source_server_name [myserver]
變數 source_server_name 設置為文本字元串
$$ myserver_1 $$ 我希望能夠做到這一點:
create table #tmp( id int identity(1,1), server sysname ) insert into #tmp values('myserver_1'),('myserver_2'); :setvar source_server_name = SELECT server FROM #tmp WHERE id = 1 select '$(source_server_name)' (No column name) myserver_1
變數 source_server_name 將設置為 server 中 id 1 的值。
我認為您需要將結果輸出到文件並將它們帶回。這樣的事情應該可以幫助您接近您正在尋找的內容:
:setvar MyDir "C:\scripts" :OUT $(MyDir)\test.txt PRINT ':SETVAR ServerName ''' + @@SERVERNAME + '''' GO :OUT stdout :r $(MyDir)\test.txt GO SELECT $(ServerName)
您可以在此處查看更多範例。