web-dev-qa-db-ja.com

SQLCMDモードでの変数の設定

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のサーバーの値に設定されます。

13
Craig Efrein

結果をファイルに出力して戻す必要があると思います。次のような方法で、探しているものに近づけることができます。

:setvar MyDir "C:\scripts"
:OUT $(MyDir)\test.txt
PRINT ':SETVAR ServerName ''' + @@SERVERNAME + ''''
GO
:OUT stdout
:r $(MyDir)\test.txt
GO
SELECT $(ServerName)

ここで他の例を参照 できます。

9
SQLRockstar