如何加速異地存取Access應用程式

如何加速異地存取Access應用程式

我在 MS Access 2013 上建立了一個日曆類型的應用程序,以 SQL Server 作為後端(日曆上的每一天都是一個子表單)。大約有20張桌子透過線路連接起來Call AttachDSNLessTable([details here])。現場速度還不錯,但當我嘗試透過 VPN 存取時,加載主螢幕大約需要 6 分鐘。而其他事情至少要花 5 倍的時間才能完成。

我不知道其他選擇。是否可以透過網路存取資料庫?這樣會加快速度嗎?或者我們應該增加VPN的頻寬嗎?我這裡最好的選擇是什麼?謝謝。

答案1

您的通用應用程式架構(使用連結表存取)可能在這個方面有缺陷。它可能可以(大部分)修復,但不能不進行一些修改。

關鍵問題是,當Access作為前端時,Access本身決定是否可以提交整個查詢供SQLServer處理,並且經常得出不能的結論,因此它經常透過下載整個查詢來執行查詢桌。對於聯接來說尤其如此,尤其是在使用的每個表上沒有強主鍵的情況下。

以下是有關使用 SQLServer 後端存取連結表的效能的 MS Technet 文件:https://technet.microsoft.com/en-us/library/bb188204%28v=sql.90%29.aspx

最相關的是:

查詢效能下降的主要原因是當涉及非常大的表的查詢需要將一個或多個表中的所有資料下載到客戶端時。即使連接或條件似乎將結果集限制為少量記錄,也可能發生這種情況。發生這種情況的原因是,有時 Office Access 資料庫引擎確定它無法向 SQL Server 提交整個查詢。相反,它提交多個查詢,通常包括請求表中所有行的查詢,然後組合或過濾客戶端上的資料。如果條件需要本地處理,則即使只應從單一表傳回選定行的查詢也可能會要求傳回表中的所有行。

  • 使用 JET/ODBC 診斷實用程式來確定所有工作正在哪裡完成。
  • 盡可能在存取中使用快照記錄集。
  • 使用視圖和預存程序/函數​​將查詢邏輯推送到 SQLServer。
  • 在 SQLServer 中建立可靠的鍵和索引,並確保根據需要對索引進行碎片整理。
  • 在 Access 中快取常用資料。

上面的連結為處於您位置的人提供了很多很好的建議和技術細節。祝你好運!

相關內容