首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

RDA 實作 SQL Server CE 與桌面版 SQL Server 雙向資料同步

     編輯:關於SqlServer

Remote Data Access (RDA) 是 SQL Server CE 2.0 內建的輕量級同步機制,讓 Pocket PC (PPC) 等 Windows CE 裝置能透過 HTTP/HTTPS 協定,經由 IIS 與桌面端 SQL Server 2000 進行資料推拉。本文完整說明架構、元件、開發步驟與程式碼範例。

架構總覽

[Pocket PC 裝置]                          [桌面伺服器]
┌─────────────────────────┐      HTTP/HTTPS      ┌─────────────────────────┐
│  SQL Server CE          │ ◄──────────────────► │  IIS + SQL Server       │
│  ┌───────────────────┐  │                      │  ┌───────────────────┐  │
│  │ Database Engine   │  │                      │  │ SQL Server CE     │  │
│  │ Replication Obj   │  │                      │  │ Server Agent      │  │
│  │ RDA Object        │  │                      │  │ (ISAPI DLL)       │  │
│  └───────────────────┘  │                      │  └───────────────────┘  │
└─────────────────────────┘                      └─────────────────────────┘
        ▲                                                 ▲
   本地 .sdf 檔案                                 SQL Server 資料庫

三大運作環境

環境角色必要元件
開發環境建置智慧裝置專案VS.NET 2003 / eMbedded Visual Tools 3.0 + Pocket PC SDK
用戶端環境執行應用程式Pocket PC 裝置 + SQL Server CE + ActiveSync (離線同步用)
伺服器環境提供同步服務IIS + SQL Server 2000 (同機或分離部署)

核心元件職責

  • Database Engine:管理裝置端資料儲存,追蹤 INSERT/UPDATE/DELETE 變更
  • SQL Server CE Client Agent:裝置端連線元件,包含 Replication 物件、RDA 物件、Database Engine
  • SQL Server CE Server Agent:IIS 上的 ISAPI 延伸模組 (sscesa20.dll),處理 HTTP 請求、連接 SQL Server、回傳資料列集

RDA 物件核心方法

VB.NET 智慧裝置專案完整範例

1. 參考設定

專案 → 加入參考 → System.Data.SqlServerCe.dll (通常在 \Program Files\Microsoft SQL Server 2000 Windows CE Edition\)

2. Pull 程式碼:下載伺服器資料

Imports System.Data.SqlServerCe

Public Sub PullData()
    Dim rda As New SqlCeRemoteDataAccess()
    rda.InternetUrl = "https://desktop-server/sqlce/sa_ppc.dll"  ' Server Agent URL
    
    Dim connStr As String = "Data Source=\My Documents\MyData.sdf;Password='pwd'"
    
    Try
        ' 下載查詢結果到本地 Customers 表 (不存在會自動建立)
        rda.Pull(
            "Customers",                    ' 本地資料表名
            "SELECT * FROM Customers",      ' 伺服器查詢
            connStr,                        ' 本地連接字串
            SqlCeRemoteDataAccess.RdaOptions.Default
        )
        MessageBox.Show("資料下載完成,筆數: " & GetLocalCount())
    Catch ex As SqlCeException
        MessageBox.Show("RDA 錯誤: " & ex.Message)
    Finally
        rda.Dispose()
    End Try
End Sub

3. Push 程式碼:上傳本地變更

Public Sub PushData()
    Dim rda As New SqlCeRemoteDataAccess()
    rda.InternetUrl = "https://desktop-server/sqlce/sa_ppc.dll"
    
    Dim connStr As String = "Data Source=\My Documents\MyData.sdf;Password='pwd'"
    
    Try
        ' 推送本地 Customers 表變更至伺服器
        rda.Push(
            "Customers",    ' 本地資料表名 (需有主鍵)
            connStr,
            SqlCeRemoteDataAccess.RdaOptions.Default
        )
        MessageBox.Show("資料上傳完成")
    Catch ex As SqlCeException
        MessageBox.Show("推送失敗: " & ex.Message)
    Finally
        rda.Dispose()
    End Try
End Sub

4. SubmitSQL 程式碼:伺服器端執行任意 SQL

Public Sub ExecuteServerSQL()
    Dim rda As New SqlCeRemoteDataAccess()
    rda.InternetUrl = "https://desktop-server/sqlce/sa_ppc.dll"
    
    Dim serverConn As String = "Provider=SQLOLEDB;Data Source=desktop-server;Initial Catalog=Northwind;User ID=sa;Password=pwd"
    
    Try
        rda.SubmitSQL(
            "UPDATE Customers SET ContactName = 'New Name' WHERE CustomerID = 'ALFKI'",
            serverConn
        )
    Catch ex As SqlCeException
        MessageBox.Show("伺服器 SQL 執行失敗: " & ex.Message)
    Finally
        rda.Dispose()
    End Try
End Sub

RDA vs 合併式複寫 選擇指南

方法用途關鍵參數
Pull從伺服器下載資料到本地SQL 查詢、本地資料表名、連接字串、RDA 選項
Push上傳本地變更到伺服器本地資料表名、連接字串、RDA 選項
SubmitSQL在伺服器執行 SQL 陳述式SQL 陳述式、連接字串
特性RDA合併式複寫
架構複雜度簡單 (單向 Pull/Push)複雜 (雙向、衝突解決)
離線衝突處理無 (最後寫入者勝)完整 (優先順序、自訂解決器)
資料量適用性中小量、簡單結構大量、複雜關聯
開發努力低高
頻寬優化基本壓縮、增量

部署檢核清單

  1. [ ] IIS 安裝並啟用 ISAPI 延伸模組
  2. [ ] 虛擬目錄對應 C:\Program Files\Microsoft SQL Server 2000 Windows CE Edition\Server\
  3. [ ] sscesa20.dll 註冊正確 (執行 regsvr32 sscesa20.dll)
  4. [ ] SQL Server 啟用 TCP/IP、命名管道
  5. [ ] 防火牆開放 HTTP (80) / HTTPS (443) 連接埠
  6. [ ] ActiveSync 設定正確 (USB/紅外線/藍牙同步備用)
  7. [ ] 裝置端 .sdf 檔案密碼與伺服器連接字串驗證通過

結語

RDA 以簡單易用著稱,適合「偶爾連線、資料結構單純、衝突機率低」的行動應用。若需雙向複寫、衝突解決、大量資料增量同步,請投資合併式複寫架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved