• 相关软件
    >DBCC CHECKCONSTRAINTS 创建者:webmaster 更新时间:2006-02-16 15:51

    检查指定表上的指定约束或所有约束的完整性。



    语法


    DBCC CHECKCONSTRAINTS

        [( 'table_name' | 'constraint_name'

        )]



        [ WITH { ALL_ERRORMSGS | ALL_CONSTRAINTS } ]



    参数


    'table_name' | 'constraint_name'



    是要检查的表或约束。如果指定 table_name,则对该表所有启用的约束进行检查。如果指定 constraint_name,则只对该约束进行检查。如果 table_nameconstraint_name 都没有指定,将检查当前数据库中所有表上启用的约束。



    约束名称唯一地标识其所属的表。有关更多信息,请参见使用标识符



    ALL_CONSTRAINTS



    如果指定了表名或检查所有的表,则对表上所有启用及禁用的约束进行检查。否则,只检查启用的约束。如果指定了约束名,则 ALL_CONSTRAINTS 无效。



    ALL_ERRORMSGS



    返回所检查的表中违反约束的所有行。默认为前 200 行。



    注释


    DBCC CHECKCONSTRAINTS 构造并执行一个对表的所有外键约束和检查约束的查询。



    例如,外键查询可有如下形式:



    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 检查外键和已检查的约束的完整性,但并不检查表的磁盘上数据结构的完整性。这些数据结构检查可用 DBCC CHECKDB 和 DBCC CHECKTABLE 执行。



    结果集


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




























    列名数据类型描述
    Table Namevarchar表的名称。
    Constraint Namevarchar违反的约束名。
    Wherevarchar标识违反约束的行的列值分配。

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





    例如,orders 表的 DBCC CHECKCONSTRAINT 将产生下列结果。



    Table Name   Constraint Name      Where
    -----------   -----------------------   -----------------------
    orders     PartNo_FKey       PartNo = '12'


    Where 列中的值"PartNo = '12'"可以在识别违反约束"PartNo_FKEY"的行的 SELECT 语句中使用。



    Select * 
    From orders
    Where PartNo = '12'


    之后,用户可以决定是否对行进行修改、删除,或者只进行调整。



    权限


    DBCC CHECKCONSTRAINTS 权限默认授予 sysadmin 固定服务器角色和 db_owner 固定数据库角色的成员且不可转让。



    示例


    A. 检查表


    下例检查 pubs 数据库中 orders 表的约束完整性。



    DBCC CHECKCONSTRAINTS ('authors')
    GO


    B. 检查特定约束


    下例检查 PartNo_FKey 约束的完整性。约束名称唯一地标识要声明的表。



    DBCC CHECKCONSTRAINTS ('PartNo_Fkey')
    GO


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


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



    DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
    GO

    相关文章
    本页查看次数: