다음을 통해 공유


MSSQLSERVER_1204

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 1204
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 LK_OUTOF
메시지 텍스트 SQL Server 데이터베이스 엔진 인스턴스는 현재 LOCK 리소스를 가져올 수 없습니다. 활성 사용자가 적을 때 실행문을 다시 실행합니다. 데이터베이스 관리자에게 이 인스턴스에 대한 잠금 및 메모리 구성을 검사 장기 실행 트랜잭션을 검사 요청합니다.

설명

실행하는 동안 쿼리는 액세스하는 리소스에 대한 잠금을 자주 획득하고 해제합니다. 잠금을 획득하면 사용 가능한 잠금 구조 풀에서 잠금 구조가 사용됩니다. 풀에서 사용할 수 있는 잠금 구조가 더 이상 없으므로 새 잠금을 가져올 수 없는 경우 오류 1204 메시지가 반환됩니다. 이 문제는 다음과 같은 이유로 인해 발생할 수 있습니다.

  • 다른 프로세스가 메모리를 사용 중이거나 SQL Server가 모든 메모리를 사용하고 구성 옵션 최대 서버 메모리를 사용하여 구성된 값에 도달했기 때문에 SQL Server는 더 많은 메모리를 할당할 수 없습니다.

  • 잠금 관리자는 SQL Server에서 사용할 수 있는 메모리의 60% 이상을 사용할 수 없으며 임계값이 이미 충족되었습니다.

  • 시스템 저장 프로시저 sp_configure(Transact-SQL)의 구성 옵션 잠금을 기본값이 아닌 비동기적 값으로 설정합니다.

  • 잠금 에스컬레이션 동작을 제어하기 위해 SQL Server에서 추적 플래그 1211, 1224 또는 둘 다를 사용하도록 설정했으며 많은 잠금이 필요한 쿼리를 실행하고 있습니다.

사용자 작업

  • SQL Server에서 충분한 메모리를 할당할 수 없는 것으로 의심되는 경우 다음 옵션을 시도해 보세요.

    • SQL Server 내의 다른 메모리 클럭이 다음과 같은 쿼리를 사용하여 SQL Server 구성 메모리의 상당 부분을 사용했는지 확인합니다.

      SELECT pages_kb, type, name, virtual_memory_committed_kb, awe_allocated_kb
      FROM sys.dm_os_memory_clerks
      ORDER BY pages_kb DESC;
      

      그런 다음 잠금 메모리가 더 많은 리소스를 사용할 수 있도록 해당 메모리 클럭의 메모리 사용량을 줄입니다. 자세한 내용은 SQL Server의 메모리 부족 또는 메모리 부족 문제 해결을 참조 하세요.

    • SQL Server 외에 애플리케이션이 리소스를 사용하는 경우 이러한 애플리케이션을 중지하거나 별도의 서버에서 실행하는 것이 좋습니다. 그러면 SQL Server에 대한 다른 프로세스에서 메모리가 해제됩니다.

    • 최대 서버 메모리를 구성한 경우 최대 서버 메모리 설정을 늘입니다.

  • 잠금 관리자가 사용 가능한 최대 메모리 양을 사용한 것으로 의심되는 경우 잠금을 가장 많이 보유하고 있는 트랜잭션을 식별하고 종료합니다. 다음 스크립트는 잠금이 가장 많은 트랜잭션을 식별합니다.

    SELECT request_session_id, COUNT (*) num_locks
    FROM sys.dm_tran_locks
    GROUP BY request_session_id
    ORDER BY count (*) DESC;
    

    가장 높은 세션 ID를 가져와 KILL 명령을 사용하여 종료합니다.

  • 기본값이 아닌 값을 locks사용하는 경우 다음 문을 사용하여 값을 locks 기본 설정으로 변경하는 데 사용합니다sp_configure.

    EXEC sp_configure 'locks', 0;
    
  • SQL Server 추적 플래그 1211, 1224 또는 둘 다를 사용할 때 위의 오류 메시지가 발생한 경우 해당 사용을 검토하고 많은 수의 잠금이 필요한 쿼리를 실행하는 동안 사용하지 않도록 설정합니다. 자세한 내용은 DBCC TRACEON - 추적 플래그(Transact-SQL)를 검토하고 SQL Server의 잠금 에스컬레이션으로 인한 차단 문제를 해결합니다.