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 г. |
|