"파일 공유 잠금 수를 초과했습니다..." 큰 트랜잭션 처리 중 오류 발생

증상

하나 이상의 사용자가 다중 사용자 환경에서 많은 트랜잭션을 처리하는 경우 다음 오류 메시지와 함께 트랜잭션이 실패할 수 있습니다.

파일 공유 잠금 횟수가 정해진 범위를 벗어났습니다. MaxLocksPerFile 레지스트리 항목을 늘리십시오.

원인

트랜잭션을 수행하는 데 필요한 잠금 수가 파일당 최대 잠금 수를 초과하는 경우 오류가 발생합니다.

해결 방법

중요 이 섹션, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. Windows XP 및 Windows Server 2003에서 레지스트리를 백업, 편집 및 복원하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료를 참조하세요.

322756 Windows에서 레지스트리를 백업 및 복원하는 방법

이 문제를 해결하려면 파일당 최대 잠금 수를 늘입니다. 이렇게 하려면 다음 방법 중 하나를 사용하세요.

방법 1: 레지스트리 키를 MaxLocksPerFile로 설정하여 파일당 최대 잠금 수를 늘입니다.

  1. 시작을 클릭한 다음 실행을 클릭합니다.

  2. 를 입력 regedit한 다음 확인을 클릭합니다.

  3. Access 설치에 따라 다음 레지스트리 키를 찾습니다.

    MSI(Windows Installer) 설치

    • 32비트 버전의 Windows에서 실행되는 32비트 버전의 Access 또는 64비트 버전의 Windows에서 실행되는 Access의 경우

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    • 64비트 버전의 Windows에서 실행되는 32비트 버전의 Access의 경우

      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    간편 실행 설치

    • 32비트 버전의 Windows에서 실행되는 32비트 버전의 Access 또는 64비트 버전의 Windows에서 실행되는 Access의 경우

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    • 64비트 버전의 Windows에서 실행되는 32비트 버전의 Access의 경우

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE

    참고

    <x.0> 자리 표시자는 Office 버전을 나타냅니다(16.0 = Office 2016, Office 2019, Office LTSC 2021 또는 Microsoft 365, 15.0 = Office 2013).

  4. 레지스트리 편집기 오른쪽 창에서 MaxLocksPerFile을 두 번 클릭합니다.

  5. DWORD 값 편집 대화 상자에서 10진수를 선택합니다.

  6. 필요에 따라 값 데이터 상자의 값을 수정한 다음 확인을 선택합니다.

메서드는 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 -<Database Name>-[<Module Name>(코드)] 창의 보기 메뉴에서 직접 실행 창을 선택합니다.

  4. 직접 실행 창에서 다음 코드를 입력합니다.

    DAO.DBEngine.SetOption dbmaxlocksperfile,15000

  5. ENTER 키를 눌러 코드 줄을 실행합니다. 이 명령은 일시적으로 MaxLocksPerFile 값을 15,000으로 설정합니다.

대규모 트랜잭션을 처리하려면 요구 사항에 맞게 MaxLocksPerFile 값을 설정한 다음 세션에서 트랜잭션을 실행합니다.

SetOption 메서드를 사용하여 MaxLocksPerFile 설정을 변경한 내용은 현재 세션에만 사용할 수 있습니다.

추가 정보

MaxLocksPerFile 설정은 Microsoft Jet가 파일에 대해 배치하는 최대 잠금 수를 결정합니다. 기본 MaxLocksPerFile 값은 9,500입니다. 그러나 Novell NetWare 서버에서 작업하는 경우 연결당 최대 서버 레코드 잠금이 10,000이므로 이 값을 변경하지 마세요.