关于错误编号7311SQLserver链接服务器报错解决办法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLSERVER Msg 7311

今天又遇到一个问题,建立一个Linked Server,在Management Studio可以展开它,看到视图,用select竟查不到数据,而且出现错误:

Msg 7311, Level 16, State 2, Line 1

Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLE DB provider "SQLNCLI10" for linked server "HKSERVER". The provider supports the interface, but returns a failure code when it is used.

查找Microsoft相关说明,有如下说明:

从64 位SQL Server 2005 客户端访问32 位SQL Server 2000 服务器可能会失败

若要从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.

若要解决此问题,则必须对32 位实例的SQL Server 2000 或MSDE 运行该Service Pack 的instcat.sql 脚本。

继续看相关主题如下:

如果要解决这个问题,请在32 位SQL Server 2000 服务器上安装SQL Server 2000 SP3 或SQL Server 2000 SP4;然后,在32 位SQL Server 2000 服务器上手动执行SQL Server 2000 SP3 或SP4 随附的Instcat.sql 脚本。

使用Windows 验证模式

如果要使用「Windows 验证」模式升级SQL Server 2000 的32 位实例上的系统预存程序,请依照下列步骤进行:

以SQL Server sysadmin 固定服务器角色成员的Windows 帐户登入计算机。

单击[执行],输入cmd.exe,然后单击[确定]。

在命令提示字符中输入下列其中一个命令,然后按下ENTER:

对于预设实例

osql -E -S -i \instcat.sql

对于具名实例

osql -E -S \ -i \instcat.sql

注意代表连结的服务器名称、实例名称以及含有Instcat.sql 脚本的文件夹完整路径。根据预设,这个文件夹位于C:\Program Files\Microsoft SQL Server\MSSQL\Install。

使用SQL Server 验证模式

如果要使用「SQL Server 验证」模式升级SQL Server 2000 的32 位实例上的系统预存程序,请依照下列步骤进行:

使用任何Windows 帐户登入计算机。

单击[执行],输入cmd.exe,然后单击[确定]。

在命令提示字符中输入下列命令,再按下ENTER 键:

对于预设实例

osql -U -P -S -i \instcat.sql

对于具名实例

osql -U -P -S \ -i \instcat.sql

于是进一步研究,终于成功

利用openqery语句也可以查询数据

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

相关文档
最新文档