MSSQLSERVER_9001

적용 대상:SQL Server

세부 사항

attribute
제품 이름 SQL Server
이벤트 ID 9001
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 LOG_NOT_AVAIL
메시지 텍스트 데이터베이스 '%.*ls'의 로그를 사용할 수 없습니다. 관련 오류 메시지의 이벤트 로그를 확인하십시오. 오류를 해결하고 데이터베이스를 다시 시작합니다.

설명

데이터베이스 로그 파일을 사용할 수 없게 되면 오류 9001이 발생합니다. 데이터베이스 로그가 오프라인 상태가 되면 데이터베이스에서 트랜잭션이 발생하지 않도록 하는 심각한 오류가 발생했습니다. 이러한 오류가 발생하려면 데이터베이스를 다시 시작하거나 백업을 복원해야 합니다. 오류는 최종 결과를 보여 주지만 이 상태로 이어진 원인을 설명하지는 않습니다. 다른 문제로 인해 로그를 사용할 수 없으며 기본 문제를 조사해야 합니다. SQL 오류 로그에 오류가 표시되는 방법의 예는 다음과 같습니다.

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

일반적으로 오류 9001은 근본 원인에 대한 보다 구체적인 설명을 제공하는 다른 오류와 함께 발생합니다. 예를 들어 오류 9002, 3313, 3314, 17204(파일에 액세스할 때 OS 오류 표시), 17053(OS 오류 표시), 823이 있습니다.

특정 상황에서 SQL Server는 런타임에 데이터베이스를 다시 시작하고 복구를 수행하려고 시도하거나 자체(전체 서비스)를 다시 시작할 수 있습니다. 자동 데이터베이스 다시 시작에 실패하거나 발생하지 않은 경우 SQL Server를 다시 시작하고 데이터베이스 복구가 데이터베이스를 온라인 상태로 만드는지 확인할 수 있습니다. 그렇지 않은 경우 트랜잭션 로그를 사용할 수 없는 근본 원인을 해결해야 합니다. 다음은 데이터베이스 다시 시작을 보여 주는 오류 메시지 3422의 예입니다.

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

다음 메시지는 SQL Server 다시 시작이 발생하려고 했음을 나타냅니다.

Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

원인

데이터베이스의 트랜잭션 로그는 여러 가지 이유로 사용할 수 없게 될 수 있습니다. 몇 가지 예는 다음과 같습니다.

  • 트랜잭션 로그 파일은 실패했거나 사용할 수 없는 스토리지 디바이스에 있습니다.
  • 실제로 손상된 트랜잭션 로그 파일로 인해 로그 파일에 쓰거나 로그 파일에서 읽을 수 없음
  • TDE(투명한 데이터 암호화)를 통한 암호화/암호 해독 실패로 인해 파일에 액세스할 수 없음
    • Key Vault 서비스에 액세스할 수 없음
    • EKM 공급자 모듈은 성공적인 작업을 방해하는 예외, 오류 또는 기타 문제로 실행됩니다.
  • 트랜잭션 로그에 적용되는 큰 트랜잭션, 낮은 디스크 공간 또는 파일 크기 제한으로 인한 전체 트랜잭션 로그입니다. 오류 9002는 9001 이전의 SQL Server 오류 로그에서 찾을 수 있습니다. 자세한 내용은 MSSQLSERVER_9002 참조하세요 .

사용자 작업

먼저 9001 이전의 오류를 해결합니다. 그런 다음 SQL Server 인스턴스를 다시 시작하여 데이터베이스를 복구합니다(아직 발생하지 않은 경우).

전체 트랜잭션 로그 오류 해결

오류 9001 이전의 오류 9002를 확인할 수 있습니다. 예를 들면 다음과 같습니다.

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'Jul  1 2021  5:51AM'
Database ContosoDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRDAT1ANLYSQL05' with Replica ID: {38a71ff9-f0ee-4737-9255-bb6a73e1c5d5}. This is an informational message only. No user action is required.
Error during rollback. shutting down database (location: 1).

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoDb' (6) is 0% complete (approximately 60466 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

이러한 경우 근본 원인인 전체 트랜잭션 로그를 해결하는 데 집중합니다.

전체 트랜잭션 로그를 해결하려면 전체 트랜잭션 로그 문제 해결(SQL Server 오류 9002)을 참조 하세요.

  • 트랜잭션 로그 공간을 확보하고 해제되지 않은 이유를 확인합니다.
  • 트랜잭션 로그가 있는 디스크 공간 확보
  • 필요한 경우 기존 로그 파일을 확장하거나 새 로그 파일을 추가합니다.

하드웨어 및 OS 문제 해결 및 필요한 경우 백업에서 복원

일반적으로 오류 9001은 트랜잭션 로그 파일이 손상되거나 로그 파일을 사용할 수 없게 만드는 스토리지 디바이스 문제로 인해 발생합니다. 다음은 관찰할 수 있는 오류의 두 가지 예입니다.

스토리지 볼륨을 사용할 수 없게 되고 OS가 "디바이스가 준비되지 않았습니다" 오류를 반환한 예제입니다. 사용할 수 없을 때 디스크가 손상되어 발생한 다른 오류를 볼 수 있습니다. 이러한 예제는 컨텍스트를 제공하므로 오류 9001이 더 큰 문제의 여러 증상 중 하나일 뿐이라는 것을 이해할 수 있습니다.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21(The device is not ready.) to SQL Server during a read at offset 0x000009afde6000 in file 'G:\Data\Files\ContosoDb_4.ldf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Error: 9001, Severity: 21, State: 3.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Starting up database 'ContosoDb'.
Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file G:\Data\Files\ContosoDb.mdf for file number 1.  OS error: 3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "G:\Data\Files\ContosoDb.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
Error: 17207, Severity: 16, State: 1.
FileMgr::StartPrimaryDataFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file 'G:\Data\Files\ContosoDb_0.ndf'. Diagnose and correct the operating system error, and retry the operation.

OS에서 여러 데이터베이스에 액세스할 수 없는 트랜잭션 로그로 이어지는 디바이스 오류를 보고하는 또 다른 예는 다음과 같습니다.

Error: 17053, Severity: 16, State: 1.
SQLServerLogMgr::LogWriter: Operating system error 1117(The request could not be performed because of an I/O device error.) encountered.


Error: 9001, Severity: 21, State: 4.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Always On Availability Groups data movement for database 'ContosoDb' has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.


Error: 9001, Severity: 21, State: 16.
The log for database 'tempdb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

동시에 Windows 시스템 이벤트 로그는 스토리지 디바이스 오류를 보고합니다.

Warning       NODEDB1 129     pvscsi     Reset to device, \Device\RaidPort2, was issued.
Warning       NODEDB1 153     Disk       The IO operation at logical block address 0xxxxxxxx for Disk 4 (PDO name: \Device\0000007f) was retried.

이러한 문제를 해결하려면 다음을 수행합니다.

  • 데이터베이스 및 로그 파일이 있는 스토리지 볼륨이 온라인 상태이고, 컴퓨터에서 스토리지로의 전체 I/O 경로가 안정적이고 안정적이며 물리적 파일 손상으로 이어지지 않도록 합니다.
  • 하드웨어 및 디바이스 제조업체와 협력하여 하드웨어 및 해당 구성이 데이터베이스 시스템의 I/O 요구 사항에 적합한지 확인합니다. I/O 경로의 디바이스 드라이버, 펌웨어, BIOS 및 기타 지원 소프트웨어 구성 요소가 최신 상태인지 확인합니다.
  • 다시 시작한 후 온라인 상태로 만들 수 있는 경우 DBCC CHECKDB를 실행하여 데이터베이스의 일관성을 확인합니다.
  • 데이터베이스 및 로그 파일이 그대로 유지되지 않고 결과적으로 데이터베이스가 온라인 상태가 될 수 없는 경우 마지막으로 알려진 데이터베이스 백업을 복원합니다.
  • 제안 문제를 해결하려면 MSSQLSERVER 오류 823DBCC CHECKDB에서 보고한 데이터베이스 일관성 오류 문제 해결을 참조하세요.

TDE 암호화 또는 설명 오류 해결

외부 EKM(확장 가능 키 관리)/HSM(하드웨어 보안 모듈) 서비스 또는 공급자를 사용하는 경우 서비스에서 제공하는 모듈이 안정적이고 업데이트되었는지 확인합니다. EKM/HSM 공급자 공급업체와 협력하여 파일의 암호화/암호 해독을 수행하는 모듈과 관련된 문제를 해결합니다.

이 문제가 발생할 때 SQL 오류 로그에서 다음과 같은 증상이 나타날 수 있습니다.

**Dump thread - spid = 0, EC = 0x0000023FDA293320
***Stack Dump being sent to F:\Data\MSSQL13.INST1\MSSQL\LOG\SQLDump0007.txt
* *******************************************************************************
*
* BEGIN STACK DUMP:
*   11/22/22 12:04:58 spid 1
*
* Crypto Exception
*

00007FFBA0C81791 Module(ntdll+0000000000051791)
Stack Signature for the dump is 0x00000000D3AC1708
External dump process return code 0x20000001.  External dump process returned no errors.

Error: 15466, Severity: 16, State: 28.
An error occurred during decryption.
Error: 9001, Severity: 21, State: 16.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.