Access 作為 Client/Server 架構的優秀前端工具,處理大量資料時效能受限於網路頻寬與 Jet/ACE 引擎。將商務邏輯下推至資料庫伺服器(SQL Server/Oracle)執行,再由 Access 呼叫預存程序,是經典的效能優化策略。本文整理三種呼叫模式。
job_list 表插入作業記錄 → SQL Server Task Manager / Oracle DBMS_JOB 定期輪詢 → 執行對應預存程序。AFTER INSERT/UPDATE/DELETE 觸發器 → Access 異動資料 → 觸發器自動啟動預存程序。Access 傳遞查詢 可直接將 T-SQL/PL-SQL 指令送至伺服器執行,繞過 Jet/ACE 引擎解析。
ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS 或使用 建立器 圖形化設定。EXEC sp_CalculateBill @CustID=123 或 BEGIN pkg_bill.calc(123); END;。CurrentDb.Execute "qryPassThroughCalcBill" 或設定 ReturnsRecords 屬性處理結果集。| 維度 | 排程作業 | 觸發器 | Pass-Through |
|---|---|---|---|
| 即時性 | 低 (排程週期) | 高 (同交易) | 高 (同步呼叫) |
| 資料量 | 大 (百萬級) | 小/中 | 中 |
| 前端阻塞 | 無 | 無 (同交易內) | 有 (同步等待) |
| 除錯難度 | 中 (排程日誌) | 高 (觸發器隱性) | 低 (直接 SQL) |
| 維護性 | 佳 (集中管理) | 差 (分散觸發器) | 佳 (SQL 可見) |