当您尝试从 64 位 SQL Server 客户端上运行分布式的查询到链接的 32 位 SQL Server 时,您可能会收到一条错误消息

文章翻译 文章翻译
文章编号: 906954 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

产生错误的场景如下:链接的服务器定义为 32 位 Microsoft SQL Server 2000instance 或 aSQL 使用sp_addlinkedserver服务器 7.0instance 如存储过程或一种工具,将调用此过程。然后,您尝试运行 that64 位 SQL 服务器以通过 SQL Server 2000年或 SQL Server 7.0 的 32 位链接的服务器的分布式的查询。在这种情况下,您可能会遇到下列症状之一:
  • 如果 32 位 SQL Server 2000年服务器尚未升级到 SQL Server 2000 Service Pack 3 (SP3) 或 SQL Server 2000年服务包 4(SP4),您将收到以下错误消息:
    ODBCcatalog 存储过程在服务器上安装<LinkedServerName>areversion <OldVersionNumber>;<NewVersionNumber>版或更高版本的 isrequired,以确保正确操作。请与系统管理员联系。</NewVersionNumber> </OldVersionNumber> </LinkedServerName>
  • 您将收到一条错误消息,如果下面的 conditionsare true:
    • SQL Server 2000 SP3 或 SQL Server 2000 SP4 安装在 32 位 SQL Server 2000年服务器上,或者您使用链接的 SQL Server 7.0 服务器。
    • 版本的系统在 32 位 SQL Server 2000年服务器上的存储过程或 SQL Server 7.0 服务器上是不同的服务器已安装的服务包版本。
    会类似于以下错误信息:
    完成此项操作无法在服务器上的 notbe 找到所需的存储的过程。请与系统管理员联系。
    Msg7311,16,状态 2 级行 1
    无法获取架构行集"DBSCHEMA_TABLES_INFO""<LinkedServerName>"的链接服务器的 OLE DB 提供程序"SQLNCLI"。提供程序支持该接口,但使用时返回 afailure 代码。 </LinkedServerName>
注意如果您使用链接的 SQL Server 2000年服务器和服务器尚未升级到 SQL Server 2000 SP3 或 SQL Server 2000 SP4,则必须首先安装 SQL Server 2000 SP3 或 SQL Server 2000 SP4。

原因

发生此问题是由于系统存储服务包安装过程中未升级的 proceduresare。通过运行 instcat.sql,手动必须升级安装 SQL Server 2000 Service Pack (SP3) 或 SQL Server 2000 Service Pack 4 (SP4) 后的系统存储过程。

解决方案

若要解决此问题,请备份 master 数据库然后手动运行 Instcat.sql 脚本包含与 SQL Server 2000 SP3 或 SP4 32 位 SQL Server 2000年服务器上或在 SQL Server 7.0 实例上。不重新启动 SQL Server 的是必需的。

通过使用 Osql.exe 运行 Instcat.sql 的示例:

使用 Windows 身份验证模式

若要使用 Windows 身份验证模式升级系统存储过程或 SQL Server 7.0 服务器上 SQL Server 2000年的 32 位实例,请按照下列步骤操作:
  1. 通过使用 SQL Server sysadmin固定的服务器角色的 amember 的 Windows 帐户登录到计算机上。
  2. 单击运行键入cmd.exe然后单击确定
  3. 在命令提示符下,键入以下命令之一,然后按 ENTER:

    对于默认实例
    osql -E -S <LinkedServerName> -i <Location>\instcat.sql
    对于命名实例
    osql -E -S <LinkedServerName>\<InstanceName> -i <Location>\instcat.sql
    注意<LinkedServerName></LinkedServerName>,<InstanceName></InstanceName><Location></Location> 表示链接的服务器名称和实例名称,包含 theInstcat.sql 脚本的文件夹的完整路径。默认情况下,此文件夹是 C:\Program 使用 SQLServer\MSSQL\Install。
使用 SQL Server 身份验证模式

若要使用 SQL Server 身份验证模式升级系统存储过程或 SQL Server 7.0 服务器上 SQL Server 2000年的 32 位实例,请按照下列步骤操作:
  1. 通过使用任何 Windowsaccount 登录到计算机上。
  2. 单击运行键入cmd.exe然后单击确定
  3. 在命令提示符下,键入以下命令,然后 thenpress enter 键:

    对于默认实例
    osql -U <AdminLogin> -P <AdminPassword> -S <LinkedServerName> -i <Location>\instcat.sql
    对于命名实例
     
    osql -U <AdminLogin> -P <AdminPassword> -S <LinkedServerName>\<InstanceName> -i <Location>\instcat.sql
    
    注意<AdminLogin></AdminLogin><AdminPassword></AdminPassword> 表示用户 accountthat 是 SQL Server sysadmin固定的服务器角色的成员。
注意运行 Instcat.sql 脚本后,会生成很多消息。最后一条消息指示是否已成功运行该脚本。

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

属性

文章编号: 906954 - 最后修改: 2014年6月20日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 标准版
关键字:?
kbsqlsetup kbsql2005connect kbprb kbmt KB906954 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 906954
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com