DBCC CHECKCONSTRAINTS (Transact-SQL)

Изменения: 5 декабря 2005 г.

Проверяет целостность указанного ограничения или всех ограничений заданной таблицы в текущей базе данных.

Значок ссылки на разделСоглашения о синтаксическом обозначении в 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 возвращает набор строк со следующими столбцами.

Имя столбца Тип данных Описание

Table Name

varchar

Имя таблицы.

Constraint Name

varchar

Имя нарушенного ограничения.

Where

varchar

Значения столбцов, которые идентифицируют строку или строки, которые нарушают ограничение.

Значение этого столбца может быть использовано в предложении WHERE инструкции SELECT, которая запрашивает строки, нарушающие ограничение.

Замечания

Команда 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.

Разрешения

Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.

Примеры

A. Проверка таблицы

Следующий пример проверяет целостность ограничений таблицы Table1 в базе данных AdventureWorks.

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

Б. Проверка конкретного ограничения

В следующем примере проверяется целостность ограничения CK_ProductCostHistory_EndDate в схеме Production.

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

В. Проверка всех включенных и отключенных ограничений всех таблиц

Следующий пример проверяет целостность всех включенных и отключенных ограничений всех таблиц текущей базы данных.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

См. также

Справочник

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

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Изменения
  • Диаграмма синтаксиса изменена и теперь показывает, что параметр NO_INFOMSGS может быть указан в предложении WITH без параметров {ALL_CONSTRAINTS | ALL_ERRORMSGS}.