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 |
Значения столбцов, которые идентифицируют строку или строки, которые нарушают ограничение. Значение этого столбца может быть использовано в предложении WHERE инструкции SELECT, которая запрашивает строки, нарушающие ограничение. |
Разрешения
Необходимо членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.
Примеры
A. Проверка таблицы
Следующий пример проверяет целостность ограничений таблицы Table1 в базе данных База данных AdventureWorks2008R2.
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
Б. Проверка конкретного ограничения
Следующий пример проверяет целостность ограничения CK_ProductCostHistory_EndDate.
USE AdventureWorks2008R2;
GO
DBCC CHECKCONSTRAINTS ("Production.CK_ProductCostHistory_EndDate");
GO
В. Проверка всех включенных и отключенных ограничений всех таблиц
Следующий пример проверяет целостность всех включенных и отключенных ограничений всех таблиц текущей базы данных.
DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO