我有以下查询链接服务器,我必须与之交谈。SQL:OPENQUERY不返回所有行
选择 * FROM
OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA')
它通常会返回大多数的数据,但有一些行?
的linkeds服务器是从Oracle客户端
这是任何人都遇到了W/OPENQUERY一个问题来了吗?
我有以下查询链接服务器,我必须与之交谈。SQL:OPENQUERY不返回所有行
选择 * FROM
OPENQUERY(DWH_LINK, 'SELECT * FROM TABLEA')
它通常会返回大多数的数据,但有一些行?
的linkeds服务器是从Oracle客户端
这是任何人都遇到了W/OPENQUERY一个问题来了吗?
这似乎与底层提供者功能有关,而其他人也遇到了这种类似的大小/行限制。一种可能的解决方法是实现一个迭代/循环查询,其中内置了一些过滤器来撤回一定数量的行。有了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 ...')
BOL: link 这是受OLE DB提供程序的能力。虽然查询可能会返回多个结果集,但OPENQUERY只返回第一个结果集。
我有完全相同的问题。
根本原因是您已经使用ODBC而不是OLE DB设置了链接服务器。
以下是我固定它:
现在转到“安全”选项卡,然后单击上一个单选按钮“使用此安全上下文:”并输入用户名&密码为您的连接
这应该是它!
真棒 - 这是我正是问题。我不能相信ODBC驱动程序会出现这样的错误,但是这种情况,现在它已被纠正:) – SqlRyan 2013-09-19 17:18:53
我们也遇到了这个问题,这是决议。为了增加我们最初的困惑,SELECT *展示的FETCH FIRST行为在WHERE子句使用7列中的3列时显示出来......使用其他4列或在没有WHERE的情况下运行,返回了预期结果。 – 2014-02-21 14:25:31
切换(从ODBC驱动程序的Microsoft OLE DB提供程序)到** Oracle OLE DB **提供程序工作。谢谢。确保您匹配x64 - >(64位Oracle数据访问组件(ODAC)下载)到SQL服务器。谢谢。 – Finkel 2016-02-03 17:57:46
我有使用Oracle 10即时客户端和ODBC的相同问题。我在连接到Oracle 10gR2数据库时使用了此客户端。我在微软的支持下打开了一张票,他们建议使用Oracle 11即时客户端。惊喜!卸载10g即时客户端,安装11g即时客户端并重新启动解决了问题。
肯
有另一种方式来访问数据的其他链接的服务器比使用OPENQUERY – Bill 2010-12-15 21:44:26