受限於既有系統仍運行 SQL Server 2000,無法升級至 2005,本文記錄在 **SQL Server 2000 SP3 + SQL Server Mobile Edition (CE 3.0) SP3** 環境下,建立合併式複寫 (Merge Replication) 供 Pocket PC (PPC) 端離線同步的完整步驟與坑點。
sqlcesa30.dll,啟用 HTTPS (生產環境必備)。SQL Server 2000 精靈**無法建立 CE 相容訂閱**,必須在裝置端程式撰寫:
SqlCeReplication repl = new SqlCeReplication();
repl.InternetUrl = "https://server/ce_sync/sqlcesa30.dll";
repl.Publisher = "server";
repl.PublisherDatabase = "PubDB";
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
repl.Publication = "MergePub";
repl.Subscriber = "PPC_Sub";
repl.SubscriberConnectionString =
@"Data Source='\My Documents\data.sdf';Password='pwd';Max Database Size=64;";
repl.AddSubscription(AddOption.CreateDatabase); // 建立本地 .sdf
repl.Synchronize(); // 執行合併同步
| 錯誤訊息 | 原因 | 解決 |
|---|---|---|
| 快照過期 / Snapshot obsolete | 快照代理尚未執行完成即同步 | 調整代理排程為 1 分鐘/次,確認快照狀態為「完成」再同步 |
| 無法連線至發行者 | 防火牆阻擋、IIS 虛擬目錄權限錯誤 | 開放 80/443、確認 sqlcesa30.dll 執行權限、PAL 包含匿名帳戶 |
| 衝突解決失敗 | 同一資料列雙端同時修改 | 設定發行項目衝突解決器 (伺服器勝/用戶勝/自訂 COM) |
MSmerge_conflict_ 系統表中。SQL Server 2000 已停止支援,長期規劃應評估遷移至 **SQL Server 2019/2022 + .NET MAUI / Xamarin** 架構,利用現代合併式複寫或雲端同步服務 (Azure SQL Data Sync) 替代 CE 技術棧。