suspect_pages 테이블 관리(SQL Server)Manage the suspect_pages Table (SQL Server)

이 항목에서는 또는 을 사용하여 SQL Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio suspect_pages Transact-SQLTransact-SQL테이블을 관리하는 방법에 대해 설명합니다.This topic describes how to manage the suspect_pages table in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 주의 대상 페이지에 대한 정보를 유지 관리하는 데 사용되는 suspect_pages 테이블은 복원이 필요한지 여부를 결정하는 데 사용됩니다.The suspect_pages table is used for maintaining information about suspect pages, and is relevant in helping to decide whether a restore is necessary. suspect_pages 테이블은 msdb 데이터베이스에 상주합니다.The suspect_pages table resides in the msdb database.

SQL Server 데이터베이스 엔진SQL Server Database Engine 에서 데이터 페이지를 읽으려고 할 때 다음 오류 중 하나가 발생하면 페이지가 "주의 대상"으로 간주됩니다.A page is considered "suspect" when the SQL Server 데이터베이스 엔진SQL Server Database Engine encounters one of the following errors when it tries to read a data page:

  • 디스크 오류(특정 하드웨어 오류)와 같이 운영 체제에서 실행되는 CRC(순환 중복 검사)로 인해 발생하는 823 오류An 823 error that was caused by a cyclic redundancy check (CRC) issued by the operating system, such as a disk error (certain hardware errors)

  • 조각난 페이지(논리적 오류)와 같은 824 오류An 824 error, such as a torn page (any logical error)

    모든 주의 대상 페이지의 페이지 ID는 suspect_pages 테이블에 기록됩니다.The page ID of every suspect page is recorded in the suspect_pages table. 데이터베이스 엔진Database Engine 에서는 다음과 같은 정상적인 처리 중에 발생하는 모든 주의 대상 페이지를 기록합니다.The 데이터베이스 엔진Database Engine records any suspect pages encountered during regular processing, such as the following:

  • 쿼리에서 페이지를 읽어야 하는 경우A query has to read a page.

  • DBCC CHECKDB 작업이 수행 중인 경우During a DBCC CHECKDB operation.

  • 백업 작업이 수행 중인 경우During a backup operation.

    또한 복원 작업, DBCC 복구 작업 또는 데이터베이스 삭제 작업 동안 필요한 경우 suspect_pages 테이블이 업데이트됩니다.The suspect_pages table is also updated as necessary during a restore operation, a DBCC repair operation, or a drop database operation.

    항목 내용In This Topic

  • 시작하기 전에:Before you begin:

    권장 사항Recommendations

    보안Security

  • 다음을 사용하여 suspect_pages 테이블을 관리합니다.To manage the suspect_pages table, using:

    SQL Server Management StudioSQL Server Management Studio

    Transact-SQLTransact-SQL

시작하기 전 주의 사항 Before You Begin

권장 사항 Recommendations

  • suspect_pages 테이블에 기록되는 오류Errors Recorded in suspect_pages Table

    suspect_pages 테이블은 824 오류가 발생하여 실패한 페이지당 하나의 행을 포함합니다(최대 1,000개 행까지).The suspect_pages table contains one row per page that failed with an 824 error, up to a limit of 1,000 rows. 다음 표에서는 suspect_pages 테이블의 event_type 열에 기록되는 오류를 보여 줍니다.The following table shows errors logged in the event_type column of the suspect_pages table.

    오류 설명Error description event_typeevent_type value
    운영 체제 CRC 오류로 인해 발생하는 823 오류 또는 잘못된 체크섬이나 조각난 페이지 이외의 824 오류(예: 잘못된 페이지 ID)823 error caused by an operating system CRC error or 824 error other than a bad checksum or a torn page (for example, a bad page ID) 11
    잘못된 체크섬Bad checksum 22
    조각난 페이지Torn page 33
    복원됨(페이지가 잘못된 것으로 표시된 후 복원됨)Restored (The page was restored after it was marked bad) 44
    복구됨(DBCC가 페이지를 복구함)Repaired (DBCC repaired the page) 55
    DBCC에 의해 할당 취소됨Deallocated by DBCC 77

    또한 suspect_pages 테이블에서 일시적인 오류를 기록합니다.The suspect_pages table also records transient errors. 일시적인 오류의 원인으로는 I/O 오류(예: 케이블 연결 끊김) 또는 일시적으로 반복 체크섬 테스트에 실패한 페이지 등이 있습니다.Sources of transient errors include an I/O error (for example, a cable was disconnected) or a page that temporarily fails a repeated checksum test.

  • 데이터베이스 엔진의 suspect_pages 테이블 업데이트 방법How the Database Engine Updates the suspect_pages Table

    데이터베이스 엔진Database Enginesuspect_pages 테이블에 대해 다음 동작을 수행합니다.The 데이터베이스 엔진Database Engine takes the following actions on the suspect_pages table:

    • 테이블이 꽉 차지 않았다면 824 오류가 발생할 때마다 업데이트되어 오류 발생이 표시되고 오류 카운터가 증가합니다.If the table is not full, it is updated for every 824 error, to indicate that an error has occurred, and the error counter is incremented. 페이지를 복구, 복원 또는 할당 취소하여 수정한 후에도 오류가 있으면 number_of_errors 수가 증가하고 해당 last_update 열이 업데이트됩니다.If a page has an error after it is fixed by being repaired, restored, or deallocated, its number_of_errors count is incremented and its last_update column is updated

    • 나열된 페이지를 복원 또는 복구 작업으로 수정하면 suspect_pages 행이 업데이트되어 페이지가 복구(event_type = 5) 또는 복원(event_type = 4)되었음을 나타냅니다.After a listed page is fixed by a restore or a repair operation, the operation updates the suspect_pages row to indicate that the page is repaired (event_type = 5) or restored (event_type = 4).

    • DBCC Check를 실행하면 오류가 없는 페이지는 복구(event_type = 5) 또는 할당 취소(event_type = 7)된 것으로 표시됩니다.If a DBCC check is run, the check marks any error-free pages as repaired (event_type = 5) or deallocated (event_type = 7).

  • suspect_pages 테이블의 자동 업데이트Automatic Updates to the suspect_pages Table

    데이터 파일에서 페이지를 읽으려는 시도가 다음 이유 중 하나로 실패하면 데이터베이스 미러링 파트너 또는 Always On 가용성 복제본이 suspect_pages 테이블을 업데이트합니다.A database mirroring partner or Always On availability replica updates the suspect_pages table after an attempt to read a page from a data file fails for one of the following reasons.

    • 운영 체제 CRC 오류로 인해 발생하는 823 오류An 823 error that is caused by an operating system CRC error.

    • 824 오류(조각난 페이지와 같은 논리적 손상)An 824 error (logical corruption such as a torn page).

      다음 동작을 수행하면 suspect_pages 테이블에서 행이 자동으로 업데이트됩니다.The following actions also automatically update rows in the suspect_pages table.

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS는 suspect_pages 테이블을 업데이트하여 할당 취소되었거나 복구된 각 페이지를 표시합니다.DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS updates the suspect_pages table to indicate each page that it has deallocated or repaired.

    • 전체, 파일 또는 페이지 복원을 수행하면 페이지 항목이 복원된 것으로 표시됩니다.A full, file, or page RESTORE marks the page entries as restored.

      다음 동작을 수행하면 suspect_pages 테이블에서 행이 자동으로 삭제됩니다.The following actions automatically delete rows from the suspect_pages table.

    • ALTER DATABASE REMOVE FILEALTER DATABASE REMOVE FILE

    • DROP DATABASEDROP DATABASE

  • 데이터베이스 관리자의 유지 관리 역할Maintenance Role of the Database Administrator

    데이터베이스 관리자는 주로 오래된 행을 삭제함으로써 테이블을 관리할 책임이 있습니다.Database administrators are responsible for managing the table, primarily by deleting old rows. suspect_pages 테이블은 크기에 제한이 있으며 모두 채워지면 더 이상 새로운 오류가 기록되지 않습니다.The suspect_pages table is limited in size, and if it fills, new errors are not logged. 이 테이블이 꽉 차지 않게 하려면 데이터베이스 관리자나 시스템 관리자가 이 테이블에서 행을 삭제하여 오래된 항목을 수동으로 지워야 합니다.To prevent this table from filling up, the database administrator or system administrator must manually clear out old entries from this table by deleting rows. 따라서 event_type 이 복원됨 또는 복구됨인 행이나 last_update 값이 오래된 행을 주기적으로 삭제하거나 보관하는 것이 좋습니다.Therefore, we recommend that you periodically delete or archive rows that have an event_type of restored or repaired, or rows that have an old last_update value.

    suspect_pages 테이블에서 작업을 모니터링하기 위해 Database Suspect Data Page 이벤트 클래스를 사용할 수 있습니다.To monitor the activity on the suspect_pages table, you can use the Database Suspect Data Page Event Class. 일시적인 오류로 인해 행이 suspect_pages 테이블에 추가되기도 합니다.Rows are sometimes added to the suspect_pages table because of transient errors. 그러나 많은 행이 이 테이블에 추가되는 경우 I/O 하위 시스템에 문제가 있을 수도 있습니다.If many rows are being added to the table, however, a problem probably exists with the I/O subsystem. 이 테이블에 추가되는 행 수가 갑자기 증가하는 경우에는 I/O 하위 시스템에 발생한 문제가 있는지 조사해 보는 것이 좋습니다.If you notice a sudden increase in the number of rows being added to the table, we recommend that you investigate possible problems in your I/O subsystem.

    데이터베이스 관리자는 또한 레코드를 삽입하거나 업데이트할 수 있습니다.A database administrator can also insert or update records. 예를 들어 데이터베이스 관리자가 특정 주의 대상 페이지가 존재함을 알고 있지만 잠시 동안 해당 레코드를 보존하려는 경우 행 업데이트가 유용할 수 있습니다.For example, updating a row might useful when the database administrator knows that a particular suspect page is actually intact, but wants to preserve the record for a while.

보안 Security

사용 권한 Permissions

msdb 에 대한 액세스 권한이 있는 사용자는 suspect_pages 테이블의 데이터를 읽을 수 있습니다.Anyone with access to msdb can read the data in the suspect_pages table. suspect_pages 테이블에 대한 UPDATE 권한이 있는 사용자는 레코드를 업데이트할 수 있습니다.Anyone with UPDATE permission on the suspect_pages table can update its records. msdbdb_owner 고정 데이터베이스 역할 또는 sysadmin 고정 서버 역할의 멤버는 레코드를 삽입, 업데이트 및 삭제할 수 있습니다.Members the db_owner fixed database role on msdb or the sysadmin fixed server role can insert, update, and delete records.

SQL Server Management Studio 사용 Using SQL Server Management Studio

suspect_pages 테이블을 관리하려면To manage the suspect_pages table

  1. 개체 탐색기에서 SQL Server 데이터베이스 엔진SQL Server Database Engine의 인스턴스에 연결하고 해당 인스턴스를 확장한 다음 데이터베이스를 확장합니다.In Object Explorer, connect to an instance of the SQL Server 데이터베이스 엔진SQL Server Database Engine, expand that instance, and then expand Databases.

  2. 시스템 데이터베이스, msdb, 테이블시스템 테이블을 차례로 확장합니다.Expand System Databases, expand msdb, expand Tables, and then expand System Tables.

  3. dbo.suspect_pages 를 확장하고 상위 200개 행 편집을 마우스 오른쪽 단추로 클릭합니다.Expand dbo.suspect_pages and right-click Edit Top 200 Rows.

  4. 쿼리 창에서 원하는 행을 편집, 업데이트 또는 삭제합니다.In the query window, edit, update, or delete the rows that you want.

Transact-SQL 사용 Using Transact-SQL

suspect_pages 테이블을 관리하려면To manage the suspect_pages table

  1. 데이터베이스 엔진Database Engine에 연결합니다.Connect to the 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.From the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following examples into the query window and click Execute. 이 예에서는 suspect_pages 테이블에서 일부 행을 삭제합니다.This example deletes some of the rows from the suspect_pages table.

-- 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 테이블에 있는 잘못된 페이지를 반환합니다.This example returns the bad pages in the suspect_pages table.

-- 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  

참고 항목See Also

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