DBCC CHECKCONSTRAINTS (Transact-SQL)

更新日期: 2005 年 12 月 5 日

检查当前数据库中指定表上的指定约束或所有约束的完整性。

主题链接图标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_nametable_id 都未指定,则对该表中所有启用的约束进行检查。如果指定了 constraint_nameconstraint_id,则只对该约束进行检查。如果表标识符或约束标识符都未指定,则对当前数据库中所有表上的已启用约束进行检查。

    约束名称唯一地标识其所属的表。有关详细信息,请参阅标识符

  • WITH
    启用要指定的选项
  • ALL_CONSTRAINTS
    如果指定了表名或检查所有的表,则对表上所有启用及禁用的约束进行检查;否则,仅对启用的约束进行检查。如果指定了约束名,则 ALL_CONSTRAINTS 无效。
  • ALL_ERRORMSGS
    返回所检查的表中违反约束的所有行。默认为前 200 行。
  • NO_INFOMSGS
    取消显示所有信息性消息。

结果集

DBCC CHECKCONSTRAINTS 返回带有以下列的行集。

列名 数据类型 说明

Table Name

varchar

表的名称。

Constraint Name

varchar

违反的约束名。

Where

varchar

标识违反约束的行的列值分配。

该列中的值可以用于 SELECT 语句(用于查询违反约束的行)的 WHERE 子句中。

备注

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 执行这些数据结构检查。

权限

要求具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。

示例

A. 检查表

以下示例检查 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

B. 检查特定约束

以下示例检查 Production 架构中 CK_ProductCostHistory_EndDate 约束的完整性。

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

C. 检查所有表的所有启用和禁用的约束

以下示例检查当前数据库中所有表上的所有启用和禁用约束的完整性。

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

请参阅

参考

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

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

更改的内容:
  • 更改了语法关系图,以指示可以在不含有 { ALL_CONSTRAINTS | ALL_ERRORMSGS } 的 WITH 子句中指定 NO_INFOMSGS。