ACC2000: 最佳化用戶端/伺服器效能

文章翻譯 文章翻譯
文章編號: 208858 - 檢視此文章適用的產品。
進階: 須具備專家編碼、 互通性,與多使用者技能。

本文只適用於 Microsoft Access 資料庫 (.mdb)。

全部展開 | 全部摺疊

在此頁中

結論

本文將列出在 Microsoft Access 中的開放式資料庫連接 (ODBC) 資料來源的效能最佳化的秘訣。

注意: 本文假設您已熟悉用戶端/伺服器環境和架構。

其他相關資訊

存取資料的方法

若要存取與用戶端/伺服器應用程式的伺服器資料,您可以使用一或多個下列方法:

  • 連結的資料表和檢視表
  • 傳送直接到伺服器的 SQL 陳述式的 SQL 傳遞查詢
  • Access 專案中

連結的資料表和檢視表

處理伺服器資料最有效率的方式,是連結資料表和檢視表從您的伺服器。Microsoft Access 會儲存連結資料表的欄位和索引資訊。當您開啟資料表時,這可以改善效能。

注意: 如果您對欄位或索引伺服器上的進行變更,您必須重新連結遠端資料表中存取。

執行 SQL 傳遞查詢

在許多應用程式中,您可以建立遠端資料表為基礎的 Microsoft Access 查詢,並也建立 SQL 通過查詢。通過查詢具有下列優點:
  • Microsoft Access 不會編譯通過查詢。將它查詢直接傳送到 ODBC 伺服器。這可以加速應用程式。
  • 存取會通過查詢傳送到伺服器完全一樣輸入它。因此,在伺服器上會發生更多的處理程序,並且透過網路交換較少的資料。
  • 表單、 報表和 Microsoft Access 查詢可以根據使用連結的 ODBC 資料表的通過查詢。
  • 您可以使用程式碼中有沒有對等用法的 SQL Server 特定功能 (例如預存程序和伺服器架構內建函式)。
  • 更新、 刪除和附加通過查詢會比依據連結的遠端資料表,尤其是當許多記錄會受到影響的巨集指令查詢更快的動作。
通過查詢會有下列缺點:
  • SQL 通過查詢一定會傳回無法更新的快照集。Microsoft Access 查詢通常會傳回動態集,以反映其他使用者所做的變更,並可被更新。
  • 您需要將指令直接鍵入 [SQL 通過查詢] 視窗中以您的伺服器要求的語法。您無法設計在查詢設計格線中的通過查詢。
  • 如果您需要使用通過查詢參數,您必須在程式碼中執行查詢,並且修改查詢的 [SQL] 屬性。 如需詳細資訊,以及如何修改 [SQL] 屬性的範例,按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    232493ACC2000: 如何模擬中 SQL 通過查詢的參數

從伺服器要求較少的資料

要求資料從伺服器成本處理時間。效能的最佳化要求只那些 [記錄] 和 [您需要的欄位。

請減少例如文字方塊、 下拉式方塊、 清單方塊和子表單的繫結控制項的數目。開啟表單時這些控制項的每個個別查詢傳送至伺服器。

如果連結的 ODBC 資料表有備忘或 OLE 物件欄位,可設定的欄位的 [看得見] 屬性為 [否],然後新增切換按鈕來 看得見] 屬性設定為 [是],如此使用者可以選擇檢視它。

某些連結的資料表不會經常變更。例如資料表,其中包含名稱和 50 狀態的縮寫會不經常變更。可以加快載入的表單,並減少伺服器負載,藉由儲存這些資料表的本機複本。您也可以提供一種方法較新的資料,從伺服器更新本機複本。

最佳化查詢

最佳化查詢 (在伺服器上新增適當的索引) 後主體的方法確保處理會在伺服器上的發生。您應該避免由 「 伺服器如 Microsoft Access 的特定函式或使用者定義函數不支援的功能。如需有關什麼必須在本機處理的詳細資訊,請參閱 Microsoft Jet 資料庫引擎 ODBC 連接本白皮書 (如需有關這份白皮書的詳細資訊,請參閱本文稍後 < Microsoft Jet 資料庫引擎 ODBC 連線白皮書 」 一節)。

若要讓傳送到伺服器的 Select 陳述式中,您可以設定 [TraceSQLMode 設定。如果要將此設定請依照下列步驟執行:
  1. 按一下 [開始] 功能表,然後按一下 [執行]。
  2. 在 [開啟舊檔] 對話方塊中,輸入 Regedit
  3. 展開方式樹狀子目錄,直到您找出 SOFTWARE\Microsoft\Jet\4.0\Engines 子機碼。
  4. 按一下 [引擎]。
  5. 如果 TraceSQLMode 值並不會顯示在右窗格中,按一下 [編輯] 功能表上的 [新增],然後按一下 [DWORD 值]。
  6. 在右窗格中的名稱,] 下鍵入新值 TraceSQLMode
  7. 以新的值,仍然選取,按一下 [編輯] 功能表上的 [修改]。
  8. 基底 下, 選取 [小數點]。數值資料] 方塊中鍵入 1,再按 [確定]
如需有關 [TraceSQLMode] 設定的詳細資訊,按一下 [說明] 功能表上的 [Microsoft Access 的 [說明],並在 「 Office 小幫手 」 或 「 解答精靈 」 中輸入 TraceSQLMode 」 然後按一下 [搜尋] 以檢視主題。

TryJetAuth 設定

TryJetAuth 設定會控制是否 Microsoft Access 首先嘗試登入您的伺服器使用 Microsoft Access 登入 ID 和密碼。(依預設值,Microsoft Access 登入識別碼是"admin"而密碼為空白])。 如果這個命令失敗則 Microsoft Access 會提示您輸入登入 ID 及密碼。除非設定 Microsoft Access 會使用與 ODBC 伺服器相同的登入 ID 和密碼,加入一行"TryJetAuth = 0 」 至 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth 機碼的登錄。這可以防止 Microsoft Access 嘗試登入錯誤的 ID。要這麼做,請您執行下列步驟:
  1. 按一下 [開始],然後按一下 [執行]。
  2. 在 [開啟舊檔] 對話方塊中,輸入 Regedit
  3. 找出方式樹狀子目錄。
  4. 展開方式樹狀子目錄,直到您找出下列子機碼:
    SOFTWARE\Microsoft\Jet\4.0\ODBC\TryJetAuth
  5. 按一下 [引擎]。
  6. 如果 TryJetAuth 值不存在,按一下 [編輯] 功能表上的 [新增],然後按一下 [DWORD 值
  7. 在右窗格中的名稱,] 下鍵入新值 TryJetAuth
  8. 以新的值,仍然選取,按一下 [編輯] 功能表上的 [修改]。
  9. 基底 下, 選取 [小數點]。數值資料] 方塊中鍵入 1,再按 [確定]

加上時間戳記

在支援如 Microsoft SQL Server 的伺服器時間戳記欄位進行更新的記錄更有效率。時間戳記欄位由伺服器維護,且在更新即記錄更新每一次。

如果您時間戳記欄位 Microsoft Access 必須檢查只從伺服器中唯一的索引] 及 [若要查看筆記錄是否已經變更,因為它是最後一個時間戳記欄位擷取。否則,Microsoft Access 必須檢查記錄中的所有欄位。如果您將時間戳記欄位加入連結資料表時,重新連結資料表,以通知新欄位的 Microsoft Access。

交易

使用交易在 Visual Basic 中的應用程式 (VBA) 當您更新或插入連結的資料表上的資料錄可以提高效能。 交易可以讓 Jet 資料庫引擎累積多重更新,並將它們寫成單一批次。利用 Microsoft SQL Server 保持簡短的交易,因為它們產生鎖定,讓其他使用者無法讀取目前的交易影響的資料。雖然您可以使用巢狀交易使用 VBA,大部份的伺服器並不支援巢狀的交易。Microsoft Access 會將第一層級交易傳送至伺服器。

最佳化的資料錄集和程式碼

您可以儲存 CacheSizeCacheStart 屬性來設定本機記憶體中動態資料表類型的 資料錄集 物件中所含資料的全部或部份。

快取大小可以介於 5 與 1200年記錄。如果快取大小超過可用的記憶體,多餘的資料錄會散落到暫存磁碟檔案。套用 FillCache 方法會填滿與伺服器資料快取。若要復原快取記憶體,將 CacheSize 屬性為零的設定。

使用資料錄集變數實作您需要將功能。如果您只需要將新的資料錄加入資料錄集,比方說加入與 OpenRecordset 方法 dbAppendOnly 選項。如果您不需要編輯或更新能力,作為您的資料錄集的基礎 SQL 通過查詢。插入和更新資料錄時,最快方法,是在程式碼中使用 SQL 傳遞查詢。

MSysConf 表格

您可以建立表格控制項背景擴展您的伺服器上命名為 MSysConf (此時 Microsoft Access 讀取資料錄從伺服器閒置 (Idle) 時間的匯率)。與此資料表中,您可以設定一次擷取資料的列數和每一個擷取之間的延遲的秒數。如果您遇到過多讀取鎖定在伺服器上,您可以調整表格設定增加背景擴展速度。如果太多網路流量由背景擴展產生,您可以調整這些設定來降低速度。

Microsoft Jet 資料庫引擎 ODBC 連線白皮書

如需詳細資訊的重要來源是 「 Jet 資料庫引擎 ODBC 連接 」 白皮書。這份文件被寫入 Jet 3.0 ; 不過,此資訊仍然適用於 Jet 4.0。這份文件討論 Microsoft Jet 3.0 資料庫引擎,以及如何使用 ODBC。本白皮書可以下載從下列 Microsoft 網站:
http://download.microsoft.com/download/access95/whitep5/1/W98/EN-US/Rjwpv3.exe

Access 專案中

Access 專案會使用 OLEDB 連結至 Microsoft SQL Server 6.5 或 7.0。如果所有 Access 資料庫中的資料庫資料表是連結的資料表,SQL Server 增強您反而可以建立 Access 專案的效能。 然而,如果您的資料庫中包含任何存取資料表此選項不可能。

屬性

文章編號: 208858 - 上次校閱: 2007年3月29日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbdownload kbhowto kbusage KB208858 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:208858
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com