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

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 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 真:
    • SQL Server 2000 SP3 或 SQL Server 2000 SP4 安装在 32 位 SQL Server 2000年服务器上,或者您使用链接的 SQL Server 7.0 服务器。
    • 系统的版本的 32 位 SQL Server 2000年服务器上的存储过程或 SQL Server 7.0 服务器上是不同的服务器安装的服务包版本。
    错误消息内容与以下相似:
    完成此项操作无法在服务器上找到丢失所需的存储的过程。请与系统管理员联系。
    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。
原因
发生此问题是由于系统存储未升级作为 service pack 安装的一部分的 proceduresare。通过运行 instcat.sql,手动必须升级安装 SQL Server 2000 Service Pack (SP3) 或 SQL Server 2000 Service Pack 4 (SP4) 后系统存储过程。
解决方案
要解决此问题,请备份 master 数据库然后手动运行 Instcat.sql 脚本所包含的 SQL Server 2000 SP3 或 SP4 或 SQL Server 7.0 实例的 32 位 SQL Server 2000年服务器上。无需重新启动 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 脚本的文件夹的完整路径。默认情况下,此文件夹是该 SQLServer\MSSQL\Install C:\Program。
使用 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 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:906954 - 上次审阅时间:08/17/2015 06:30:00 - 修订版本: 3.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
反馈