DBCC CHECKCONSTRAINTS(Transact-SQL)
현재 데이터베이스의 지정한 테이블에서 특정 제약 조건이나 모든 제약 조건의 무결성을 확인합니다.
적용 대상: SQL Server(SQL Server 2008 - 현재 버전). |
구문
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 CHECKDB 및 DBCC CHECKTABLE을 사용하여 수행할 수 있습니다.
결과 집합
DBCC CHECKCONSTRAINTS는 다음 열이 있는 행 집합을 반환합니다.
열 이름 |
데이터 형식 |
설명 |
---|---|---|
Table Name |
varchar |
테이블 이름입니다. |
Constraint Name |
varchar |
위반된 제약 조건의 이름입니다. |
Where |
varchar |
제약 조건을 위반한 행을 식별하는 열 값 할당입니다. 이 열의 값은 제약 조건을 위반한 행을 쿼리하는 SELECT 문의 WHERE 절에 사용될 수 있습니다. |
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다.
예
1.테이블 검사
다음은 AdventureWorks 데이터베이스에 있는 Table1 테이블의 제약 조건 무결성을 검사하는 예입니다.
USE AdventureWorks2012;
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 AdventureWorks2012;
GO
DBCC CHECKCONSTRAINTS ('Production.CK_ProductCostHistory_EndDate');
GO
3.모든 테이블에서 설정 및 해제된 모든 제약 조건 검사
다음은 현재 데이터베이스의 모든 테이블에 설정 및 해제된 모든 제약 조건의 무결성을 검사하는 예입니다.
DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO