2017-05-18 4 views
0

リンクサーバーから取得したパラメータの値を返すストアドプロシージャを記述する必要があります。リンクサーバーから変数を返す

私は変数を動的SQLの内部と外部の両方で宣言しようとしましたが、変数エラーを宣言する必要があります。

declare @srvr nvarchar(100) 
declare @dbn nvarchar(50) 

set @srvr = 'ServerName' 
set @dbn = 'DatabaseName' 

Declare @sql nvarchar(max) 

set @sql = 'declare @param nvarchar(50) set @param = (Select X from [' + @srvr + '].[' + @dbn + '].[TableName])' 

exec (@sql) 
print @param 

これはすべてのアイデアは、環境中に他のデータベースを復元するときに、これらの手順は、種類

の「準備スクリプト」の一部を形成すると呼ばれる、中央データベース内に存在する複数の手続きのためのフレームワークをしてください形成することになります?あなたが二回変数を宣言する必要が

どうもありがとうございました

+0

リンクサーバーは赤いニシンです。これは動的SQLに関する質問です。 –

答えて

0

。内部コンテキスト用に1回、外部コンテキスト用に1回。彼らは内と外の同じ名前を使用する必要はありません:

declare @srvr nvarchar(100) 
declare @dbn nvarchar(50) 

set @srvr = N'ServerName' 
set @dbn = N'DatabaseName' 

Declare @sql nvarchar(max) 
declare @parms nvarchar(max) 
set @sql = N'set @param = (Select X from [' + @srvr + '].[' + @dbn + '].[TableName])' 
set @parms = N'@param nvarchar(50) output' 
declare @param2 nvarchar(50) 

exec sp_executesql @sql,@parms,@param = @param2 output 
print @param2 
+0

パーフェクト –

関連する問題