SQL Server 2008 R2 Enterprise Editionの使用
次のステートメントを検討してください。
:setvar source_server_name "SERVERNAME\INSTANCENAME"
SQLCMDモードでTSQLを使用してその値を取得することは可能ですか?
何かのようなもの: :setvar source_server_name = SELECT @@servername
ありがとうございました
2013年7月15日更新
以下に示す2つの回答では、望ましい結果が得られなかったため、より適切な例を追加します。
: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は、ID 1のサーバーの値に設定されます。
結果をファイルに出力して戻す必要があると思います。次のような方法で、探しているものに近づけることができます。
:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)
ここで他の例を参照 できます。