suspect_pages 테이블 관리(SQL Server)

적용 대상:SQL Server

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 suspect_pages 테이블을 관리하는 방법에 대해 설명합니다. suspect_pages 테이블은 의심 페이지에 대한 정보를 유지하는 데 사용되며 복원이 필요한지 여부를 결정하는 데 관련이 있습니다. suspect_pages 테이블은 msdb 데이터베이스있습니다.

SQL Server 데이터베이스 엔진이 데이터 페이지를 읽으려고 할 때 다음 오류 중 하나가 발생할 때 페이지는 "의심"으로 간주됩니다.

  • 디스크 오류(특정 하드웨어 오류)와 같이 운영 체제에서 발급한 CRC(순환 중복 검사)로 인해 발생한 823 오류

  • 조각난 페이지와 같은 824 오류(논리적 오류)

모든 주의 대상 페이지의 페이지 ID는 suspect_pages 테이블에 기록됩니다. 데이터베이스 엔진은 다음과 같이 정기적으로 처리하는 동안 발생한 모든 의심 페이지를 기록합니다.

  • 쿼리는 페이지를 읽어야 합니다.

  • DBCC CHECKDB 작업 중.

  • 백업 작업 중.

suspect_pages 테이블은 복원 작업, DBCC 복구 작업 또는 데이터베이스 삭제 작업 중에 필요에 따라 업데이트됩니다.

항목 내용

시작하기 전에

추천

  • suspect_pages 테이블에 기록된 오류

    suspect_pages 테이블에는 최대 1,000개의 행으로 제한되는 824 오류로 실패한 페이지당 하나의 행이 포함되어 있습니다. 다음 표에서는 suspect_pages 테이블의 event_type 열에 기록된 오류를 보여줍니다.

    오류 설명 event_type 값
    운영 체제 CRC 오류로 인한 823 오류 또는 잘못된 체크섬 또는 조각난 페이지(예: 잘못된 페이지 ID) 이외의 824 오류 6
    잘못된 체크섬 2
    조각난 페이지 3
    복원됨(페이지가 잘못된 것으로 표시된 후 복원됨) 4
    복구됨(DBCC에서 페이지를 복구) 5
    DBCC에서 할당 취소됨 7

    suspect_pages 테이블은 일시적인 오류도 기록합니다. 일시적인 오류의 원인으로는 I/O 오류(예: 케이블 연결이 끊김) 또는 반복되는 체크섬 테스트에 일시적으로 실패하는 페이지가 포함됩니다.

  • 데이터베이스 엔진이 suspect_pages 테이블을 업데이트하는 방법

    데이터베이스 엔진은 suspect_pages 테이블에서 다음 작업을 수행합니다.

    • 테이블이 가득 차 있지 않으면 오류가 발생하고 오류 카운터가 증가함을 나타내기 위해 824 오류마다 테이블이 업데이트됩니다. 페이지를 복구, 복원 또는 할당 취소하여 수정한 후 오류가 발생하면 해당 number_of_errors 수가 증가하며 last_update 열이 업데이트됩니다.

    • 나열된 페이지를 복원 또는 복구 작업으로 수정하면 suspect_pages 행이 업데이트되어 페이지가 복구(event_type = 5) 또는 복원(event_type = 4)되었음을 나타냅니다.

    • DBCC 검사를 실행하면 오류가 없는 페이지가 복구됨(event_type = 5) 또는 할당 취소됨(event_type = 7)으로 표시됩니다.

  • suspect_pages 테이블의 자동 업데이트

    데이터베이스 미러링 파트너 또는 Always On 가용성 복제본은 다음 이유 중 하나로 인해 데이터 파일에서 페이지를 읽는 시도가 실패한 후 suspect_pages 테이블을 업데이트합니다.

    • 운영 체제 CRC 오류로 인해 발생하는 823 오류

    • 824 오류(조각난 페이지와 같은 논리적 손상)입니다.

    다음 동작을 수행하면 suspect_pages 테이블에서 행이 자동으로 업데이트됩니다.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS 할당 취소되거나 복구된 각 페이지를 나타내도록 suspect_pages 테이블을 업데이트합니다.

    • 전체, 파일 또는 페이지 복원을 수행하면 페이지 항목이 복원된 것으로 표시됩니다.

    다음 작업은 suspect_pages 테이블에서 행을 자동으로 삭제합니다.

    • ALTER DATABASE REMOVE FILE

    • DROP DATABASE

  • 데이터베이스 관리자의 유지 관리 역할

    데이터베이스 관리자는 주로 오래된 행을 삭제함으로써 테이블을 관리할 책임이 있습니다. suspect_pages 테이블의 크기가 제한되며, 테이블이 채워지면 새 오류가 기록되지 않습니다. 이 테이블이 꽉 차지 않게 하려면 데이터베이스 관리자나 시스템 관리자가 이 테이블에서 행을 삭제하여 오래된 항목을 수동으로 지워야 합니다. 따라서 복원 또는 복구 event_type 있는 행 또는 이전 last_update 값이 있는 행을 주기적으로 삭제하거나 보관하는 것이 좋습니다.

    suspect_pages 테이블에서 활동을 모니터링하려면 데이터베이스 의심 데이터 페이지 이벤트 클래스사용할 수 있습니다. 일시적인 오류로 인해 suspect_pages 테이블에 행이 추가되는 경우도 있습니다. 그러나 많은 행이 이 테이블에 추가되는 경우 I/O 하위 시스템에 문제가 있을 수도 있습니다. 이 테이블에 추가되는 행 수가 갑자기 증가하는 경우에는 I/O 하위 시스템에 발생한 문제가 있는지 조사해 보는 것이 좋습니다.

    데이터베이스 관리자는 레코드를 삽입하거나 업데이트할 수도 있습니다. 예를 들어 데이터베이스 관리자가 특정 주의 대상 페이지가 실제로 손상되지 않은 것으로 알고 있지만 잠시 동안 레코드를 유지하려는 경우 행을 업데이트하는 것이 유용할 수 있습니다.

보안

사용 권한

msdb에 액세스할 수 있는 모든 사용자는 suspect_pages 테이블의 데이터를 읽을 수 있습니다. suspect_pages 테이블에 대한 UPDATE 권한이 있는 모든 사용자는 해당 레코드를 업데이트할 수 있습니다. msdb 또는 sysadmin 고정 서버 역할의 db_owner 고정 데이터베이스 역할 멤버는 레코드를 삽입, 업데이트 및 삭제할 수 있습니다.

SQL Server Management Studio 사용

suspect_pages 테이블을 관리하려면

  1. 개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결하고 해당 인스턴스를 확장한 다음 데이터베이스를 확장합니다.

  2. 시스템 데이터베이스를 확장하고, msdb를 확장하고, 테이블을 확장한 다음, 시스템 테이블을 확장합니다.

  3. dbo.suspect_pages 확장하고 상위 200개 행 편집을 마우스 오른쪽 단추로 클릭합니다.

  4. 쿼리 창에서 원하는 행을 편집, 업데이트 또는 삭제합니다.

Transact-SQL 사용

suspect_pages 테이블을 관리하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예제를 복사하여 쿼리 창에 붙여넣고 실행을 클릭합니다. 다음은 테이블에서 일부 행을 삭제하는 예제입니다 suspect_pages .

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

다음은 테이블의 잘못된 페이지를 반환하는 예제입니다 suspect_pages .

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

참고 항목

DROP DATABASE(Transact-SQL)
RESTORE(Transact-SQL)
BACKUP(Transact-SQL)
DBCC(Transact-SQL)
페이지 복원(SQL Server)
suspect_pages(Transact-SQL)