通过备份初始化合并复制时的报错的解决

    由于关系数据库的机制要求合并复制数据同步时需要有良好的自治性,SQL Server的合并复制的应用场景相对比较少。一些典型的应用场景比如异地数据同步,跨洋的数据同步等。由于网络延时以及该种业务有相对比较大的数据独立性,因此在合并复制在某些场景会比较合适。

    在一些情况下,合并复制如果由于某些原因坏掉,需要重新初始化,而由于网络带宽的限制,用快照重新初始化稍微大一点的库基本不现实,因此需要考虑使用通过备份初始化,在初始化过程中,我遇到了如下错误:

 

{call sp_MSsetconflicttable (N‘__UserSyncOptions‘, N‘MSmerge_conflict_Main___UserSyncOptions‘, N‘DB\MAIN‘, N‘DB1‘, N‘Main‘)}

Incorrect syntax near ‘Id‘.

 

    后来通过排查发现,疏忽了关键步骤,因此在此写下从备份初始化合并复制的正确姿势:

1.为需要合并复制的表添加唯一的RowGuid列,该列是合并复制用于确认行的唯一依据,因此该列有如下要求:

  • 有唯一约束
  • 有唯一索引
  • 有GUID的默认值Newid()或newsequentialid()
  • 该列Not Null

该列的添加脚本为:

BEGIN TRANSACTION
 
SET QUOTED_IDENTIFIER ON
 
SET ARITHABORT ON
 
SET NUMERIC_ROUNDABORT OFF
 
SET CONCAT_NULL_YIELDS_NULL ON
 
SET ANSI_NULLS ON
 
SET ANSI_PADDING ON
 
SET ANSI_WARNINGS ON
 
COMMIT
 
BEGIN TRANSACTION
 
GO
 
ALTER TABLE 表名称 ADD
 
ROWGUID uniqueidentifier NOT NULL ROWGUIDCOL CONSTRAINT MSmerge_df_rowguid_ DEFAULT (newid())
 
GO
 
ALTER TABLE 表名称 SET (LOCK_ESCALATION = TABLE)
 
GO
 
COMMIT

2. 备份需要初始化的数据库。 (在此期间,请不要备份日志,以防日志链断裂!)

3.  创建发布,并手动生成发布的快照。该步骤十分重要,虽然订阅服务器不需要快照初始化订阅,但是需要快照的元数据!

 
4.  在订阅端还原数据库备份。注意,不能指定KEEP_REPLICATION选项。

 
5.  创建订阅,选项请指定不立即初始化,如果是脚本创建订阅,请指定:@sync_type = N‘None‘

 
6.  手动启动合并代理,以便从发布端同步元数据。至此整个过程完成。

时间: 2024-11-05 20:40:23

通过备份初始化合并复制时的报错的解决的相关文章

ios替换app启动图片时系统报错的解决办法

ios替换app启动图片时系统报错的解决办法:我个人建议是在开发时候经常行的保存项目,并且在修改项目图标图片.app启动图片前,一定要先备份一份没有添加这两项图片的项目. 如果您的项目已经开发完成了,进入到发布前添加项目图标.app启动图片的时候,一定要确定了这两项的所有图片不会更改了再去添加,否则更改已经添加好的加项目图标.app启动图片就会报错, 如果您报错了,百度之后也没有解决办法,那么就尝试在已经备份的项目中重新去添加图片就可以了.

ansible 的copy模块,向ubuntu复制时的报错解决。

copy至ubuntu时,出现这样的问题 /etc/ansible/ansible.cfg[ssh_connection]scp_if_ssh = True 原文地址:http://blog.51cto.com/sonlich/2154270

因为vim编辑文档未保存。再次编辑同一个文件时出现报错的解决

E325: ATTENTIONFound a swap file by the name ".oldboy.txt.swp"owned by: root dated: Sun Dec 23 22:41:46 2018file name: /oldboy/oldboy.txtmodified: YESuser name: root host name: oldboyedu01-nbprocess ID: 8244 (still running)While opening file &qu

redis 集群安装时的报错的解决办法

1.执行 redis-trib.rb create 时报错 这个是由于没有安装redis导致的 安装 ruby 和 rubygems(注意:需要 ruby 的版本在 1.8.7 以上) # yum install ruby rubygems 检查 ruby 版本: # ruby -v ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] gem安装 redis ruby 接口: # gem install redis Successfully

PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。

PostgreSQL添加新的服务器连接时,报错: 解决方法: 第一步:修改配置文件中连接的服务器列表,添加服务器IP地址(图pg002.png) 配置文件地址:数据库右击属性,打开数据库的安装路径在data文件中找到配置文件pg_hba.conf. 如:D:\Program Files\PostgreSQL\9.4\data\pg_hba.conf 注:只要修改IP路径就可以了,‘/’后面的数字都为32. 第二步:修改配置文件后,启动服务器的服务: 启动服务完成,连接服务器,新服务器就可以正常的

Putty使用公钥认证时,报错:Disconnected: No supported authentication methods available(server sent:public key) 问题的解决

Putty使用公钥认证时,按照常规方法设置,一直报错:Disconnected: No supported authentication methods available (server sent:public key). 如截图: 找了半天没找到问题出在哪里,sshd的设置一切正常.这个做过多次居然也能错???? 最后发现原来是 ~/.ssh/authorized_keys 文件的内容有问题,putty生成的pub文件的格式如下: ---- BEGIN SSH2 PUBLIC KEY ---

POST提交时总是报错: {"errcode":40017,"errmsg":"invalid button type"} 解决办法

开发语言:java 开发内容:微信公众号 自定义菜单 开发该连接的项目:点击打开链接 http://blog.csdn.net/blognkliming/article/details/16803093 执行MenuManage.java时报错: POST提交时总是报错:  {"errcode":40017,"errmsg":"invalid button type"} 网上找了很多资料,都没有解决问题.最后,在查看代码时发现,MenuManag

【IDEA】创建maven项目时,报错[FATAL_ERROR] Cannot start Maven: Cannot find JRE '1.7'

在使用IDEA使用maven创建springMVC项目时,出现下面的错误,导致无法创建生成正常的springMVC项目结构,而只有一个pom文件: [FATAL_ERROR] Cannot start Maven: Cannot find JRE '1.7' 原因是:我在默认的setting配置里,File-->Other Setting-->Default Setting对应的maven配置里,设置了runner的VM参数:-DarchetypeCatalog=internal,这里需要用到

新手迷惑:复制文件路径报错java.io.FileNotFoundException

? 被这个问题搞了很久,可能是太基本了,所以很多人都解决不了,自己找了很多网页,都讲得太高深了,解决不了问题.于是乎,自己捯饬了很久,才能清楚这个简单.很简单的问题.还是记录一下,好记性不如烂笔头,方便后来人! ? 问题:复制文件路径报错java.io.FileNotFoundException: (文件名.目录名或卷标语法不正确.) ? 方法就是:复制路径之后,把最前面的空格去掉就是了,加上双引号.. ? ? ? ? ? ? ? ? ? 很基本吧,但是没人告诉你,就有可能自己摸索很久,哎,小问