文章編號: 815281 - 上次校閱: 2007年12月12日 - 版次: 8.3

在大型交易處理期間 「 檔案共用鎖定計數 exceeded… 」 錯誤訊息

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

當一或多個使用者處理許多交易在多重使用者環境中的時,交易可能會失敗並出現下列錯誤訊息:
檔案共用已超過鎖定計數。增加 MaxLocksPerFile 登錄項目。

發生的原因

如果執行異動所需的鎖定數目超過最大的數字的每個檔案的鎖定,就會發生這個錯誤。

其他可行方案

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756? (http://support.microsoft.com/kb/322756/ ) 如何備份和還原在 Windows 登錄


如果要解決這個問題,增加 [最大數目的每個檔案鎖定]。如果要執行此動作使用其中一個下列的方法。

方法 1: 設定登錄機碼來 MaxLocksPerFile 增加鎖定每個檔案的最大數目

  1. 按一下 [開始],然後按一下 [執行]。
  2. 輸入 regedit,然後按一下 [確定]
  3. 使用適合的方法:
    • 在 Microsoft Access 2000,在 Microsoft Access 2002 及在 32 位元 Windows 作業系統執行的 Microsoft Office Access 2003 中,使用 「 登錄編輯程式 」 來找出下列登錄機碼:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0

      在 Microsoft Access 2000,在 Microsoft Access 2002 及 64 位元 Windows 作業系統執行的 Microsoft Office Access 2003 中,使用 「 登錄編輯程式 」 來找出下列登錄機碼:
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
    • 在 Microsoft Office Access 2007 在 32 位元 Windows 作業系統上執行的使用 「 登錄編輯程式 」 來找出下列登錄機碼:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

      在 Microsoft Office Access 2007 在 64 位元 Windows 作業系統上執行的使用 「 登錄編輯程式 」 來找出下列登錄機碼:
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
  4. 在右窗格的 「 登錄編輯程式中,加倍按一下 MaxLocksPerFile
  5. 在 [編輯 DWORD 值] 對話方塊中上, 按一下 [十進位]。
  6. 修改所需,[數值資料] 方塊的值,然後按一下 [確定]
附註這個方法會變更 Windows 登錄設定,對於使用 Microsoft Jet 資料庫引擎版本 4.0 的所有應用程式。

方法 2: 使用 SetOption 方法來暫時變更 MaxLocksPerFile

附註 本文中的範例程式碼使用 Microsoft 資料存取物件。這個程式碼正確地執行,您必須參考 Microsoft DAO 3.6 物件程式庫。以執行這項操作,按一下 引用項目 在 [工具] 功能表中 Visual Basic 編輯器] 中,請確定已選取 Microsoft DAO 3.6 物件程式庫] 核取方塊。

SetOption 方法暫時覆寫預設的每個檔案的鎖定數量。當您設定 MaxLocksPerFile 登錄機碼時,您可以設定每個檔案的預設數目的鎖定。使用 SetOption 方法設定新的值。新的值是有效的直到您關閉 DBEngine 物件。若要將方法 2 請依照下列步驟執行:
  1. 開啟 [Microsoft Access]。
  2. 開啟一個資料庫,然後按下 Alt + F11,啟動 Visual Basic 編輯器。
  3. Microsoft Visual Basic-<資料庫名稱 >-[<模組名稱 > (程式碼)] 視窗,在 [檢視] 功能表中按一下 [即時運算視窗
  4. 即時運算視窗,輸入下列程式碼。
    DAO.DBEngine.SetOption dbmaxlocksperfile,15000
  5. 按下 ENTER 鍵以執行一行程式碼。

    附註這會暫時將 MaxLocksPerFile 值設定為 15,000。
若要處理大型交易,設定 MaxLocksPerFile 值以符合您需求,然後再執行 [工作階段中的 [交易。

您使用 SetOption 方法來對 MaxLocksPerFile 設定所做的變更都只針對目前的工作階段。

其他相關資訊

[MaxLocksPerFile 設定決定的鎖定 Microsoft Jet 會放置對檔案最大數目。預設 MaxLocksPerFile 值為 9,500。不過,並不會變更此值如果您正在 Novell NetWare 伺服器上因為最大的伺服器記錄鎖定,每個連線是 10,000。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
305995? (http://support.microsoft.com/kb/305995/ ) 錯誤"3050 無法鎖定檔案"當您連線至 Novell 伺服器上的 Jet 資料庫

?考

如需更多的資訊,請造訪下列 「 Microsoft 知識庫 」 文件:
198633? (http://support.microsoft.com/kb/198633/ ) 同步處理在 Access 2000 中的兩個複本時,收到 「 檔案共用鎖定計數超過 」 錯誤訊息
209940? (http://support.microsoft.com/kb/209940/ ) 「 有不是足夠的磁碟空間或記憶體 」 時,出現錯誤訊息在 Access 2000 執行一項作業在資料表上

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