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

Access 資料庫即時同步至 SQL Server 架構設計方案

     編輯:關於SqlServer

需求分析

  • 現有系統使用 **Access (Jet/ACE) 資料庫** 作為後端。
  • 需開發 **JSP Web 應用** 讀取資料,效能與並發考量決定遷移至 **SQL Server**。
  • **核心需求**:Access 資料 **即時/近即時** 同步至 SQL Server,Web 端查詢 SQL Server。

可行架構方案對比

方案架構說明即時性複雜度成本建議場景
1. 連結資料表 (Linked Tables)Access 前端保留,後端連結 SQL Server 資料表 (ODBC);Access 直接讀寫 SQL Server即時低低Access 應用邏輯簡單、無複雜 VBA、可接受 ODBC 延遲
2. SQL Server 複寫 (合併/交易式)Access 作為發行者/訂閱者 (需 ODBC/OLE DB),定期/持續同步近即時 (秒~分)中中需離線/多站點同步、衝突解決
3. SSIS / DTS 定時 ETL排程作業 (每分鐘/每小時) 抽取 Access → 轉換 → 載入 SQL Server批次 (分鐘~小時)中低可接受延遲、資料量中等、需清洗轉換
4. 觸發器 + Linked ServerAccess 無觸發器;改為 **SQL Server 側輪詢** 或 **Access 應用層雙寫**即時 (雙寫) / 近即時 (輪詢)高中既有 Access 應用不可大幅修改、需精確同步
5. 完整遷移 (冷/熱切換)一次性移轉結構與資料,應用程式改連 SQL Server (Upsizing Wizard/SSMA)即時 (切換後)高 (測試驗證)高 (一次性)長期策略、Access 限制 (2GB/並發/安全) 成為瓶頸

推薦漸進式實施路徑

  1. 評估與原型:使用 **SQL Server Migration Assistant for Access (SSMA)** 評估相容性、轉換結構、試跑資料移轉。
  2. 雙寫過渡期:修改 Access 應用 (VBA/表單) 於關鍵寫入操作同步呼叫 SQL Server (ADO 連結資料表或 Passthrough Query),讀取漸進切換至 SQL Server 連結表。
  3. 驗證與切換:平行運行 1-2 週,比對資料一致性、效能指標、使用者回饋。
  4. 全面切換:Access 前端改為純連結 SQL Server,或重寫為 Web/.NET 應用;淘汰本地 .mdb/.accdb。

關鍵技術細節

SSMA 遷移工具

  • 免費下載:Microsoft SSMA for Access。
  • 支援:結構轉換 (資料類型映射、索引/約束/關聯)、資料遷移、應用程式碼評估 (VBA → T-SQL/ C# 建議)。

Access 連結 SQL Server 表 (ODBC)

  1. Access → 外部資料 → ODBC 資料庫 → 連結資料表。
  2. 建立 System DSN (SQL Server Native Client),驗證選 SQL Server 驗證 (專用帳號)。
  3. 連結後表名加前綴 dbo_,VBA 代碼需調整參考。

JSP 連線 SQL Server (JDBC)

// context.xml (Tomcat JNDI)


// JSP 使用
DataSource ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/MyDB");
Connection conn = ds.getConnection();

常見坑點與對策

問題對策
AutoNumber → Identity 種子不一致SSMA 遷移時選擇「保留 Identity 值」或遷移後重設 DBCC CHECKIDENT
日期時間精度差異Access DateTime (無毫秒) → SQL datetime2(0) 或 smalldatetime
Yes/No → bit 映射Access -1/0 → SQL 1/0,應用層邏輯需調整
Memo/Long Text → nvarchar(max)SSMA 自動處理;注意舊版 text/ntext 已淘汰
並發鎖定差異Access 頁面鎖定 → SQL 列級鎖定/行版本,死鎖模式不同,需壓測驗證

總結建議

**長期最佳方案是完整遷移至 SQL Server**,利用 SSMA 降低風險,分階段驗證切換。若短期必須共存,採用「Access 連結 SQL Server 表 + JSP 直連 SQL Server」混合模式,資料實際存放於 SQL Server,Access 僅作為前端介面,避免雙向同步的複雜性與一致性風險。

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