如何解决复制中发布服务器和订阅服务器内容不一致的问题

在事务复制的过程中,有时候会由于各种各样的原因导致发布服务器和订阅服务器的数据不一致,造成这种情况往往是由于以下几种原因之一:

某个Agent运行出现错误或者Agent进程崩溃

比较大型的发布是使用了备份还原,而不是快照复制初始化,而备份后发布端修改了数据

非Distribution Agent线程修改了订阅服务器的数据

上面三种情况是最常见的导致发布端和订阅端数据不一致的原因,其中第三种原因往往出现的最多,在这种情况下,通常来说,可以通过重新初始化订阅来解决该问题,但对于比较大的订阅来说,或者发布和订阅之间相隔太远而造成网络宽带的问题,则重新初始化订阅就不是那么吸引人的提案了。因此通过数据对比分析工具来比对有差异的数据,并仅仅更新那些和源不同步的数据则是更好的选择。

这类工具包括类似Redgate和xSql的数据对比工具,也可以使用Visual Studio自带的数据对比工具进行,下面我通过一个简单的Demo来展示如何解决该类问题。

DEMO

目前我已经建立好一个发布服务器和订阅服务器,发布服务器CAREYSON-SQL发布了示例数据库AdventureWorks的SalesOrderDetail整张表,订阅服务器sqlazur\sql2012订阅了该表,如图1所示。

图1.基本的复制信息

此时,我在订阅服务器人为的删除数据,造成发布服务器和订阅服务器的数据不一致,如图2所示。

图2.在订阅端手动删除数据,造成不一致

我们再来服务端验证订阅,如图3所示。

图3.验证订阅

时间: 2024-09-21 12:01:36

如何解决复制中发布服务器和订阅服务器内容不一致的问题的相关文章

SQL Server复制中错误处理

在SQL Server的复制中出现在错误"应用复制的命令时在订阅服务器上找不到该行",换上以前的做法就是删除掉这个复制,然后再新建一个复制,但是这次,我突然想BAIDU一下,看看别人是怎么处理这个问题的,然后发现找到的文章都是从MSDN上抄下来的,因此我决定把我的做法写下来. 首先查MSDN,确定这个错误的ID为20598,这个下面会用到:确定了错误ID之后,有两种方法可以跳过这个错误 第一种是使用"右键->复制->分发服务器属性->默认配置文件->然

SQL Server 2012 复制(发布订阅的研究)

原文:SQL Server 2012 复制(发布订阅的研究) 已实现发布订阅功能,可以实现局域网内双击备份. 一.注意事项: a) 使用[事务复制]功能 b) 必须是相同的SqlServer 帐号和密码 c) 要开始发布订阅时,有时需要在发布里[查看快照代理状态],点击[启动] d) 服务名称需要手动解析IP,需要实际的服务名称才能推送数据,不能用IP(这个会有提示),可以在发布和订阅服务器的host文件增加对"订阅或发布服务器数据库服务名称",才可以连接到订阅服务器,host文件在s

SQL Server从备份初始化的事务复制中添加发布项目

有时候,您可能首先从备份初始化了一个事务订阅,然后你又需要添加一个项目(Article).如果订阅方是由快照初始化的,你可以重新运行快照代理产生新的快照,其中只有新添加的那个项目被BCP出然后在订阅方BCP入.但是,如果是使用备份/还原建立的订阅,其快照代理是不起作用的. 因而,在这种情况下,当一个新建表需要被新添加进发布时有两种方式: 1.只为那一个项目创建新发布.使用发布向导或脚本,并选择默认选项向订阅服务器推送一个新的快照.同一个发布数据库上的多个发布共享一个日志读取代理,而各个分发代理将

JavaScript中发布/订阅模式的简单实例

 1.Observer模式要求希望接收到主题通知者的观察者必须订阅内容改变的事件. 2.Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于订阅者和发布者之间.该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值.其目的是避免订阅者和发布者产生依赖关系. 与Observer模式不同之处在于它允许任何订阅者执行适当的事件处理程序来注册和接收发布者发出的通知. 好吧,不明觉厉.下面是我的理解: 1.观察者模式中,目标对象负责维护观

JavaScript中发布/订阅模式的简单实例_javascript技巧

上次研究观察者模式,很多文章说它也叫Subscribe/Publish(发布/订阅模式).可在<Javascript设计模式>一书中,这两种模式还是有些区别的.书中原话如下: 1.Observer模式要求希望接收到主题通知者的观察者必须订阅内容改变的事件. 2.Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于订阅者和发布者之间.该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值.其目的是避免订阅者和发布者产生依赖关系.

求救!!在Arcgis9.2 ArcCatalog 中发布Map server时出现错误。求解决方法!

问题描述 如题,在ArcCatalog中发布Mapserver时出现错误,在添加machine时出错提示:Machineisnotavalidservercontainer.Error:(-8003)YourArcGISServerlicensehasexpired.点击取消之后在ArcCatalog的列表中还是显示出了添加的那个机器.不管三七二十一,继续做下去,在发布的时候,又出现了这样的错误!错误提示:ServerhasnoassociatedSOCmachinesorallSOCmachi

RHEL/CentOS 7 中配置 PXE 网络启动服务器

RHEL/CentOS 7 中配置 PXE 网络启动服务器 PXE服务器--预启动执行环境--指示客户端计算机直接从网络接口启动.运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它可以减轻你网络中多台机器同时安装Linux发行版的工作. 在RHEL/CentOS 7中设置PXE网络启动 前置阅读 CentOS 7最小化安装步骤 RHEL 7最小化安装步骤 在RHEL/CentOS 7中配置静态IP地址 移除RHEL/CentOS 7中不要的服务 安装NTP服务器以设置RHEL/C

如何解决局域网中网络邻居访问响应“慢”

  网络中的问题主要出在硬件和软件两个方面,局域网中"慢"的问题也要从这两个方面来解决. 一.硬件方面: 首先"来硬的"吧.决定网络速度的硬件无非是网卡.集线器和网线. 1.网卡 早期的以太网卡大都是10M,现在10M/100M网卡已经取代10M网卡大行其道了,况且千兆网卡也已经面世.所以,如果你还是用的10M网卡,我劝你还是换一下吧. 2.集线器 集线器是网络的中心元件,所有的数据都要经过它分配给其它计算机.普通集线器即HUB由于其工作方式落后于交换式集线器(交换

平板-发布系统后,服务器IP地址隐藏问题

问题描述 发布系统后,服务器IP地址隐藏问题 比如:服务器的IP地址218.230.48.38,端口号用80端口或者其他端口,比如8060端口, 访问系统网页地址为 http://218.230.48.38, http://218.230.48.38:8060,都能访问,我想让外界其他人访问这个地址,但又不想让他们知道服务器真实的ip地址, 不知道有什么办法没有??? (如果是免费的vpn,需兼容xp,win7,win8,手机,平板),求高手指教!!! 解决方案 可以使用反向代理服务器,那么用户