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

Access 前端呼叫 SQL Server/Oracle 後端預存程序三大架構模式

     編輯:PHP 相關知識

Access 作為 Client/Server 架構的優秀前端工具,處理大量資料時效能受限於網路頻寬與 Jet/ACE 引擎。將商務邏輯下推至資料庫伺服器(SQL Server/Oracle)執行,再由 Access 呼叫預存程序,是經典的效能優化策略。本文整理三種呼叫模式。

模式一:排程作業觸發(非即時、大批量)

  • 架構:Access 在 job_list 表插入作業記錄 → SQL Server Task Manager / Oracle DBMS_JOB 定期輪詢 → 執行對應預存程序。
  • 適用:夜間帳單計算、報表彙總、資料封存等低即時性、高資料量作業。
  • 優勢:前端無阻塞、可共用批次邏輯、錯誤重試機制完善。

模式二:觸發器驅動(即時、單筆/小批量)

  • 架構:資料庫建立 AFTER INSERT/UPDATE/DELETE 觸發器 → Access 異動資料 → 觸發器自動啟動預存程序。
  • 適用:修改電表讀數即時重算電費、庫存異動即時更新可用量等高即時性需求。
  • 優勢:邏輯集中於資料庫、前端無需感知、確保資料一致性。

模式三:Pass-Through Query 直連呼叫(彈性、即時)

Access 傳遞查詢 可直接將 T-SQL/PL-SQL 指令送至伺服器執行,繞過 Jet/ACE 引擎解析。

建立步驟

  1. 查詢設計檢視 → 右鍵 → SQL 特定 → 傳遞。
  2. 屬性視窗 → ODBC 連接字串:ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS 或使用 建立器 圖形化設定。
  3. SQL 面板輸入:EXEC sp_CalculateBill @CustID=123 或 BEGIN pkg_bill.calc(123); END;。
  4. VBA 呼叫:CurrentDb.Execute "qryPassThroughCalcBill" 或設定 ReturnsRecords 屬性處理結果集。

模式比較與選型建議

維度排程作業觸發器Pass-Through
即時性低 (排程週期)高 (同交易)高 (同步呼叫)
資料量大 (百萬級)小/中中
前端阻塞無無 (同交易內)有 (同步等待)
除錯難度中 (排程日誌)高 (觸發器隱性)低 (直接 SQL)
維護性佳 (集中管理)差 (分散觸發器)佳 (SQL 可見)

實務經驗提醒

  • 觸發器內避免長時間運算、跨資料庫操作、寄送郵件等副作用,防止擴大交易範圍導致封鎖。
  • Pass-Through 查詢連線字串建議集中管理於 VBA 常數或資料表,避免硬編碼散落。
  • 大量資料匯入優先用 BCP/BULK INSERT,再由排程作業觸發後續處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved