由于關(guān)系數(shù)據(jù)庫(kù)的機(jī)制要求合并復(fù)制數(shù)據(jù)同步時(shí)需要有良好的自治性,SQL Server的合并復(fù)制的應(yīng)用場(chǎng)景相對(duì)比較少。一些典型的應(yīng)用場(chǎng)景比如異地?cái)?shù)據(jù)同步,跨洋的數(shù)據(jù)同步等。由于網(wǎng)絡(luò)延時(shí)以及該種業(yè)務(wù)有相對(duì)比較大的數(shù)據(jù)獨(dú)立性,因此在合并復(fù)制在某些場(chǎng)景會(huì)比較合適。
在一些情況下,合并復(fù)制如果由于某些原因壞掉,需要重新初始化,而由于網(wǎng)絡(luò)帶寬的限制,用快照重新初始化稍微大一點(diǎn)的庫(kù)基本不現(xiàn)實(shí),因此需要考慮使用通過(guò)備份初始化,在初始化過(guò)程中,我遇到了如下錯(cuò)誤:
{call sp_MSsetconflicttable (N'__UserSyncOptions', N'MSmerge_conflict_Main___UserSyncOptions', N'DB/MAIN', N'DB1', N'Main')}
Incorrect syntax near 'Id'.
后來(lái)通過(guò)排查發(fā)現(xiàn),疏忽了關(guān)鍵步驟,因此在此寫(xiě)下從備份初始化合并復(fù)制的正確姿勢(shì):
1.為需要合并復(fù)制的表添加唯一的RowGuid列,該列是合并復(fù)制用于確認(rèn)行的唯一依據(jù),因此該列有如下要求:
該列的添加腳本為:
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
新聞熱點(diǎn)
疑難解答
圖片精選