动态链接服务器查询

时间:2010-08-04 18:19:26

标签: sql sql-server tsql sql-server-2008

是否可以为链接服务器构建动态查询(如果是这样的话)?

例如:

@linkedServer varchar(50)
@var1 varchar(10)
@var2 varchar(10)

select * 
  from openquery(@linkedServer, 
                 'select c1,c2 
                    from t1 
                   where p1 = @var1 
                     and p2= @var2')

2 个答案:

答案 0 :(得分:4)

例如

exec ('select * from openquery(' + @linkedServer + 
', ''select c1,c2 from t1 where p1 = '' + @var1 + ''and p2= '' + @var2 + ''')

请务必阅读The Curse and Blessings of Dynamic SQL以防止SQL注入

答案 1 :(得分:2)

请参阅EXEC() at Linked Server

The Curse and Blessings of Dynamic SQL by Erland Sommarskog部分

来自那篇文章:

  

SQL 2005中添加的一项特殊功能是   您可以使用EXEC()来运行   对链接的传递查询   服务器。这可能是另一个例子   SQL Server,但它也可能是一个   Oracle服务器,一个Access数据库,   活动目录或其他。 SQL   可以是单个查询或序列   陈述,可能是   动态组成或完全组成   静态的。如图所示,语法很简单   通过这个例子:

     

EXEC('SELECT COUNT(*)FROM'+ @db +   '.dbo.sysobjects')AT SQL2K

     

SQL2K在这里是一个链接服务器   已使用sp_addlinkedserver定义。