Microsoft 将 Microsoft SQL Server 2008 Service Pack 3 修复作为一个可下载文件进行分发。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 Service Pack 3 修复版本附带的所有修补程序和所有安全修补程序。
症状
请考虑以下情况:
-
在 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 的两个实例上配置数据库镜像。
-
在数据库镜像合作关系中,在主体服务器上对主体服务器上的主体读写数据库配置事务复制发布。 复制初始化已完成,然后与订阅者同步。
-
复制的数据库将从主体服务器故障转移到镜像服务器。 注意 发生这种情况时,以前的镜像服务器将切换角色,并且数据库以读写模式作为新的主体数据库联机。
-
在新的主体实例上将文章添加到发布。 复制初始化已完成,然后与订阅者同步。
-
将另一篇文章添加到出版物。
在这种情况下,你会收到以下错误消息。错误消息 1
由于没有需要初始化的订阅,因此未生成快照。
错误消息 2
消息14058、级别16、状态1、过程 sp_MSrepl_addsubscription_article、行331Cannot 创建订阅,因为订阅已存在于订阅数据库中。 每个订阅数据库中仅允许一个对同一发布的订阅。 删除订阅并在必要时再次添加它。 如果问题仍然存在,则复制元数据可能不正确;有关疑难解答信息,请参阅联机丛书
注意如果故障转移到原始主体实例,然后添加相同的文章,则仍会出现此问题。
解决方案
累积更新信息
SQL Server 2008 R2 Service Pack 2
此问题的修补程序首次在累积更新3中发布。有关如何为 SQL Server 2008 R2 Service Pack 2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2754552 SQL Server 2008 R2 Service Pack 2 的累积更新包3 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 Service Pack 2 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2730301 发布 SQL Server 2008 R2 Service Pack 2 后发布的 SQL Server 2008 R2 版本
SQL Server 2008 R2 Service Pack 1
此问题的修补程序首次在累积更新9中发布。有关如何为 SQL Server 2008 R2 Service Pack 1 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2756574 SQL Server 2008 R2 Service Pack 1 的累积更新包9注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 Service Pack 1 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本
SQL Server 2008 Service Pack 3
此问题的修补程序首次发布于 SQL Server 2008 Service Pack 3 的累积更新7。有关如何获取此累积更新包的 SQL Server 2008 Service Pack 3 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2738350 SQL Server 2008 的累积更新包 7 Service Pack 3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 Service Pack 3 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
有关如何配置复制和数据库镜像的详细信息,请转到以下 MSDN 网站:
如何配置复制和数据库镜像有关数据库镜像的详细信息,请转到以下 MSDN 网站:
解决方法
若要解决此问题,请确定sys 服务器是否正常。在添加项目之前, server_id列和syssubscriptionssrvid 列与活动数据库实例相匹配。注意
-
如果两个列不匹配,则应将项目从列匹配的实例添加到发布。 你可能需要将停机时间安排到将数据库故障转移到合作伙伴实例。
-
如果syssubscriptions表中有多个srvid值,请删除具有不同srvid值的项目,将数据库故障转移到合作伙伴实例,然后再次添加文章。