我有以下查询我必须与之交谈的链接服务器。
选择 * 从
OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA ')
它通常会返回大部分数据,但缺少某些行?
链接服务器来自 oracle 客户端
这是有人在使用 openquery 时遇到过的问题吗?
小智 5
我遇到了完全相同的问题。
根本原因是您使用 ODBC 而不是 OLE DB 设置了链接服务器。
这是我修复它的方法:
现在转到“安全”选项卡,然后单击最后一个单选按钮“使用此安全上下文:”并输入连接的用户名和密码
应该是这样!
这似乎与底层提供程序的功能有关,其他提供程序也遇到了这种限制和类似的大小/行限制。一种可能的解决方法是实现迭代/循环查询,并内置一些过滤来拉回一定数量的行。对于oracle,我认为这可能是使用rownum(对oracle不是很熟悉)。
所以像
--Not tested sql, just winging it syntax-wise
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum between 0 AND 500')
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum between 500 AND 1000')
SELECT * FROM OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA where rownum ...')
Run Code Online (Sandbox Code Playgroud)
BOL: 链接 这取决于 OLE DB 提供程序的功能。尽管查询可能返回多个结果集,但 OPENQUERY 仅返回第一个结果集。
| 归档时间: |
|
| 查看次数: |
9811 次 |
| 最近记录: |