0

我不太确定如何表达这一点。这是问题所在:

我有 1-n 个项目需要加入到不同的系统 (AS400) 以获取一些数据。

如果我在之外指定标准,则openrowset需要永远,例如:whereopenrowset

select * from openrowset('my connection string', 'select code, myfield from myTable') 
where code = @code

我的想法是创建一个接收项目编号并使用动态 sql 将其注入openrowset字符串的函数,例如:

declare @cmd varchar(1000)
set @cmd = 'select * from openrowset('my connection string',
        ''select code, myfield from myTable where code = ' + @code + ''')'

显然我不能insert.. exec..在函数内部使用策略。有没有更好的方法来实现这一目标?我打算在需要使用外部数据的连接中使用它cross apply

我没有和 and 结婚tvfcross apply但我确实需要一种快速获取这些数据的方法。谢谢你的帮助。

4

1 回答 1

1

您应该使用 OPENQUERY 并直接在远程服务器上提供的查询上进行过滤。这样您就可以确保在另一台服务器上进行过滤。相反,您可以从远程服务器获取所有数据并在本地过滤它们,这解释了为什么执行速度如此之慢。因此,您的第二种方法,但使用 OPENQUERY 是理想的解决方案。

您需要为此创建一个链接服务器。

您必须考虑到查询语法是远程服务器的语法,而不是 T-SQL。

公开查询

于 2012-04-10T23:24:01.033 回答