다음을 통해 공유


DBCC CHECKFILEGROUP(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

현재 데이터베이스의 지정한 파일 그룹에서 모든 테이블과 인덱싱된 뷰의 할당과 구조적 무결성을 검사합니다.

Transact-SQL 구문 표기 규칙

구문

DBCC CHECKFILEGROUP
[
    [ ( { filegroup_name | filegroup_id | 0 }
        [ , NOINDEX ]
  ) ]
    [ WITH
        {
            [ ALL_ERRORMSGS | NO_INFOMSGS ]
            [ , TABLOCK ]
            [ , ESTIMATEONLY ]
            [ , PHYSICAL_ONLY ]
            [ , MAXDOP  = number_of_processors ]
        }
    ]
]

인수

filegroup_name

테이블 할당과 구조적 무결성을 검사할 현재 데이터베이스의 파일 그룹 이름입니다. 아무 값도 지정하지 않거나 0을 지정하면 기본값은 주 파일 그룹입니다. 파일 그룹 이름은 식별자 규칙을 따라야 합니다.
filegroup_name은 FILESTREAM 파일 그룹이 될 수 없습니다.

filegroup_id

테이블 할당과 구조적 무결성을 검사할 현재 데이터베이스의 파일 그룹 ID입니다.

NOINDEX

사용자 테이블의 비클러스터형 인덱스에 대해 집중적인 검사가 수행되지 않도록 지정합니다. 이렇게 하면 전반적인 실행 시간이 줄어듭니다. DBCC CHECKFILEGROUP에서 항상 모든 시스템 테이블 인덱스를 검사하므로 NOINDEX는 시스템 테이블에 영향을 주지 않습니다.

ALL_ERRORMSGS

개체당 오류를 무제한으로 표시합니다. 기본적으로 모든 오류 메시지가 표시됩니다. 이 옵션을 지정하거나 생략하더라도 아무런 영향을 미치지 않습니다.

NO_INFOMSGS

모든 정보 메시지를 표시하지 않습니다.

TABLOCK

내부 데이터베이스 스냅샷을 사용하는 대신 DBCC CHECKFILEGROUP이 잠금을 가져오도록 합니다.

ESTIMATE ONLY

지정된 다른 모든 옵션으로 DBCC CHECKFILEGROUP을 실행하는 데 필요한 tempdb 공간의 예상 크기를 표시합니다.

PHYSICAL_ONLY

무결성 검사를 페이지의 물리적 구조, B-트리의 물리적 구조 및 레코드 헤더로 제한합니다. 이 검사는 파일 그룹에 대한 물리적 일관성 검사의 오버헤드를 줄이기 위한 목적으로 사용하며 데이터가 손상될 가능성이 있는 조각난 페이지와 일반적인 하드웨어 오류도 찾습니다. DBCC CHECKFILEGROUP의 전체 실행에 걸리는 시간이 이전 버전이 비해 상당히 오래 걸릴 수 있습니다. 현저히 더 많은 시간이 걸릴 수 있습니다.

  • 논리적 검사가 더 포괄적입니다.
  • 검사할 기본 구조 일부가 더 복잡해졌습니다.
  • 새로운 기능을 포괄할 수 있도록 여러 가지 검사 작업이 새로 도입되었습니다.

참고 항목

설명서는 인덱스를 지칭할 때 B-트리라는 용어를 사용합니다. rowstore 인덱스에서 데이터베이스 엔진은 B+ 트리를 구현합니다. 이는 columnstore 인덱스나 메모리 최적화 테이블 인덱스에는 적용되지 않습니다. 자세한 내용은 SQL Server 및 Azure SQL 인덱스 아키텍처 및 디자인 가이드를 참조하세요.

따라서 대형 파일 그룹에서는 PHYSICAL_ONLY 옵션을 사용하여 DBCC CHECKFILEGROUP 실행 시간을 훨씬 단축시킬 수 있으므로 생산 시스템에서의 빈번한 검사 작업에는 이 옵션을 사용하는 것이 좋습니다. 하지만 정기적으로 DBCC CHECKFILEGROUP 전체 실행을 수행하는 것이 좋습니다. 이러한 실행 빈도는 개별 비즈니스 및 프로덕션 환경과 관련된 여러 가지 요소에 따라 달라집니다. PHYSICAL_ONLY는 항상 NO_INFOMSGS를 의미하며 복구 옵션과는 함께 사용할 수 없습니다.

참고

PHYSICAL_ONLY를 지정하면 DBCC CHECKFILEGROUP가 FILESTREAM 데이터의 모든 검사를 건너뜁니다.

MAXDOP

적용 대상: SQL Server 2014 서비스 팩 2 이상 버전

명령문에 대한 sp_configure최대 병렬 처리 수준 구성 옵션을 재정의합니다. MAXDOPsp_configure로 구성된 값을 초과할 수 있습니다. MAXDOP가 Resource Governor로 구성한 값을 초과하면, 데이터베이스 엔진에서 ALTER WORKLOAD GROUP(Transact-SQL)에서 설명한 Resource Governor MAXDOP 값을 사용합니다. max degree of parallelism 구성 옵션에 사용된 모든 의미 체계 규칙을 MAXDOP 쿼리 힌트 사용 시 적용할 수 있습니다. 자세한 내용은 max degree of parallelism 서버 구성 옵션 구성을 참조하세요.

주의

MAXDOP가 0으로 설정되면 서버는 최대 병렬 처리 수준을 선택합니다.

설명

DBCC CHECKFILEGROUPDBCC CHECKDB는 유사한 DBCC 명령입니다. 주요 차이점은 DBCC CHECKFILEGROUP이 지정된 단일 파일 그룹과 필수 테이블로 제한된다는 것입니다.

DBCC CHECKFILEGROUP은 다음 명령을 수행합니다.

DBCC CHECKFILEGROUP과 별도로 DBCC CHECKALLOC 또는 DBCC CHECKTABLE을 실행할 필요는 없습니다.

내부 데이터베이스 스냅샷

DBCC CHECKFILEGROUP은 이러한 검사를 수행하기 위해 확보해야 하는 트랜잭션 일관성을 제공하기 위해 내부 데이터베이스 스냅샷을 사용합니다. 자세한 내용은 데이터베이스 스냅샷의 스파스 파일의 크기 보기(Transact-SQL)DBCC(Transact-SQL)DBCC 내부 데이터베이스 스냅샷 사용 섹션을 참조하세요.

스냅샷을 만들 수 없거나 TABLOCK 옵션이 지정되면 DBCC CHECKFILEGROUP은 필요한 일관성을 확보하기 위해 잠금을 설정합니다. 이 경우 할당 검사를 위해서는 배타적 데이터베이스 잠금이 필요하며 테이블 검사를 위해서는 공유 테이블 잠금이 필요합니다. TABLOCK를 사용하면 데이터베이스에 로드가 많은 상황에서 DBCC CHECKFILEGROUP이 더 빠르게 실행됩니다. 그러나 DBCC CHECKFILEGROUP이 실행되는 동안 데이터베이스의 동시 사용 가능성은 줄어듭니다.

참고

tempdb에 대해 DBCC CHECKFILEGROUP을 실행하면 할당 검사가 수행되지 않으며 테이블 검사를 수행하려면 공유 테이블 잠금을 획득해야 합니다. 이것은 성능상 이유로 tempdb의 데이터베이스 스냅샷을 사용할 수 없기 때문입니다. 즉, 필요한 트랜잭션 일관성을 얻을 수 없음을 의미합니다.

병렬로 개체 검사

기본적으로 DBCC CHECKFILEGROUP은 개체를 병렬로 검사합니다. 병렬 처리 수준은 쿼리 프로세서에 의해 자동으로 결정됩니다. 최대 병렬 처리 수준은 병렬 쿼리와 동일하게 구성됩니다. DBCC 검사에 사용할 수 있는 최대 프로세서 수를 제한하려면 sp_configure를 사용합니다. 자세한 내용은 max degree of parallelism 서버 구성 옵션 구성을 참조하세요.

추적 플래그 2528을 사용하면 병렬 검사를 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 추적 플래그(Transact-SQL)를 참조하세요.

개별 파일 그룹의 비클러스터형 인덱스

지정된 파일 그룹의 비클러스터형 인덱스가 다른 파일 그룹의 테이블과 연결된 경우 유효성 검사 시 기본 테이블을 사용할 수 없으므로 인덱스가 검사되지 않습니다.

지정된 파일 그룹의 테이블이 다른 파일 그룹의 비클러스터형 인덱스와 연결된 경우 비클러스터형 인덱스는 다음과 같은 이유로 검사되지 않습니다.

  • 기본 테이블 구조는 비클러스터형 인덱스의 구조에 종속되지 않습니다. 기본 테이블을 검사하기 위해 비클러스터형 인덱스를 검색할 필요는 없습니다.
  • DBCC CHECKFILEGROUP 명령은 지정된 파일 그룹에 있는 개체의 유효성만 검사합니다.

클러스터형 인덱스와 테이블은 서로 다른 파일 그룹에 있을 수 없으므로 위의 고려 사항은 비클러스터형 인덱스에만 적용됩니다.

개별 파일 그룹의 분할된 테이블

여러 파일 그룹에 분할된 테이블이 있을 경우 DBCC CHECKFILEGROUP이 지정된 파일 그룹에 있는 파티션 행 집합을 검사하고 다른 파일 그룹에서 해당 행 집합을 무시합니다. 정보 메시지 2594는 확인되지 않은 파티션을 나타냅니다. 지정된 파일 그룹에 상주하지 않는 비클러스터형 인덱스는 검사하지 않습니다.

DBCC 오류 메시지 이해

DBCC CHECKFILEGROUP 명령이 완료되면 SQL Server 오류 로그에 메시지가 기록됩니다. DBCC 명령이 성공적으로 실행되면 메시지에 실행 완료 및 명령이 실행된 소요 시간이 표시됩니다. 오류로 인해 DBCC 명령이 검사를 완료하기 전에 중지되면 메시지에 명령 종료, 상태 값 및 명령이 실행된 소요 시간이 표시됩니다. 다음 표에서는 메시지에 포함될 수 있는 상태 값을 나열하고 설명합니다.

시스템 상태 설명
0 오류 번호 8930이 발생했습니다. 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.
1 오류 번호 8967이 발생했습니다. 내부 DBCC 오류가 있습니다.
2 응급 모드 데이터베이스 복구 중에 오류가 발생했습니다.
3 메타데이터가 손상되어 DBCC 명령이 종료되었음을 나타냅니다.
4 어설션 또는 액세스 위반이 감지되었습니다.
5 알 수 없는 오류가 발생하여 DBCC 명령이 종료되었습니다.

오류 보고

DBCC CHECKFILEGROUP이 손상 오류를 발견할 때마다 SQL Server LOG 디렉터리에 미니덤프 파일(SQLDUMP<nnnn>.txt)이 생성됩니다. SQL Server 인스턴스에 대해 기능 사용 데이터 수집 및 오류 보고 기능을 설정하면 이 파일이 Microsoft에 자동으로 전달됩니다. 수집된 데이터를 사용하여 SQL Server 기능을 향상시킬 수 있습니다.

덤프 파일에는 DBCC CHECKFILEGROUP 명령의 결과 및 추가 진단 출력이 포함됩니다. 이 파일에는 제한된 DACL(임의 액세스 제어 목록)이 있습니다. 액세스는 SQL Server 서비스 계정 및 sysadmin 역할의 멤버로 제한됩니다. 기본적으로 sysadmin 역할에는 Windows BUILTIN\Administrators 그룹 및 로컬 관리자 그룹의 모든 멤버가 포함됩니다. 데이터 수집 프로세스가 실패해도 DBCC 명령은 실패하지 않습니다.

오류 해결

DBCC CHECKFILEGROUP이 오류를 보고할 경우 데이터베이스 백업에서 데이터베이스를 복원하는 것이 좋습니다. 복구 옵션은 DBCC CHECKFILEGROUP에 지정할 수 없습니다.

백업이 없을 경우 복구 옵션을 지정하여 DBCC CHECKDB를 실행하면 보고된 오류를 수정할 수 있습니다. 사용할 복구 옵션은 보고된 오류 목록 끝에 지정됩니다. REPAIR_ALLOW_DATA_LOSS 옵션을 사용하여 오류를 수정하면 일부 페이지, 즉 데이터의 삭제가 필요할 수 있습니다.

결과 집합

DBCC CHECKFILEGROUP은 다음 결과 집합을 반환합니다. 값은 다를 수 있습니다.

  • ESTIMATEONLY 또는 NO_INFOMSGS가 지정된 경우를 제외합니다.
  • 데이터베이스가 지정되지 않은 경우에는 옵션(NOINDEX 제외) 지정 여부에 관계없이 현재 데이터베이스에 해당됩니다.
DBCC results for 'master'.
DBCC results for 'sys.sysrowsetcolumns'.
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.
DBCC results for 'sys.sysrowsets'.
There are 97 rows in 1 pages for object 'sys.sysrowsets'.
DBCC results for 'sysallocunits'.
There are 195 rows in 3 pages for object 'sysallocunits'.
  
There are 2340 rows in 16 pages for object 'spt_values'.
DBCC results for 'MSreplication_options'.
There are 2 rows in 1 pages for object 'MSreplication_options'.
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

NO_INFOMSGS가 지정된 경우 DBCC CHECKFILEGROUP은 다음을 반환합니다.

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

ESTIMATEONLY가 지정된 경우 DBCC CHECKFILEGROUP은 다음을 반환합니다(값은 다를 수 있음).

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

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

예제

A. 데이터베이스의 PRIMARY 파일 그룹 검사

다음 예에서는 현재 데이터베이스의 주 파일 그룹을 검사합니다.

DBCC CHECKFILEGROUP;
GO

B. 비클러스터형 인덱스 없이 AdventureWorks PRIMARY 파일 그룹 확인

다음 예제에서는 PRIMARY 파일 그룹의 ID 번호 및 NOINDEX를 지정하여 AdventureWorks2022 데이터베이스의 PRIMARY 파일 그룹(비클러스터형 인덱스 제외)을 검사합니다.

USE AdventureWorks2022;
GO
DBCC CHECKFILEGROUP (1, NOINDEX);
GO

C. 옵션을 사용하여 PRIMARY 파일 그룹 검사

다음 예에서는 master 옵션을 지정하여 ESTIMATEONLY 데이터베이스의 PRIMARY 파일 그룹을 검사합니다.

USE master;
GO
DBCC CHECKFILEGROUP (1)
WITH ESTIMATEONLY;

추가 정보