다음을 통해 공유


오류 3313, 3314, 3414 또는 3456 문제 해결(SQL Server)

SQL Server 데이터베이스에 대해 다시 실행, 실행 취소 또는 복구 작업을 수행하는 동안 오류가 발생하여 데이터베이스가 SUSPECT 상태로 설정됩니다. 이러한 오류로는 3313(로그 다시 실행 오류), 3314(로그 실행 취소 오류), 3414(데이터베이스를 다시 시작하지 못하도록 하는 복구 오류) 및 3456(로깅된 트랜잭션에 대한 다시 실행 오류)이 있습니다.

설명

다시 실행, 실행 취소 또는 복구 중에 오류가 발생하여 데이터베이스가 SUSPECT 상태로 설정되는 이유는 기본 파일 그룹과 다른 파일 그룹에 문제가 있으며 이들 파일 그룹이 손상되었을 수 있기 때문입니다. 이 경우 데이터베이스를 사용할 수 없으며 사용자가 적절한 조치를 취해 문제를 해결해야 합니다.

[!참고]

tempdb에 대해 이 오류가 발생하면 SQL Server 인스턴스가 종료됩니다.

사용자 동작

다시 실행, 실행 취소 또는 복구 중의 오류는 일시적인 상태에 의해 발생할 수도 있고 데이터베이스를 시작할 때마다 발생하는 영구적인 오류로 인해 발생할 수도 있습니다.

[!참고]

이러한 오류 상태가 발생하면 SQL Server는 일반적으로 SQL ServerLOG 폴더에 3개의 파일을 생성합니다. SQLDumpnnnn.txt 파일에는 트랜잭션에 대한 세부 정보와 문제가 발생한 페이지를 비롯하여 오류와 관련된 고급 진단 정보가 포함됩니다. 이 정보는 일반적으로 제품 지원 팀에서 오류 원인을 분석하는 데 사용됩니다.

오류 3313, 3314, 3414 또는 3456의 지정된 발생에 대한 원인을 확인하려면 Windows 이벤트 로그에서 구체적인 오류를 나타내는 이전 오류를 조사하십시오. Windows 이벤트 로그에 포함된 정보가 나타내는 SQL Server 오류의 원인(일시적인 상태 또는 영구적인 오류)에 따라 적절한 사용자 동작이 달라집니다.

일시적인 상태의 경우:

  1. 다음 ALTER DATABASETransact-SQL 문을 실행하여 데이터베이스를 온라인 상태로 설정해 봅니다.

    ALTER DATABASE <database name> SET ONLINE;
    
  2. 복구가 제대로 완료되었으며 데이터베이스가 온라인 상태로 설정되었는지 확인하려면 SQL Server 오류 로그sys.databases 카탈로그 뷰를 확인합니다.

  3. 데이터베이스가 온라인 상태이면 DBCC CHECKDBTransact-SQL 문을 실행하여 데이터베이스에 일관성이 있는지 확인합니다.

영구적인 오류의 경우:

SQL Server 오류 로그에서 문제를 해결하려는 오류(3313, 3314, 3414 또는 3356)를 확인한 다음 오류 앞의 메시지를 검토하여 오류를 수동으로 해결할 수 있는지 확인합니다. 이전 오류를 해결할 수 있는 경우 다음 절차 중 하나를 수행합니다.

  • 다음과 같이 데이터베이스를 복원 및 확인합니다(권장 절차).

    1. 비상 로그 백업을 수행합니다.

    2. RESTORE …WITH NORECOVERY Transact-SQL 문을 사용하여 전체 데이터베이스 백업에서 데이터베이스를 복원한 다음 필요한 경우 차등 데이터베이스 백업에서 데이터베이스를 복원합니다.

    3. 전체 복구 모델을 사용하는 데이터베이스의 경우 RESTORE LOG … WITH NORECOVERY를 사용하여 오류 지점까지 전체 또는 차등 백업을 복원한 이후에 발생한 모든 트랜잭션 로그 백업을 적용합니다.

    4. 데이터베이스가 오류 지점에 최대한 가깝게 복원되었으면 RESTORE DATABASE <database_name> WITH RECOVERY를 사용하여 데이터베이스를 복구합니다.

    5. 데이터베이스가 온라인 상태가 되면 DBCC CHECKDBTransact-SQL 문을 실행하여 데이터베이스의 일관성을 확인합니다.

  • 이 섹션 앞부분에서 일시적인 오류의 경우에 대해 설명한 단계를 통해 데이터베이스를 온라인으로 설정합니다.

  • 다음과 같이 응급 모드를 사용합니다.

    1. 다음 ALTER DATABASETransact-SQL 문을 실행하여 데이터베이스를 EMERGENCY 상태로 전환합니다.

      ALTER DATABASE <database_name> SET EMERGENCY; 
      
    2. ALTER DATABASE 문과 SQL Server 오류 로그의 출력을 검토합니다.

    3. sys.databases 카탈로그 뷰에서 데이터베이스의 상태를 확인합니다.

    4. DBCC CHECKDB 문을 사용해 데이터베이스에 대해 일관성 검사를 수행하여 손상의 특성과 범위를 파악합니다.

    5. DBCC CHECKDB의 출력을 평가한 후에 REPAIR_ALLOW_DATA_LOSS 옵션으로 DBCC CHECKDB를 실행할 수 있습니다.

      주의 사항주의

      이 옵션을 사용하기 전에 SQL Server 온라인 설명서의 DBCC CHECKDB(Transact-SQL) 항목에서 데이터베이스 응급 모드의 오류를 해결하는 방법에 대한 정보를 주의 깊게 검토하십시오.

[!참고]

오류 3313, 3314, 3414 또는 3356과 관련된 하드웨어 문제에 대응하는 방법은 MSSQLSERVER_824를 참조하십시오.

이 오류를 방지하기 위한 단계

이러한 상황이 다시 발생하지 않도록 하려면 다음을 수행합니다.

  1. SQL Server 오류 로그 및 Windows 이벤트 로그에서 이 오류의 원인일 수 있는 시스템 차원 문제를 검토합니다.

  2. 제품에서 이 상태를 유발하는 것으로 알려진 문제가 발생하지 않도록 현재 보유한 SQL Server 버전의 최신 누적 업데이트를 적용합니다.