다음을 통해 공유


DBCC CHECKCONSTRAINTS(Transact-SQL)

현재 데이터베이스의 지정한 테이블에서 특정 제약 조건이나 모든 제약 조건의 무결성을 검사합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

DBCC CHECKCONSTRAINTS
[ 
        ( 
        table_name | table_id | constraint_name | constraint_id 
        )
]
    [ WITH 
        [ { ALL_CONSTRAINTS | ALL_ERRORMSGS } ]
    [ , ] [ NO_INFOMSGS ] 
    ]

인수

  • table_name | table_id | constraint_name | constraint_id
    검사할 테이블이나 제약 조건입니다. table_name 또는 table_id를 지정하면 해당 테이블에 설정된 모든 제약 조건을 검사합니다. constraint_name 또는 constraint_id를 지정하면 해당 제약 조건만 검사합니다. 테이블 식별자도 제약 조건 식별자도 지정하지 않으면 현재 데이터베이스의 모든 테이블에 대해 설정된 모든 제약 조건을 검사합니다.

    제약 조건 이름은 제약 조건이 속해 있는 테이블을 고유하게 식별합니다. 자세한 내용은 식별자를 참조하십시오.

  • WITH
    지정할 옵션을 설정합니다.

  • ALL_CONSTRAINTS
    테이블 이름을 지정하거나 모든 테이블을 검사하는 경우에는 해당 테이블에서 설정 및 해제된 모든 제약 조건을 검사합니다. 그렇지 않은 경우에는 설정된 제약 조건만 검사합니다. 제약 조건 이름이 지정된 경우에는 ALL_CONSTRAINTS가 적용되지 않습니다.

  • ALL_ERRORMSGS
    검사 대상 테이블에서 제약 조건을 위반하는 모든 행을 반환합니다. 기본값은 처음 200개의 행입니다.

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

주의

DBCC CHECKCONSTRAINTS는 테이블의 모든 FOREIGN KEY 제약 조건 및 CHECK 제약 조건에 대한 쿼리를 생성 및 실행합니다.

예를 들어 외래 키 쿼리의 형식은 다음과 같습니다.

SELECT <columns>
FROM <table_being_checked> LEFT JOIN <referenced_table>
    ON <table_being_checked.fkey1> = <referenced_table.pkey1> 
    AND <table_being_checked.fkey2> = <referenced_table.pkey2>
WHERE <table_being_checked.fkey1> IS NOT NULL 
    AND <referenced_table.pkey1> IS NULL
    AND <table_being_checked.fkey2> IS NOT NULL
    AND <referenced_table.pkey2> IS NULL

쿼리 데이터는 임시 테이블에 저장됩니다. 요청한 모든 테이블이나 제약 조건의 검사가 끝나면 결과 집합이 반환됩니다.

DBCC CHECKCONSTRAINTS는 FOREIGN KEY와 CHECK 제약 조건의 무결성을 검사하지만 테이블의 디스크에서 데이터 구조의 무결성은 검사하지 않습니다. 이러한 데이터 구조 검사는 DBCC CHECKDBDBCC CHECKTABLE을 사용하여 수행할 수 있습니다.

결과 집합

DBCC CHECKCONSTRAINTS는 다음 열이 있는 행 집합을 반환합니다.

열 이름

데이터 형식

설명

Table Name

varchar

테이블 이름입니다.

Constraint Name

varchar

위반된 제약 조건의 이름입니다.

Where

varchar

제약 조건을 위반한 행을 식별하는 열 값 할당입니다.

이 열의 값은 제약 조건을 위반한 행을 쿼리하는 SELECT 문의 WHERE 절에 사용될 수 있습니다.

사용 권한

sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다.

1. 테이블 검사

다음은 AdventureWorks 데이터베이스에 있는 Table1 테이블의 제약 조건 무결성을 검사하는 예입니다.

USE AdventureWorks;
GO
CREATE TABLE Table1 (Col1 int, Col2 char (30));
GO
INSERT INTO Table1 VALUES (100, 'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO

2. 특정 제약 조건 검사

다음은 CK_ProductCostHistory_EndDate 제약 조건의 무결성을 검사하는 예입니다.

USE AdventureWorks;
GO
DBCC CHECKCONSTRAINTS ("Production.CK_ProductCostHistory_EndDate");
GO

3. 모든 테이블에서 설정 및 해제된 모든 제약 조건 검사

다음은 현재 데이터베이스의 모든 테이블에 설정 및 해제된 모든 제약 조건의 무결성을 검사하는 예입니다.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO