SQL Server 2008 R2 Enterprise Editionの使用
次の文を考慮してください。
:setvar source_server_name "SERVERNAME\INSTANCENAME"
SQLCMDモードでTSQLを使用してその値を取得することは可能ですか
何かのようなもの: :setvar source_server_name = SELECT @@servername
ありがとうございました
アップデート7/15/2013
以下に示す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のサーバーの値に設定されます。
私が知っている、または理解できるというわけではありません。
sqlcmd変数は、sqlがサーバーに送信される前にクライアントによって評価されるため、要求すること自体は不可能です。したがって、SQLサーバーに、決して見えない変数の値を設定するように要求しています。sqlcmd変数を使用してsqlスクリプトでsqlプロファイラートレースを実行すると、すべての変数が既に評価されていることがわかります。
—
ティムアベル