从链接服务器返回变量

时间:2017-05-18 07:25:53

标签: sql-server linked-server

我需要编写一个存储过程,它将返回从链接服务器获取的参数值。

我已经尝试在动态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

这将构成驻留在中央数据库中的多个过程的框架,当将其他数据库恢复到构成“预备脚本”的环境的环境中时,将调用这些过程

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您需要声明变量两次。一次针对内部上下文,一次针对外部上下文。他们不需要在里面和外面使用相同的名称:

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