Sql-Server

在 SQLCMD 模式下設置變數

  • June 13, 2014

使用 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)

您可以在此處查看更多範例

引用自:https://dba.stackexchange.com/questions/46244