文章編號: 173006 - 上次校閱: 2007年1月20日 - 版次: 3.1

同步處理期間 ACC: 「 檔案共用鎖定計數 」 發生錯誤

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
重要: 本文包含有關編輯登錄的資訊。 在編輯登錄之前您應該先製作備份的登錄檔案 (System.dat 和 User.dat)。兩者都是在 Windows 資料夾中的隱藏的檔案。

進階: 須具備專家編碼、 互通性,與多使用者技能。

在此頁中

全部展開 | 全部摺疊

徵狀

當您進行同步處理兩個複本可能會收到下列錯誤訊息:
'<Replica1.mdb>' 之間的同步處理,但 '<Replica2.mdb>' 失敗。

檔案共用鎖定計數超過 (錯誤 3052)。
當您執行應用程式會使用同步處理方法的程序的 Visual Basic 時,也可能會發生這個錯誤。

發生的原因

複本集的成員包含太多的變更,以進行同步處理已成功完成。比方說如果其中一個複本有增加的大小由 100 百萬位元組 (MB),因為您已新增大量的新記錄,可能會收到這個錯誤。包含太多變更的複本可能您嘗試同步處理的資料庫,或者也可能是另一個複本集成員。

解決方案

如果您使用的 Microsoft Access 97,您可以利用新的功能,可讓您藉由編輯 Windows 登錄中增加 MaxLocksPerFile 設定值,為 Microsoft Jet 資料庫引擎 3.5。此設定的預設值是 9500。然而,變更此值不建議使用如果其中一個複本位於 Novell Netware 伺服器因為每個連線的伺服器的最大記錄鎖定是 10000。在另外變更此值會導致效能不佳如果其中一個複本位於 3.51 或更早的版本,執行 Windows NT 版本的伺服器上。 如果這兩個複本位於執行 Microsoft Windows NT 版本 4.0 或 Microsoft Windows 95 的伺服器上,此設定的最大值只受限於可用的資源。

警告: 系統登錄所做的修改會被視為 Windows 95 或 Windows NT 作業系統的進階的用法。當進行修改時,應採取極端的照顧。任何不正確或不正確的項目可能會導致作業系統無法使用。

警告: 不當使用 「 登錄編輯器 」 可能會導致嚴重的問題,可能必須重新安裝 Windows 95。Microsoft 不保證所導致的不正確使用登錄編輯程式 」 的問題可以獲得解決。 使用 「 登錄編輯程式 」,請自行負擔相關的風險。

如需有關如何編輯登錄的資訊,檢視變更索引鍵和值 [說明] 主題在 [登錄編輯程式 (Regedit.exe)。請注意您應該製作備份的登錄檔案 (System.dat 和 User.dat) 之前,先編輯登錄。
  1. 請結束部份的 Microsoft Access。
  2. 按一下 [開始] 按鈕,然後按一下 [執行]。
  3. 在 [開啟] 方塊中,輸入 regedit
  4. 找出方式登錄資料夾。
  5. 展開方式資料夾,直到您找出資料夾 SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5。
  6. Jet 3.5 檢視其內容的資料夾上連按兩下。
  7. 選取 MaxLocksPerFile 項目 ; 在 [編輯] 功能表上按一下 [修改]。
  8. 在 [編輯 DWORD 值] 對話方塊中,選取小數,然後增加在 [數值資料] 方塊中。
  9. 按一下 [確定] 以儲存 MaxLocksPerFile 設定。
  10. 結束 [登錄編輯程式]。
  11. 啟動 Microsoft Access 並同步處理複本。

狀況說明

Microsoft 已確認此選項以在 Microsoft Access 97 中有問題。

其他相關資訊

MaxLocksPerFile 設定可讓 Microsoft Jet 資料庫引擎完成大型交易,而不超過指定的記錄鎖定限制。代替超過此限制,Jet 資料庫引擎會將分割成兩個或多個部份交易 ; 其中一部分已經認可後 Jet 資料庫引擎會釋放鎖定,以便可以重複使用。如此一來較少的鎖定必須完成交易。這可避免會限制每次連線到 10000,從損毀超過該值時最大記錄鎖定的 Novell Netware 伺服器。

不過,Jet 資料庫引擎不會不分割交易時它會同步處理兩個複本。如果無法完成交易,除非分割成的部份,MaxLocksPerFile 設定中指定的限制內,您會收到 < 徵狀 > 一節所述的錯誤 ; 不會發生同步處理。

重現問題的步驟

警告: 下列的步驟可能需要向上 400 MB 可用磁碟空間。程序範例填滿具有大量資料的資料表 ; 執行它可能要花很長的期間您 CPU 會是無法使用的時間一段。
  1. 啟動 Microsoft Access 然後開啟新的空白資料庫。
  2. 建立下列表格所示:
          Table: tblTable1
          ---------------------------
          Field Name: ID
             Data Type: Number
             Field Size: Long Integer
          Field Name: Field1
             Data Type: Text
             Field Size: 50
          Field Name: Field2
             Date Type: Text
             Field Size: 50
          Field Name: Field3
             Date Type: Text
             Field Size: 50
          Field Name: Field4
             Date Type: Text
             Field Size: 50
    						
  3. 為 tblTable1 儲存資料表。當問您是否建立主索引鍵,按一下 [否]。
  4. 在 [工具] 功能表上指向 [複寫,然後按一下 [建立複本。 當系統提示您關閉資料庫,按一下 [是]。當提示您製作備份,按一下 [否]。
  5. 在 [新複本的地點] 對話方塊記下新複本的位置和檔案名稱]。按一下 [確定]。
  6. 出現提示時按一下 [確定] 重新開啟資料庫現在是設計主複本。
  7. 開啟新的空白模組,然後輸入下列的程序:
           Function Filler(lngNumRecs As Long)
    
              Dim lngLoopCount As Long
              Dim strFillerString As String
              Dim db As Database
              Dim rs As Recordset
    
              strFillerString = ""
              For lngLoopCount = 1 To 40
                 strFillerString = strFillerString & "x"
              Next lngLoopCount
              Set db = CurrentDb
              Set rs = db.OpenRecordset("tblTable1")
              For lngLoopCount = 1 To lngNumRecs
                 rs.AddNew
                 rs![ID] = lngLoopCount
                 rs![Field1] = strFillerString
                 rs![Field2] = strFillerString
                 rs![Field3] = strFillerString
                 rs![Field4] = strFillerString
                 rs.Update
              Next lngLoopCount
              db.Close
           End Function
    						
  8. 在 [偵錯] 視窗中輸入下列命令:

    ?? Filler(500000)

    注意這個程序可能需要很長的時間來執行,而且可能需要很多達 400 MB 的可用磁碟空間。
  9. 在 [工具] 功能表上指向 [複寫,],然後再按 [立即同步處理]。
  10. 在 [同步處理資料庫] 對話方塊按一下 [確定]。
與訊息同步複本的進度指示器出現,但最後會收到 < 徵狀 > 一節所述的錯誤。

?考

如需有關 [MaxLocksPerFile] 設定的詳細資訊,搜尋"SetOption 方法 」 的 [說明] 索引和顯示主題"SetOption 方法 (DAO)"; 捲動至主題下方] 並按一下連結初始化 Microsoft Jet 3.5 資料庫引擎。

複寫的相關資訊,請參閱以 Microsoft Jet 3.5 複寫白色紙張。請參閱下列文件 「 Microsoft 知識庫 」 中有關取得 Microsoft Jet 3.5 複寫白皮書指示:

164553? (http://support.microsoft.com/kb/164553/EN-US/ ) ACC97: Jet 3.5 複寫白皮書可用在下載中心

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