你目前正处于脱机状态,正在等待 Internet 重新连接

FIX: 放在发布服务器上的表上的一个外键约束不会删除在订阅服务器上 SQL Server 2005 合并复制中表上

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 938825
BUG #: 50001169 (SQL 修补程序)

Microsoft 将 Microsoft SQL Server 2005 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。
概要
本文介绍以下有关此修补程序版本:
  • 通过此修补程序包修复的问题
  • 安装此修补程序包的先决条件
  • 在安装此修补程序包后是否必须重新启动计算机
  • 此修补程序包是否替换任何其他修补程序包
  • 是否必须进行任何注册表更改
  • 修补程序包中包含的文件
症状
在 Microsoft SQL Server 2005 合并复制中,您在发布服务器上删除外键约束的表上。发布服务器和订阅服务器之间数据同步后,复制合并代理程序不会在订阅服务器上删除外键约束表上。

当在相关的表在发布服务器和订阅服务器不属于 dbo 架构时,就会出现此问题。
原因
由于复制合并代理程序运行在订阅服务器上的查询不正确,会出现此问题。复制合并代理程序在运行查询时 OBJECT_ID 函数将返回 NULL。然后,EXISTS IF 语句,返回 FALSE。因此,复制合并代理程序不能运行 DROP CONSTRAINT 语句。

以下是复制合并代理程序运行在订阅服务器上的查询的示例:
IF EXISTS (SELECT * from sysconstraints WHERE constid = OBJECT_ID (N'[FK_DETAIL_TO_MASTER]')) IF OBJECT_ID (N'[Test].[Detail]') IS NOT NULL EXEC ('ALTER TABLE [Test].[Detail] DROP CONSTRAINT FK_DETAIL_TO_MASTER')
解决方案

更新信息

此修补程序包括在累积更新包 2 (内部版本 3175) 为 SQL Server 2005 Service Pack 2 (SP2)。

若要解决本文所述的问题,请按照下列步骤操作:
  1. 安装 SQL Server 2005 SP2。
  2. 安装累积更新包 2 (内部版本 3175) SQL Server 2005 SP2 的。
有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
913089如何获取最新的 service pack,SQL Server 2005 年
936305对于 SQL Server 2005 Service Pack 2 的累积更新包 2 不可用

修补程序信息

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

系统必备组件

您必须具有要应用此修补程序安装的 SQL Server 2005 SP2。

重新启动信息

您没有重新启动计算机。

修补程序替换信息

任何其他修补程序不替换此修补程序。

注册表信息

您不必更改注册表。

文件信息

此修补程序仅包含那些文件解决本文列出了该问题所必需的。此修补程序不能包含将产品完全更新到最新版本所必需的所有文件。

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的 日期和时间 项中的 时区 选项卡。
32 位版本上的 SQL Server 2005 年
文件的名称文件版本文件大小日期时间平台
Microsoft.analysisservices.dll9.0.3175.01,217,9042007 年六月 14 日15: 05x86
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3175.0296,3042007 年六月 14 日15: 05x86
Msmdlocal.dll9.0.3175.015,948,1442007 年六月 14 日15: 05x86
Mssqlsystemresource.ldf不适用524,2882007 年六月 14 日11: 22不适用
Mssqlsystemresource.mdf不适用40,173,5682007 年六月 14 日11: 22不适用
Odsole70.dll2005.90.3175.059,2482007 年六月 14 日15: 05x86
Rdistcom.dll2005.90.3175.0644,9762007 年六月 14 日15: 05x86
Replmerg.exe2005.90.3175.0320,8802007 年六月 14 日15: 05x86
Replrec.dll2005.90.3175.0784,7522007 年六月 14 日15: 05x86
Sqlaccess.dll2005.90.3175.0350,5762007 年六月 14 日15: 05x86
Sqlservr.exe2005.90.3175.029,193,0722007 年六月 14 日15: 05x86
Sqlwep.dll2005.90.3175.090,9922007 年六月 14 日15: 05x86
Sqsrvres.dll2005.90.3175.070,5122007 年六月 14 日15: 05x86
Sysdbupg.sql不适用510,6222007 年六月 13 日20: 46不适用
Xpstar90.dll2005.90.3175.0295,7922007 年六月 14 日15: 05x86
SQL Server 2005 年的 x 基于 x64 的版本
文件的名称文件版本文件大小日期时间平台
Microsoft.analysisservices.dll9.0.3175.01,217,9042007 年六月 14 日14: 05x86
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3175.0296,3042007 年六月 14 日14: 05x86
Msmdlocal.dll9.0.3175.015,948,1442007 年六月 14 日14: 05x86
Mssqlsystemresource.ldf不适用524,2882007 年六月 14 日10: 22不适用
Mssqlsystemresource.mdf不适用40,173,5682007 年六月 14 日10: 22不适用
Odsole70.dll2005.90.3175.090,4802007 年六月 14 日16: 41x64
Rdistcom.dll2005.90.3175.0828,7842007 年六月 14 日16: 41x64
Replmerg.exe2005.90.3175.0417,6482007 年六月 14 日16: 41x64
Replrec.dll2005.90.3175.01,011,5682007 年六月 14 日16: 41x64
Sqlaccess.dll2005.90.3175.0357,7442007 年六月 14 日16: 41x86
Sqlservr.exe2005.90.3175.039,674,2242007 年六月 14 日16: 41x64
Sqlwep.dll2005.90.3175.090,9922007 年六月 14 日14: 05x86
Sqlwep.dll2005.90.3175.0123,7602007 年六月 14 日16: 41x64
Sqsrvres.dll2005.90.3175.083,3122007 年六月 14 日16: 41x64
Sysdbupg.sql不适用510,6222007 年六月 13 日19: 46不适用
Xpstar90.dll2005.90.3175.0546,6722007 年六月 14 日16: 41x64
SQL Server 2005 Itanium 体系结构版本
文件的名称文件版本文件大小日期时间平台
Microsoft.analysisservices.dll9.0.3175.01,217,9042007 年六月 14 日15: 05x86
Microsoft.sqlserver.maintenanceplantasks.dll9.0.3175.0296,3042007 年六月 14 日15: 05x86
Msmdlocal.dll9.0.3175.049,904,4962007 年六月 14 日19: 56IA 64
Mssqlsystemresource.ldf不适用524,2882007 年六月 14 日11: 22不适用
Mssqlsystemresource.mdf不适用40,173,5682007 年六月 14 日11: 22不适用
Odsole70.dll2005.90.3175.0179,5682007 年六月 14 日19: 56IA 64
Rdistcom.dll2005.90.3175.01,885,5522007 年六月 14 日19: 56IA 64
Replmerg.exe2005.90.3175.0957,2962007 年六月 14 日19: 56IA 64
Replrec.dll2005.90.3175.02,145,1362007 年六月 14 日19: 56IA 64
Sqlaccess.dll2005.90.3175.0352,1122007 年六月 14 日19: 56x86
Sqlservr.exe2005.90.3175.072,530,8002007 年六月 14 日19: 56IA 64
Sqlwep.dll2005.90.3175.090,9922007 年六月 14 日15: 05x86
Sqlwep.dll2005.90.3175.0221,0402007 年六月 14 日19: 56IA 64
Sqsrvres.dll2005.90.3175.0147,3122007 年六月 14 日19: 56IA 64
Sysdbupg.sql不适用510,6222007 年六月 13 日20: 46不适用
Xpstar90.dll2005.90.3175.0957,2962007 年六月 14 日19: 56IA 64
替代方法
要变通解决此问题,手动在订阅服务器上放置外键约束表上。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。
更多信息

重现此问题的步骤

  1. 通过使用一个不是 dbo 架构的架构中创建两个表。
  2. 创建外键约束引用另一个表中的列的表上。

    注意您在创建外键约束时使用的不是 dbo 架构架构创建外键约束。
  3. 发布这两个表。

    注意当您发布了的表请确保您执行以下操作:
    • 指定的主键约束和外键约束复制到订阅服务器。
    • 指定是所有者 dbo 用户以外的其他文章的 目标对象的所有者 属性。
  4. 初始化订阅。
  5. 删除外键约束在发布服务器上。
  6. 运行合并代理程序将发布服务器和订阅服务器之间数据同步。
参考
有关命名 SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

警告:本文已自动翻译

属性

文章 ID:938825 - 上次审阅时间:11/20/2007 17:47:05 - 修订版本: 1.4

Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Express Edition with Advanced Services, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems

  • kbmt kbautohotfix kbhotfixserver kbexpertiseadvanced kbqfe kbfix KB938825 KbMtzh
反馈