SQL Server 中的 openquery 问题

Posted

技术标签:

【中文标题】SQL Server 中的 openquery 问题【英文标题】:openquery issue in SQL Server 【发布时间】:2010-06-17 12:36:36 【问题描述】:

我正在使用 SQL Server 2008(让我们在这个问题讨论中调用这个源数据库服务器),并且在 SSMS 中,我创建了一个链接服务器到另一个 SQL Server 2008 数据库(让我们在这个问题中调用这个目标数据库服务器讨论)。

当我发出语句--select * from [linked server name].[database name].[dbo].[table name]时,会返回错误,

Linked server "ZS" The OLE DB access interface "SQLNCLI10" returned "NON-CLUSTERED and NOT
INTEGRATED "Index" ix_foo_basic_info_nf ", which is incorrect bookmark ordinal 0.

当我发出语句--select * from openquery([linked server name],'select * from [table name]') 时,不会有错误,有什么问题吗?

提前致谢, 乔治

【问题讨论】:

【参考方案1】:

是否为链接服务器提供程序设置了Index As Access Path 选项?如果是这样,请尝试删除它,看看它是否能解决问题。

【讨论】:

“索引作为访问路径”?对我来说是新的。 :-(如何检查以及为什么它会导致我描述的问题但openquery没有问题? 这个选项可以在Server Objects>Linked Servers>Providers中找到,然后右键单击>Properties。它设置查询是否将使用链接服务器索引来尝试检索数据。不确定 openquery,但我猜它从不使用索引。 您在设置链接服务器时使用了哪个提供程序。我认为在你的情况下它应该是 SQLOLEDB。 这取决于您设置了哪一个。也许你应该看看每一个是什么,找到你用过的那个。 如果您有链接服务器,则您正在使用其中一个提供程序。

以上是关于SQL Server 中的 openquery 问题的主要内容,如果未能解决你的问题,请参考以下文章

SELECT * FROM MySQL Linked Server 使用没有 OpenQuery 的 SQL Server

使用 OPENQUERY 语法通过链接服务器 (SQL Server 2005) 调用 MySQL 存储过程(带参数)的问题

如何使用 OpenQuery 在 SQL Server 中创建别名 (IBM DB2)

SQL链接服务器查询-OPENQUERY的使用

sqlserver过程中使用openquery 修改oracle数据时,存储过程中断,oracle的值被改为null

SQL: OPENQUERY 问题