2017-06-22 118 views
0

目前正在使用可以更新链接服务器上的许多不同表的脚本。我使用08/12 SQL服务器管理工​​作室。SQL服务器链接的服务器更新

我遇到了一个问题,我试图设置链接服务器字符串作为变量,所以我可以在开始时设置此参数,并在需要时通过脚本进行参考。我一直在努力假设我可以声明这是一个局部变量,因为我的脚本的其他部分正在更新本地表/服务器,但是在运行脚本时,我会收到不正确的语法错误代码我的链接服务器字符串变量位于。

我的代码的结构为:

declare @string varchar(max) 

set @string = '[server,instance].[database].dbo.table1' 

update @string 
set field = updatevariable 
where record = identifier 

是否有可能使用链接的服务器作为一个变量?

+2

你必须使用动态sql ..看看吧 – maSTAShuFu

+2

@SandPiper粗鲁是什么?哪一部分对你萌芽不礼貌? – maSTAShuFu

+1

的确是@SandPiper。请证明你的陈述。 maSTAs的第一个评论是简单的,但肯定不是无礼的。 –

回答

0

您可以动态构建SQL Update字符串,然后将其传递给exec。例如:

declare 
    @srv nvarchar(max) = N'[server].[db].[dbo].[table]', 
    @id int = 100, 
    @value nvarchar(max) = N'some value', 
    @sql nvarchar(max) 

set @sql = N'update ' + @srv 
     + ' set field = ''' + @value + ''' ' 
     + ' where record = ' + cast(@id as nvarchar) 

exec(@sql) 
+0

感谢您的示例。我理解代码的基本构造,但是能否解释这行代码中的引号:+'set field ='''+ @value +''''。我假设他们有一个功能,然后删除文本? –

+0

@GrantSDC我不明白你的意思是什么“引号”,但是为了看到构建的@ sql,你总是可以使用'print @ sql' – shibormot