suspect_pages 테이블 관리(SQL Server)
이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 2014년 SQL Server suspect_pages 테이블을 관리하는 방법을 설명합니다. 주의 대상 페이지에 대한 정보를 유지 관리하는 데 사용되는 suspect_pages 테이블은 복원이 필요한지 여부를 결정하는 데 사용됩니다. suspect_pages 테이블은 msdb 데이터베이스에 상주합니다.
SQL Server 데이터베이스 엔진 에서 데이터 페이지를 읽으려고 할 때 다음 오류 중 하나가 발생하면 페이지가 "주의 대상"으로 간주됩니다.
모든 주의 대상 페이지의 페이지 ID는 suspect_pages 테이블에 기록됩니다. 데이터베이스 엔진 에서는 다음과 같은 정상적인 처리 중에 발생하는 모든 주의 대상 페이지를 기록합니다.
쿼리에서 페이지를 읽어야 하는 경우
DBCC CHECKDB 작업이 수행 중인 경우
백업 작업이 수행 중인 경우
또한 복원 작업, DBCC 복구 작업 또는 데이터베이스 삭제 작업 동안 필요한 경우 suspect_pages 테이블이 업데이트됩니다.
항목 내용
시작하기 전 주의 사항:
다음을 사용하여 suspect_pages 테이블을 관리합니다.
시작하기 전에
권장 사항
suspect_pages 테이블에 기록되는 오류
suspect_pages 테이블은 824 오류가 발생하여 실패한 페이지당 하나의 행을 포함합니다(최대 1,000개 행까지). 다음 표에서는 suspect_pages 테이블의 event_type 열에 기록되는 오류를 보여 줍니다.
오류 설명 event_type 값 운영 체제 CRC 오류로 인한 823 오류 또는 잘못된 체크섬 또는 조각난 페이지 이외의 824 오류(예: 잘못된 페이지 ID) 1 잘못된 체크섬 2 조각난 페이지 3 복원됨(페이지가 잘못된 것으로 표시된 후 복원됨) 4 복구됨(DBCC, AlwaysOn, 또는 페이지를 미러링 복구함) 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 Check를 실행하면 오류가 없는 페이지는 복구(event_type = 5) 또는 할당 취소(event_type = 7)된 것으로 표시됩니다.
suspect_pages 테이블의 자동 업데이트
데이터 파일에서 페이지를 읽으려는 시도가 다음 이유 중 하나로 실패하면 데이터베이스 미러링 파트너 또는 AlwaysOn 가용성 복제본이 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 테이블에서 작업을 모니터링하기 위해 Database Suspect Data Page 이벤트 클래스를 사용할 수 있습니다. 일시적인 오류로 인해 행이 suspect_pages 테이블에 추가되기도 합니다. 그러나 많은 행이 이 테이블에 추가되는 경우 I/O 하위 시스템에 문제가 있을 수도 있습니다. 이 테이블에 추가되는 행 수가 갑자기 증가하는 경우에는 I/O 하위 시스템에 발생한 문제가 있는지 조사해 보는 것이 좋습니다.
데이터베이스 관리자는 또한 레코드를 삽입하거나 업데이트할 수 있습니다. 예를 들어 데이터베이스 관리자가 특정 주의 대상 페이지가 존재함을 알고 있지만 잠시 동안 해당 레코드를 보존하려는 경우 행 업데이트가 유용할 수 있습니다.
보안
사용 권한
msdb 에 대한 액세스 권한이 있는 사용자는 suspect_pages 테이블의 데이터를 읽을 수 있습니다. suspect_pages 테이블에 대한 UPDATE 권한이 있는 사용자는 레코드를 업데이트할 수 있습니다. msdb 의 db_owner 고정 데이터베이스 역할 또는 sysadmin 고정 서버 역할의 멤버는 레코드를 삽입, 업데이트 및 삭제할 수 있습니다.
SQL Server Management Studio 사용
suspect_pages 테이블을 관리하려면
개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결하고 해당 인스턴스를 확장한 다음 데이터베이스를 확장합니다.
시스템 데이터베이스, msdb, 테이블및 시스템 테이블을 차례로 확장합니다.
dbo.suspect_pages 를 확장하고 상위 200개 행 편집을 마우스 오른쪽 단추로 클릭합니다.
쿼리 창에서 원하는 행을 편집, 업데이트 또는 삭제합니다.
Transact-SQL 사용
suspect_pages 테이블을 관리하려면
데이터베이스 엔진에 연결합니다.
표준 도구 모음에서 새 쿼리를 클릭합니다.
다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다. 이 예에서는
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)
MSSQLSERVER_823
MSSQLSERVER_824