由于关系数据库的机制要求合并复制数据同步时需要有良好的自治性,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列,该列是合并复制用于确认行的唯一依据,因此该列有如下要求:
该列的添加脚本为:
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
新闻热点
疑难解答