DBCC CHECKTABLE(Transact-SQL)DBCC CHECKTABLE (Transact-SQL)

적용 대상: 예SQL Server(2008부터) 예Azure SQL Database 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

테이블 또는 인덱싱된 뷰를 구성하는 모든 페이지 및 구조의 무결성을 검사합니다.Checks the integrity of all the pages and structures that make up the table or indexed view.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

DBCC CHECKTABLE     
(    
    table_name | view_name    
    [ , { NOINDEX | index_id }    
     |, { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD }     
    ]     
)    
    [ WITH     
        { ALL_ERRORMSGS ]    
          [ , EXTENDED_LOGICAL_CHECKS ]     
          [ , NO_INFOMSGS ]    
          [ , TABLOCK ]     
          [ , ESTIMATEONLY ]     
          [ , { PHYSICAL_ONLY | DATA_PURITY } ]     
          [ , MAXDOP = number_of_processors ]    
        }    
    ]    

인수Arguments

table_name | view_nametable_name | view_name
무결성 검사를 실행할 테이블 또는 인덱싱된 뷰입니다.Is the table or indexed view for which to run integrity checks. 테이블 또는 뷰 이름은 식별자에 대한 규칙을 따라야 합니다.Table or view names must comply with the rules for identifiers.

NOINDEXNOINDEX
사용자 테이블의 비클러스터형 인덱스에 대해 집중적인 검사가 수행되지 않도록 지정합니다.Specifies that intensive checks of nonclustered indexes for user tables should not be performed. 이렇게 하면 전반적인 실행 시간이 줄어듭니다.This decreases the overall execution time. 무결성 검사는 항상 모든 시스템 테이블 인덱스에서 수행되므로 NOINDEX는 시스템 테이블에 영향을 주지 않습니다.NOINDEX does not affect system tables because the integrity checks are always performed on all system table indexes.

index_idindex_id
무결성 검사를 실행할 인덱스 ID 번호입니다.Is the index identification (ID) number for which to run integrity checks. index_id를 지정하면 DBCC CHECKTABLE은 힙 또는 클러스터형 인덱스와 함께 해당 인덱스에 대해서만 무결성 검사를 실행합니다.If index_id is specified, DBCC CHECKTABLE runs integrity checks only on that index, together with the heap or clustered index.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILDREPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
DBCC CHECKTABLE 실행 시 발견된 오류를 복구하도록 지정합니다.Specifies that DBCC CHECKTABLE repair the found errors. 복구 옵션을 사용하려면 데이터베이스가 단일 사용자 모드여야 합니다.To use a repair option, the database must be in single-user mode.

REPAIR_ALLOW_DATA_LOSSREPAIR_ALLOW_DATA_LOSS
보고된 모든 오류를 복구합니다.Tries to repair all reported errors. 이러한 복구를 수행하면 일부 데이터가 손실될 수 있습니다.These repairs can cause some data loss.

REPAIR_FASTREPAIR_FAST
이전 버전과의 호환성을 위해서만 구문이 유지됩니다.Syntax is maintained for backward compatibility only. 복구 동작은 수행되지 않습니다.No repair actions are performed.

REPAIR_REBUILDREPAIR_REBUILD
데이터 손실 가능성이 없는 복구를 수행합니다.Performs repairs that have no possibility of data loss. 여기에는 비클러스터형 인덱스의 누락 행 복구와 같은 빠른 복구 작업과 인덱스 다시 작성과 같이 시간이 오래 걸리는 복구가 모두 포함됩니다.This can include quick repairs, such as repairing missing rows in non-clustered indexes, and more time-consuming repairs, such as rebuilding an index.
이 인수는 FILESTREAM 데이터 관련 오류를 복구하지 않습니다.This argument does not repair errors involving FILESTREAM data.

참고

REPAIR 옵션은 최후의 수단으로만 사용하십시오.Use the REPAIR options only as a last resort. 오류를 복구하려면 백업에서 복원하는 것이 좋습니다.To repair errors, we recommend restoring from a backup. 복구 작업이 수행될 경우 테이블 자체나 테이블 간에 존재할 수 있는 제약 조건이 고려되지 않습니다.Repair operations do not consider any of the constraints that may exist on or between tables. 지정된 테이블이 하나 이상의 제약 조건에 관련되면 복구 작업 후에 DBCC CHECKCONSTRAINTS를 실행하는 것이 좋습니다.If the specified table is involved in one or more constraints, we recommend running DBCC CHECKCONSTRAINTS after a repair operation. REPAIR를 사용해야 하는 경우 복구 옵션 없이 DBCC CHECKTABLE를 실행하여 사용할 복구 수준을 확인합니다.If you must use REPAIR, run DBCC CHECKTABLE without a repair option to find the repair level to use. REPAIR_ALLOW_DATA_LOSS 수준을 사용하려는 경우 이 옵션으로 DBCC CHECKTABLE을 실행하기 전에 데이터베이스를 백업하는 것이 좋습니다.If you are going to use the REPAIR_ALLOW_DATA_LOSS level, we recommend that you back up the database before you run DBCC CHECKTABLE with this option.

ALL_ERRORMSGSALL_ERRORMSGS
오류를 개수에 제한 없이 모두 표시합니다.Displays an unlimited number of errors. 기본적으로 모든 오류 메시지가 표시됩니다.All error messages are displayed by default. 이 옵션을 지정하거나 생략하더라도 아무런 영향을 미치지 않습니다.Specifying or omitting this option has no effect.

EXTENDED_LOGICAL_CHECKSEXTENDED_LOGICAL_CHECKS
호환성 수준이 100(SQL Server 2008SQL Server 2008) 이상인 경우 인덱싱된 뷰, XML 인덱스 및 공간 인덱스에 대해 논리적 일관성 검사가 수행됩니다.If the compatibility level is 100 ( SQL Server 2008SQL Server 2008) or higher, performs logical consistency checks on an indexed view, XML indexes, and spatial indexes, where present.
자세한 내용은 이 항목의 뒤 부분에 나오는 주의 섹션에서 인덱스에 대한 논리적 일관성 검사 수행을 참조하세요.For more information, see Performing Logical Consistency Checks on Indexes in the Remarks section later in this topic.

NO_INFOMSGSNO_INFOMSGS
모든 정보 메시지를 표시하지 않습니다.Suppresses all informational messages.

TABLOCKTABLOCK
DBCC CHECKTABLE이 내부 데이터베이스 스냅숏 대신 공유 테이블 잠금을 가져오도록 합니다.Causes DBCC CHECKTABLE to obtain a shared table lock instead of using an internal database snapshot. 테이블의 부하가 큰 상태에서 TABLOCK을 사용하면 DBCC CHECKTABLE의 실행 속도를 빠르게 할 수 있지만 DBCC CHECKTABLE이 실행되는 동안 테이블에서 사용할 수 있는 동시성은 줄어듭니다.TABLOCK will cause DBCC CHECKTABLE to run faster on a table under heavy load, but decreases the concurrency available on the table while DBCC CHECKTABLE is running.

ESTIMATEONLYESTIMATEONLY
DBCC CHECKTABLE 실행에 필요한 tempdb 공간의 예상 크기와 지정된 다른 옵션을 모두 표시합니다.Displays the estimated amount of tempdb space needed to run DBCC CHECKTABLE with all the other specified options.

PHYSICAL_ONLYPHYSICAL_ONLY
무결성 검사를 페이지의 물리적 구조, B-트리의 물리적 구조 및 레코드 헤더로 제한합니다.Limits the checking to the integrity of the physical structure of the page, record headers and the physical structure of B-trees. 이 검사는 테이블에 대한 물리적 일관성 검사의 오버헤드를 줄이기 위한 목적으로 사용하며 데이터가 손상될 가능성이 있는 조각난 페이지와 일반적인 하드웨어 오류도 찾습니다.Designed to provide a small overhead check of the physical consistency of the table, this check can also detect torn pages, and common hardware failures that can compromise data. 다음과 같은 원인으로 DBCC CHECKTABLE 전체 실행에 이전 버전에서보다A full run of DBCC CHECKTABLE may take considerably longer than in earlier versions. 현저히 더 많은 시간이 걸릴 수 있습니다.This behavior occurs because of the following reasons:

  • 논리적 검사가 더 포괄적입니다.The logical checks are more comprehensive.
  • 검사할 기본 구조 일부가 더 복잡해졌습니다.Some of the underlying structures to be checked are more complex.
  • 새로운 기능을 포괄할 수 있도록 여러 가지 검사 작업이 새로 도입되었습니다.Many new checks have been introduced to include the new features.

따라서 대형 테이블에서는 PHYSICAL_ONLY 옵션을 사용하여 DBCC CHECKTABLE 실행 시간을 훨씬 단축시킬 수 있으므로 생산 시스템에서의 잦은 검사 작업에는 이 옵션을 사용하는 것이 좋습니다.Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKTABLE on large tables and is therefore recommended for frequent use on production systems. 하지만 정기적으로 DBCC CHECKTABLE 전체 실행을 수행하는 것이 좋습니다.We still recommend that a full run of DBCC CHECKTABLE be performed periodically. 이러한 실행 빈도는 개별 비즈니스 및 프로덕션 환경과 관련된 여러 가지 요소에 따라 달라집니다.The frequency of these runs depends on factors specific to individual businesses and production environments. PHYSICAL_ONLY는 항상 NO_INFOMSGS를 의미하며 복구 옵션과는 함께 사용할 수 없습니다.PHYSICAL_ONLY always implies NO_INFOMSGS and is not allowed with any one of the repair options.

참고

PHYSICAL_ONLY를 지정하면 DBCC CHECKTABLE이 FILESTREAM 데이터에 대한 모든 검사를 건너뜁니다.Specifying PHYSICAL_ONLY causes DBCC CHECKTABLE to skip all checks of FILESTREAM data.

DATA_PURITYDATA_PURITY
DBCC CHECKTABLE이 테이블에서 올바르지 않거나 범위를 벗어난 열 값을 검사하도록 합니다.Causes DBCC CHECKTABLE to check the table for column values that are not valid or out-of-range. 예를 들어 DBCC CHECKTABLE은 datetime 데이터 형식으로 허용 가능한 범위보다 크거나 작은 날짜 및 시간 값을 가진 열을 검색하거나, 올바르지 않은 소수 자릿수 또는 전체 자릿수 값을 가진 소수 또는 근사값 데이터 형식의 열을 검색할 수 있습니다.For example, DBCC CHECKTABLE detects columns with date and time values that are larger than or less than the acceptable range for the datetime data type; or decimal or approximate-numeric data type columns with scale or precision values that are not valid.
기본적으로 열 값 무결성 검사가 사용되며 DATA_PURITY 옵션은 필요하지 않습니다.Column-value integrity checks are enabled by default and do not require the DATA_PURITY option. 이전 버전의 SQL ServerSQL Server에서 업그레이드한 데이터베이스의 경우에는 DBCC CHECKTABLE WITH DATA_PURITY를 사용하여 특정 테이블의 오류를 찾고 수정할 수 있지만 DBCC CHECKDB WITH DATA_PURITY가 데이터베이스에서 오류 없이 실행되기 전까지는 테이블의 열 값 검사를 기본적으로 사용하지 않습니다.For databases upgraded from earlier versions of SQL ServerSQL Server, you can use DBCC CHECKTABLE WITH DATA_PURITY to find and correct errors on a specific table; however, column-value checks on the table are not enabled by default until DBCC CHECKDB WITH DATA_PURITY has been run error free on the database. 이 옵션이 성공적으로 실행되면 DBCC CHECKDB 및 DBCC CHECKTABLE은 기본적으로 열 값 무결성을 검사합니다.After this, DBCC CHECKDB and DBCC CHECKTABLE check column-value integrity by default.
이 옵션에서 보고된 유효성 검사 오류는 DBCC 복구 옵션을 사용하여 수정할 수 없습니다.Validation errors reported by this option cannot be fixed by using DBCC repair options. 이러한 오류를 수동으로 수정하는 방법은 기술 자료 문서 923247: SQL Server 2005 및 이후 버전에서 DBCC 오류 2570 문제 해결.For information about manually correcting these errors, see Knowledge Base article 923247: Troubleshooting DBCC error 2570 in SQL Server 2005 and later versions.
PHYSICAL_ONLY를 지정하면 열 무결성 검사는 수행되지 않습니다.If PHYSICAL_ONLY is specified, column-integrity checks are not performed.

MAXDOPMAXDOP
적용 대상: SQL ServerSQL Server (SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2 ~ SQL Server 2017SQL Server 2017부터 시작)Applies to: SQL ServerSQL Server (Starting with SQL Server 2014(12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017).

명령문에 대한 sp_configure최대 병렬 처리 수준 구성 옵션을 재정의합니다.Overrides the max degree of parallelism configuration option of sp_configure for the statement. MAXDOP은 sp_configure로 구성한 값을 초과할 수 있습니다.The MAXDOP can exceed the value configured with sp_configure. MAXDOP가 Resource Governor로 구성한 값을 초과하면, 데이터베이스 엔진에서 ALTER WORKLOAD GROUP(Transact-SQL)에서 설명한 Resource Governor MAXDOP 값을 사용합니다.If MAXDOP exceeds the value configured with Resource Governor, the Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP (Transact-SQL). max degree of parallelism 구성 옵션에 사용된 모든 의미 체계 규칙을 MAXDOP 쿼리 힌트 사용 시 적용할 수 있습니다.All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. 자세한 내용은 max degree of parallelism 서버 구성 옵션 구성을 참조하세요.For more information, see Configure the max degree of parallelism Server Configuration Option.

참고

MAXDOP가 0으로 설정되면 서버는 최대 병렬 처리 수준을 선택합니다.If MAXDOP is set to zero then the server chooses the max degree of parallelism.

RemarksRemarks

참고

데이터베이스의 모든 테이블에서 DBCC CHECKTABLE을 수행하려면 DBCC CHECKDB를 사용합니다.To perform DBCC CHECKTABLE on every table in the database, use DBCC CHECKDB.

DBCC CHECKTABLE은 지정한 테이블에 대해 다음 사항을 검사합니다.For the specified table, DBCC CHECKTABLE checks for the following:

  • 인덱스, 행 내부, LOB 및 행 오버플로 데이터 페이지가 올바로 연결되어 있습니다.Index, in-row, LOB, and row-overflow data pages are correctly linked.
  • 인덱스 정렬 순서가 올바로 되어 있습니다.Indexes are in their correct sort order.
  • 포인터가 일관성이 있습니다.Pointers are consistent.
  • 각 페이지의 데이터가 적절하며 계산 열을 포함합니다.The data on each page is reasonable, included computed columns.
  • 페이지 오프셋이 적절합니다.Page offsets are reasonable.
  • 기본 테이블의 모든 행에는 각 비클러스터형 인덱스에 일치하는 행이 있으며 반대의 경우도 마찬가지입니다.Every row in the base table has a matching row in each nonclustered index, and vice-versa.
  • 분할된 테이블 또는 인덱스의 모든 행이 올바른 파티션에 있습니다.Every row in a partitioned table or index is in the correct partition.
  • FILESTREAM을 사용하여 파일 시스템에 varbinary(max) 데이터를 저장할 때 파일 시스템과 테이블 사이에 연결 수준 일관성이 존재합니다.Link-level consistency between the file system and table when storing varbinary(max) data in the file system using FILESTREAM.

인덱스에 대한 논리적 일관성 검사 수행Performing Logical Consistency Checks on Indexes

인덱스의 논리적 일관성 검사는 다음과 같이 데이터베이스의 호환성 수준에 따라 달라집니다.Logical consistency checking on indexes varies according to the compatibility level of the database, as follows:

  • 호환성 수준이 100(SQL Server 2008SQL Server 2008) 이상인 경우:If the compatibility level is 100 (SQL Server 2008SQL Server 2008) or higher:

    • DBCC CHECKTABLE은 NOINDEX가 지정되지 않으면 단일 테이블 및 해당하는 모든 비클러스터형 인덱스에 대해 물리적 및 논리적 일관성 검사를 모두 수행합니다.Unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table and on all its nonclustered indexes. 그러나 XML 인덱스, 공간 인덱스 및 인덱싱된 뷰에 대해서는 기본적으로 물리적 일관성 검사만 수행됩니다.However, on XML indexes, spatial indexes, and indexed views only physical consistency checks are performed by default.
    • WITH EXTENDED_LOGICAL_CHECKS를 지정하면 인덱싱된 뷰, XML 인덱스 및 공간 인덱스에 대해 논리적 검사가 수행됩니다.If WITH EXTENDED_LOGICAL_CHECKS is specified, logical checks are performed on an indexed view, XML indexes, and spatial indexes, where present. 기본적으로 물리적 일관성 검사는 논리적 일관성 검사 전에 수행됩니다.By default, physical consistency checks are performed before the logical consistency checks. NOINDEX도 지정할 경우 논리적 검사만 수행됩니다.If NOINDEX is also specified, only the logical checks are performed.
      이러한 논리적 일관성 검사는 인덱스 개체의 내부 인덱스 테이블과 이러한 테이블이 참조하는 사용자 테이블을 교차 검사합니다.These logical consistency checks cross check the internal index table of the index object with the user table that it is referencing. 범위 외의 행을 찾기 위해 내부 쿼리가 생성되어 내부 및 사용자 테이블의 전체 교차를 수행합니다.To find outlying rows, an internal query is constructed to perform a full intersection of the internal and user tables. 이 쿼리는 실행할 경우 성능에 큰 영향을 줄 수 있으며 진행 상태를 추적할 수 없습니다.Running this query can have a very high effect on performance, and its progress cannot be tracked. 따라서 물리적 손상과 관계없는 인덱스 문제가 의심되는 경우, 또는 페이지 수준 체크섬이 해제되어 있고 열 수준 하드웨어 손상이 의심되는 경우에만 WITH EXTENDED_LOGICAL_CHECKS를 지정하는 것이 좋습니다.Therefore, we recommend that you specify WITH EXTENDED_LOGICAL_CHECKS only if you suspect index issues that are unrelated to physical corruption, or if page-level checksums have been turned off and you suspect column-level hardware corruption.
    • 인덱스가 필터링된 인덱스인 경우 DBCC CHECKDB는 일관성 검사를 수행하여 인덱스 항목이 필터 조건자를 만족하는지 확인합니다.If the index is a filtered index, DBCC CHECKDB performs consistency checks to verify that the index entries satisfy the filter predicate.
  • SQL Server 2016(13.x)SQL Server 2016 (13.x)부터 과다한 수식 평가를 방지하기 위해 지속되는 계산된 열, UDT 열, 필터링된 인덱스에 대한 추가 검사가 기본적으로 실행되지 않습니다.Starting with SQL Server 2016(13.x)SQL Server 2016 (13.x), additional checks on persisted computed columns, UDT columns, and filtered indexes will not run by default to avoid the expensive expression evaluations. 이렇게 변경하면 이 개체가 포함된 데이터베이스에 대한 CHECKDB 시간이 크게 단축됩니다.This change greatly reduces the duration of CHECKDB against databases containing these objects. 그러나 이러한 개체의 물리적 일관성 검사는 항상 완료됩니다.However, the physical consistency checks of these objects is always completed. EXTENDED_LOGICAL_CHECKS 옵션을 지정하는 경우에만 EXTENDED_LOGICAL_CHECKS 옵션의 일부로 기존의 논리적 검사(인덱싱된 뷰, XML 인덱스, 공간 인덱스)와 함께 식 평가가 수행됩니다.Only when EXTENDED_LOGICAL_CHECKS option is specified will the expression evaluations be performed in addition to already present logical checks (indexed view, XML indexes, and spatial indexes) as part of the EXTENDED_LOGICAL_CHECKS option.

  • 호환성 수준이 90(SQL Server 2005SQL Server 2005) 이하인 경우 DBCC CHECKTABLE은 NOINDEX가 지정되지 않으면 단일 테이블 또는 인덱싱된 뷰와 해당하는 모든 비클러스터형 및 XML 인덱스에서 물리적 및 논리적 일관성 검사를 모두 수행합니다.If the compatibility level is 90 (SQL Server 2005SQL Server 2005) or less, unless NOINDEX is specified, DBCC CHECKTABLE performs both physical and logical consistency checks on a single table or indexed view and on all its nonclustered and XML indexes. 공간 인덱스는 지원되지 않습니다.Spatial indexes are not supported.

데이터베이스의 호환성 수준에 대한 자세한 내용 To learn the compatibility level of a database
데이터베이스의 호환성 수준 보기 또는 변경View or Change the Compatibility Level of a Database

내부 데이터베이스 스냅숏Internal Database Snapshot

DBCC CHECKTABLE은 이러한 검사를 수행하기 위해 확보해야 하는 트랜잭션 일관성을 제공하기 위해 내부 데이터베이스 스냅숏을 사용합니다.DBCC CHECKTABLE uses an internal database snapshot to provide the transactional consistency that it must have to perform these checks. 자세한 내용은 데이터베이스 스냅숏의 스파스 파일의 크기 보기(Transact-SQL)DBCC(Transact-SQL)의 "DBCC 내부 데이터베이스 스냅숏 사용법" 섹션을 참조하세요.For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the "DBCC Internal Database Snapshot Usage" section in DBCC (Transact-SQL). 스냅숏을 만들 수 없거나 TABLOCK이 지정된 경우 DBCC CHECKTABLE은 공유 테이블 잠금을 획득하여 필요한 일관성을 확보합니다.If a snapshot cannot be created, or TABLOCK is specified, DBCC CHECKTABLE acquires a shared table lock to obtain the required consistency.

참고

DBCC CHECKTABLE이 tempdb에 대해 실행되는 경우 공유 테이블 잠금을 반드시 획득해야 합니다.If DBCC CHECKTABLE is run against tempdb, it must acquire a shared table lock. 이것은 성능상의 이유로 tempdb의 데이터베이스 스냅숏을 사용할 수 없기 때문입니다.This is because, for performance reasons, database snapshots are not available on tempdb. 즉, 필요한 트랜잭션 일관성을 얻을 수 없음을 의미합니다.This means that the required transactional consistency cannot be obtained.

FILESTREAM 데이터 검사 및 복구Checking and Repairing FILESTREAM Data

데이터베이스 및 테이블에 대해 FILESTREAM을 사용하는 경우 선택적으로 파일 시스템에 varbinary(max) BLOB(Binary Large Object)를 저장할 수 있습니다.When FILESTREAM is enabled for a database and table, you can optionally store varbinary(max) binary large objects (BLOBs) in the file system. 파일 시스템에 BLOB을 저장하는 테이블에 대해 DBCC CHECKTABLE을 사용하면 DBCC는 파일 시스템과 데이터베이스 사이의 연결 수준 일관성을 검사합니다.When using DBCC CHECKTABLE on a table that stores BLOBs in the file system, DBCC checks link-level consistency between the file system and database. 예를 들어 테이블에 FILESTREAM 특성을 사용하는 varbinary(max) 열이 있는 경우 DBCC CHECKTABLE은 파일 시스템 디렉터리, 파일과 테이블 행, 열, 열 값 사이에 일 대 일 매핑이 존재하는지 확인합니다.For example, if a table contains a varbinary(max) column that uses the FILESTREAM attribute, DBCC CHECKTABLE will check that there is a one-to-one mapping between file system directories and files and table rows, columns, and column values. REPAIR_ALLOW_DATA_LOSS 옵션을 지정하면 DBCC CHECKTABLE이 손상을 복구할 수 있습니다.DBCC CHECKTABLE can repair corruption if you specify the REPAIR_ALLOW_DATA_LOSS option. FILESTREAM 손상을 복구하기 위해 DBCC는 파일 시스템 데이터가 누락된 모든 테이블 행을 삭제하고 테이블 행, 열 또는 열 값에 매핑되지 않는 모든 디렉터리와 파일을 삭제합니다.To repair FILESTREAM corruption, DBCC will delete any table rows that are missing file system data and will delete any directories and files that do not map to a table row, column, or column value.

병렬로 개체 검사Checking Objects in Parallel

기본적으로 DBCC CHECKTABLE은 개체의 병렬 검사를 수행합니다.By default, DBCC CHECKTABLE performs parallel checking of objects. 병렬 처리 수준은 쿼리 프로세서에 의해 자동으로 결정됩니다.The degree of parallelism is automatically determined by the query processor. 최대 병렬 처리 수준은 최대 병렬 쿼리 수준과 동일한 방식으로 구성됩니다.The maximum degree of parallelism is configured in the same manner as that of parallel queries. DBCC 검사에 사용할 수 있는 최대 프로세서 수를 제한하려면 sp_configure를 사용합니다.To restrict the maximum number of processors available for DBCC checking, use sp_configure. 자세한 내용은 max degree of parallelism 서버 구성 옵션 구성을 참조하세요.For more information, see Configure the max degree of parallelism Server Configuration Option. 추적 플래그 2528을 사용하면 병렬 검사를 비활성화할 수 있습니다.Parallel checking can be disabled by using trace flag 2528. 자세한 내용은 추적 플래그(Transact-SQL)를 참조하세요.For more information, see Trace Flags (Transact-SQL).

참고

DBCC CHECKTABLE 작업 중에 바이트 정렬 사용자 정의 형식 열에 저장된 바이트는 사용자 정의 형식 값의 계산된 직렬화 결과와 같아야 합니다.During a DBCC CHECKTABLE operation, the bytes that are stored in a byte-ordered user-defined type column must be equal to the computed serialization of the user-defined type value. 그렇지 않으면 DBCC CHECKTABLE 루틴에서 일관성 오류를 보고합니다.If this is not true, the DBCC CHECKTABLE routine will report a consistency error.

DBCC 오류 메시지 이해Understanding DBCC Error Messages

DBCC CHECKTABLE 명령이 완료된 후 SQL ServerSQL Server 오류 로그에 메시지가 기록됩니다.After the DBCC CHECKTABLE command finishes, a message is written to the SQL ServerSQL Server error log. DBCC 명령이 성공적으로 실행되면 메시지에 실행 완료 및 명령이 실행된 소요 시간이 표시됩니다.If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. 오류로 인해 DBCC 명령이 검사를 완료하기 전에 중지되면 메시지에 명령 종료, 상태 값 및 명령이 실행된 소요 시간이 표시됩니다.If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. 다음 표에서는 메시지에 포함될 수 있는 상태 값을 나열하고 설명합니다.The following table lists and describes the state values that can be included in the message.

StateState 설명Description
00 오류 번호 8930이 발생했습니다.Error number 8930 was raised. 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.This indicates a metadata corruption that caused the DBCC command to terminate.
11 오류 번호 8967이 발생했습니다.Error number 8967 was raised. 내부 DBCC 오류가 있습니다.There was an internal DBCC error.
22 응급 모드 데이터베이스 복구 중에 오류가 발생했습니다.A failure occurred during emergency mode database repair.
33 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.This indicates a metadata corruption that caused the DBCC command to terminate.
44 어설션 또는 액세스 위반이 감지되었습니다.An assert or access violation was detected.
55 알 수 없는 오류가 발생하여 DBCC 명령이 종료되었습니다.An unknown error occurred that terminated the DBCC command.

오류 보고Error Reporting

DBCC CHECKTABLE이 손상 오류를 발견할 때마다 SQL ServerSQL Server LOG 디렉터리에 미니덤프 파일(SQLDUMP*nnnn*.txt)이 생성됩니다.A mini-dump file (SQLDUMP*nnnn*.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKTABLE detects a corruption error. SQL ServerSQL Server 인스턴스에 대해 기능 사용 데이터 수집 및 오류 보고 기능을 설정하면 이 파일이 MicrosoftMicrosoft에 자동으로 전달됩니다.When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. 수집된 데이터를 사용하여 SQL ServerSQL Server 기능을 향상시킬 수 있습니다.The collected data is used to improve SQL ServerSQL Server functionality. 덤프 파일에는 DBCC CHECKTABLE 명령의 결과 및 추가 진단 출력이 포함됩니다.The dump file contains the results of the DBCC CHECKTABLE command and additional diagnostic output. 이 파일에는 제한된 DACL(임의 액세스 제어 목록)이 있습니다.The file has restricted discretionary access-control lists (DACLs). 액세스는 SQL ServerSQL Server 서비스 계정 및 sysadmin 역할의 멤버로 제한됩니다.Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. 기본적으로 sysadmin 역할에는 Windows BUILTIN\Administrators 그룹 및 로컬 관리자 그룹의 모든 멤버가 포함됩니다.By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. 데이터 수집 프로세스가 실패해도 DBCC 명령은 실패하지 않습니다.The DBCC command does not fail if the data collection process fails.

오류 해결Resolving Errors

DBCC CHECKTABLE에서 오류를 보고하는 경우 REPAIR 옵션 중 하나를 사용하여 REPAIR를 실행하는 대신 데이터베이스 백업에서 데이터베이스를 복원하는 것이 좋습니다.If DBCC CHECKTABLE reports any errors, we recommend restoring the database from the database backup instead of running REPAIR with one of the REPAIR options. 백업이 없는 경우 REPAIR를 실행하여 보고된 오류를 수정할 수 있습니다.If no backup exists, running REPAIR can correct the errors that are reported. 사용할 REPAIR 옵션은 보고된 오류 목록의 끝에 지정됩니다.The REPAIR option to use is specified at the end of the list of reported errors. 하지만 REPAIR_ALLOW_DATA_LOSS 옵션을 사용하여 오류를 수정하는 데 필요한 일부 페이지 및 데이터는 삭제되었을 수 있습니다.However, that correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require that some pages, and therefore data, be deleted.
복구 작업은 사용자가 변경된 사항을 롤백할 수 있도록 사용자 트랜잭션 내에서 수행됩니다.The repair can be performed under a user transaction to allow the user to roll back the changes that have been made. 복구가 롤백되어도 데이터베이스에는 오류가 그대로 포함되어 있으므로 백업에서 데이터베이스를 복원해야 합니다.If repairs are rolled back, the database will still contain errors and must be restored from a backup. 복구를 모두 완료한 다음 데이터베이스를 백업하십시오.After you have completed all repairs, back up the database.

결과 집합Result Sets

DBCC CHECKTABLE은 다음 결과 집합을 반환합니다.DBCC CHECKTABLE returns the following result set. 테이블 이름만 지정하거나 아무 옵션도 지정하지 않은 경우 동일한 결과 집합이 반환됩니다.The same result set is returned if you specify only the table name or any of the options.

DBCC results for 'HumanResources.Employee'.    
There are 288 rows in 13 pages for object 'Employee'.    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

ESTIMATEONLY 옵션이 지정된 경우 DBCC CHECKTABLE은 다음 결과 집합을 반환합니다.DBCC CHECKTABLE returns the following result set if the ESTIMATEONLY option is specified:

Estimated TEMPDB space needed for CHECKTABLES (KB)     
--------------------------------------------------     
21    
(1 row(s) affected)    
DBCC execution completed. If DBCC printed error messages, contact your system administrator.    

PermissionsPermissions

사용자는 테이블을 소유하거나 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.User must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

Examples

1.A. 특정 테이블 검사Checking a specific table

다음 예에서는 AdventureWorks2012AdventureWorks2012 데이터베이스의 HumanResources.Employee테이블에 대한 데이터 페이지 무결성을 검사합니다.The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee');    
GO    

2.B. 테이블에 오버헤드가 적은 검사 수행Performing a low-overhead check of the table

다음 예에서는 Employee 데이터베이스의 AdventureWorks2012AdventureWorks2012 테이블에 오버헤드가 적은 검사를 수행합니다.The following example performs a low overhead check of the Employee table in the AdventureWorks2012AdventureWorks2012 database.

DBCC CHECKTABLE ('HumanResources.Employee') WITH PHYSICAL_ONLY;    
GO    

3.C. 특정 인덱스 검사Checking a specific index

다음 예에서는 sys.indexes에 액세스하여 얻은 특정 인덱스를 검사합니다.The following example checks a specific index, obtained by accessing sys.indexes.

DECLARE @indid int;    
SET @indid = (SELECT index_id     
              FROM sys.indexes    
              WHERE object_id = OBJECT_ID('Production.Product')    
                    AND name = 'AK_Product_Name');    
DBCC CHECKTABLE ('Production.Product',@indid);    

참고 항목See Also

DBCC(Transact-SQL) DBCC (Transact-SQL)
DBCC CHECKDB(Transact-SQL)DBCC CHECKDB (Transact-SQL)