微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DBCC大全集之适用版本MS SQLServer 2008 R2----DBCC CHECKCONSTRAINTS检查当前数据库中指定表上的指定约束或所有约束的完整性



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

 

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

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

列名

数据类型

说明

Table Name

varchar

表的名称

Constraint Name

varchar

违反的约束名。

Where

varchar

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

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

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

A. 检查表

以下示例检查 AdventureWorks2008R2 数据库中的 Table1 表的约束完整性。

USE AdventureWorks2008R2;
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. 检查特定约束

以下示例检查 CK_ProductCostHistory_EndDate 约束的完整性。

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


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

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

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

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

 

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

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

列名

数据类型

说明

Table Name

varchar

表的名称

Constraint Name

varchar

违反的约束名。

Where

varchar

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

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

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

A. 检查表

以下示例检查 AdventureWorks2008R2 数据库中的 Table1 表的约束完整性。

USE AdventureWorks2008R2;
GO
CREATE TABLE Table1 (Col1 int,'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO


B. 检查特定约束

以下示例检查 CK_ProductCostHistory_EndDate 约束的完整性。

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


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

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

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO


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

 

Transact-SQL 语法约定

DBCC CHECKCONSTRAINTS
[ 
        ( 
        table_name | table_id | constraint_name | constraint_id 
        )
]
    [ WITH 
        [ { ALL_CONSTRAINTS | ALL_ERRORMSGS } ]
    [,'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO


B. 检查特定约束

以下示例检查 CK_ProductCostHistory_EndDate 约束的完整性。

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


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

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

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

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

 

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

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

列名

数据类型

说明

Table Name

varchar

表的名称

Constraint Name

varchar

违反的约束名。

Where

varchar

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

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

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

A. 检查表

以下示例检查 AdventureWorks2008R2 数据库中的 Table1 表的约束完整性。

USE AdventureWorks2008R2;
GO
CREATE TABLE Table1 (Col1 int,'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO


B. 检查特定约束

以下示例检查 CK_ProductCostHistory_EndDate 约束的完整性。

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


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

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

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐