SQL Server 2005 Mobile Edition (SQL Server Mobile) 提供兩種與中央 SQL Server 交換資料的機制:合併複寫與遠端資料存取 (RDA)。兩者皆透過 IIS 以 HTTP/HTTPS 傳輸,支援 LAN/WAN/ActiveSync 連線,並內建壓縮與加密。選型關鍵在於:應用程式是否需要離線自主更新、衝突解析、多表同步、結構變更支援等進階功能。
| 維度 | 合併複寫 | RDA |
|---|---|---|
| 連線協定 | HTTP/HTTPS via IIS | HTTP/HTTPS via IIS |
| 驗證方式 | Windows 整合 / SQL Server 驗證 | Windows 整合 / SQL Server 驗證 |
| 伺服器端變更 | 需建立發行集、新增系統資料表、唯一識別碼欄位 | 零結構更,無侵入性 |
| 用戶端控制權 | 發行集定義於伺服器,訂閱者被動接收 | 用戶端主動指定 Pull/Push 的資料表、篩選條件 |
Pull 僅能處理單一資料表。用戶端程式碼控制要下載哪些資料列與欄位,彈性高但需自行管理多表同步邏輯。DROP TABLE 後重新 Pull,導致本地變更遺失風險。| 特性 | 合併複寫 | RDA |
|---|---|---|
| 追蹤層級 | 列層級 / 欄位層級(可選) | 僅列層級(本地變更) |
| 雙向增量同步 | 完整支援:伺服器與用戶端各自追蹤變更 | 單向增量:用戶端→伺服器;伺服器→用戶端需完整重新整理 |
| 衝突偵測 | 內建:列/欄位層級衝突偵測 | 無衝突偵測,採「最後寫入者勝出」 |
| 衝突解析 | 內建解析器(優先權、平均值等)+ 自訂解析器 (COM) | 不支援,僅記錄錯誤至衝突表 |
| 應用需求 | 推薦方案 | 理由 |
|---|---|---|
| 多表關聯資料、需離線編輯、衝突解析 | 合併複寫 | 完整雙向同步、衝突管理、結構變更支援 |
| 單表/少量表、唯讀或單向更新、無衝突 | RDA | 零伺服器變更、輕量、開發彈性高 |
| 無法變更後端資料庫結構(第三方系統) | RDA 或中介層複寫 | RDA 零侵入;或架設中介 SQL Server 做複寫,再用 DTS/Web Service 推回後端 |
| 需 Identity 自動管理、FK 完整性 | 合併複寫 | 內建識別範圍、約束傳播 |
| 簡單查詢/報表資料下載、無本地寫入 | RDA | Pull 機制簡單直接 |
實務上可同一應用程式混用兩種技術:
合併複寫是「功能完整的企業級同步引擎」,適合複雜離線業務;RDA 是「輕量級資料搬運工具」,適合簡單單向同步。選型核心在於:是否需要雙向增量同步與衝突解析? 若是 → 合併複寫;否 → 評估 RDA 或混合策略。SQL Server Mobile 透過 IIS 通道的設計,使兩者皆能無縫穿越防火牆與 Proxy,成為行動應用的堅實後盾。