Sql 在链接服务器上的传递查询(openquery)中加入本地数据库

Sql 在链接服务器上的传递查询(openquery)中加入本地数据库,sql,sql-server,oracle,linked-server,openquery,Sql,Sql Server,Oracle,Linked Server,Openquery,我正在使用openquery从本地SQL server实例查询链接的Oracle服务器。问题是,在链接实例中执行时,我希望限制基于本地DB中的表(大约10k行)返回的结果。通常情况下,我会用另一种方式来做,比如: SELECT * FROM OPENQUERY(DBlinked, 'SELECT…') link_serv INNER JOIN localdb.table1 local_1 ON local_1.column_1 = link_serv.column_1 但

我正在使用openquery从本地SQL server实例查询链接的Oracle服务器。问题是,在链接实例中执行时,我希望限制基于本地DB中的表(大约10k行)返回的结果。通常情况下,我会用另一种方式来做,比如:

SELECT * 
FROM OPENQUERY(DBlinked, 'SELECT…') link_serv
    INNER JOIN localdb.table1 local_1 
    ON local_1.column_1 = link_serv.column_1 
但是,由于在对整个数据集执行openquery(具有1亿行的多个表)时,链接表的大小会受到影响,因此使用联接在本地进行子设置不是一个好主意

我试图在openquery中引用回本地服务器,但由于该表位于本地文件上,因此它找不到该表,并且我没有链接服务器的写入权限,因此将本地表移到链接服务器会有问题

任何关于如何在所有连接之前限制结果的指导都将不胜感激。使用openquery并不是一项要求——它只是我发现的唯一一个优雅的解决方案,用于处理针对大型链接表的资源密集型查询。
基本上我想做的是

SELECT * FROM OPENQUERY(oracleDB, '
    SELECT * 
    FROM dbo.table1 Ot
INNER JOIN Local_SQLServ.DB1.DBO.Table1 St
ON St.Column1 = Ot.column1’)

你能这样做吗?:还是像这样@谢谢你的回复。第一个链接建议使用分布式查询,但由于涉及的表的大小,我认为这不是一个现实的选择。几乎所有的工作都是在链接的oracle服务器上完成的,我只需要将其用于本地数据库中的10k记录。第二个链接实际上是我的第一个代码段。尽管这两种方法都可以工作,但它们也会返回完整的数据集,然后在本地数据库上限制结果。我希望找到一个更优雅的解决方案,然后再把5-7亿行表拉过来。你能从本地表中构建一个ID为的
IN()
吗?