【SQLServer】The provider supports the interface

一、问题现象


    SQLserver上有一个Linkserver,在Management Studio可以展开它,可以看到其链接的schema,但是使用select语句查询时,会报如下的错误:

OLE DB provider "SQLNCLI10" for linked server "xxx" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" for linked server "xxx" returned message "The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator.".
Msg 7311, Level 16, State 2, Line 2
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "xxx". The provider supports the interface, but returns a failure code when it is used.


二、原因解析

    若要从 64 位 SQL Server 2005 客户端对 32 位 SQL Server 2000 服务器进行分布式查询,则需要使用 SQL Server 2000 SP3 或更高版本。分布式查询包括对您使用 sp_addlinkedserver 以及 OPENROWSET 和 OPENQUERY 函数定义的链接服务器项的引用。另外,必须在 SQL Server 2000 SP3 和 SP4 服务器上手动升级系统存储过程(也称为目录存储过程)。

如果 32 位实例的 SQL Server 2000 上的目录存储过程的版本未更新为随此 Service Pack 发布的版本,您将收到以下错误消息:

 
"The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator."
Msg 7311, Level 16, State 2, Line 1
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI" for linked server "". The provider supports the interface, but returns a failure code when it is used.


三、解决方法


1、在32位SQL Server 2000服务器安装相应补丁,并升级其系统预存程序

    如果是SQL Server 2005,要在 32 位SQL Server 2000 服务器上安裝 SQL Server 2000 SP3 或 SQL Server 2000 SP4;然后,在 32 位 SQL Server 2000 服务器上手动执行 SQL Server 2000 SP3 或 SP4 随附的 Instcat.sql 脚本。(具体方法参考文末链接

如果是SQL Server 2008,则必须在32位SQL Server 2000服务器上安装SQL Server 2000 SP4;然后,执行Instcat.sql脚本。


2、使用可替代的SQL语句

    SELECT * FROM OPENQUERY(Linkserver, 'select * from ..');


参考文档:

http://blog.itpub.net/9932141/viewspace-521055/

  1. https://dotblogs.com.tw/jamesbi/archive/2010/11/19/19546.aspx (好文)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30776559/viewspace-2148164/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30776559/viewspace-2148164/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值