DBCC CHECKIDENT (Transact-SQL)
Проверяет текущее значение идентификатора для указанной таблицы и при необходимости изменяет значение идентификатора. Также инструкцию DBCC CHECKIDENT можно использовать для ручной установки нового текущего значения идентификатора для столбца идентификаторов.
Синтаксис
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Аргументы
table_name
Это имя таблицы, для которой выполняется проверка текущего значения идентификатора. Указанная таблица должна содержать столбец идентификаторов. Имена таблиц должны соответствовать требованиям для идентификаторов.NORESEED
Определяет, что текущее значение идентификатора не должно изменяться.RESEED
Определяет, что текущее значение идентификатора должно изменяться.new_reseed_value
Новое значение, предназначенное для использования в качестве текущего значения для столбца идентификаторов.WITH NO_INFOMSGS
Подавляет все информационные сообщения.
Замечания
Конкретные изменения, вносимые в текущее значение идентификатора, зависят от определений параметров.
команда DBCC CHECKIDENT |
Изменение текущего значения идентификатора или идентификаторов |
---|---|
DBCC CHECKIDENT ( table_name, NORESEED ) |
Текущее значение идентификатора не сбрасывается. Инструкция DBCC CHECKIDENT возвращает текущее значение идентификатора и текущее максимальное значение столбца идентификаторов. Если эти два значения не равны друг другу, необходимо сбросить значение идентификатора, чтобы избежать потенциальных ошибок или пропусков в последовательности значений. |
DBCC CHECKIDENT ( table_name) или DBCC CHECKIDENT ( table_name, RESEED ) |
Если текущее значение идентификатора таблицы меньше, чем максимальное значение из содержащихся в столбце, оно устанавливается в максимальное значение в столбце идентификаторов. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
Текущее значение идентификатора устанавливается равным new_reseed_value. Если со времени создания таблицы в нее не вставлялись строки или все строки были удалены с помощью инструкции TRUNCATE TABLE, то первая строка, вставляемая после запуска инструкции DBCC CHECKIDENT, будет использовать в качестве идентификатора значение new_reseed_value. Иначе следующая вставляемая строка будет использовать new_reseed_value + значение текущего приращения. Если таблица не пустая, установка значения идентификатора меньше, чем максимальное значение столбца идентификаторов может привести к одному из следующих условий.
|
Исключения
В следующей таблице перечислены условия, при которых инструкция DBCC CHECKIDENT не будет выполнять автоматический сброс текущего значения идентификатора, а также представлены способы сброса значения.
Условие |
Способы сброса |
---|---|
Текущее значение идентификатора больше максимального значения в таблице. |
или
|
Из таблицы удалены все строки. |
Выполните команду DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) с нужным начальным значением, присвоенным аргументу new_reseed_value. |
Изменение начального значения
Начальное значение представляет собой значение, вставляемое в столбец идентификаторов для самой первой строки, загружаемой в таблицу. Все последующие строки содержат текущее значение идентификатора, увеличенное на значение приращения, где текущее значение идентификатора представляет собой последнее значение идентификатора, сформированное для таблицы или представления. Дополнительные сведения см. в разделе Создание и изменение столбцов идентификаторов.
Инструкцию DBCC CHECKIDENT нельзя использовать для выполнения следующих задач.
Изменение исходного начального значения, которое было указано для столбца идентификаторов при создании таблицы или представления.
Повторное указание начального значения для существующих строк в таблице или представлении.
Чтобы изменить исходное начальное значение и повторно задать начальное значение для каких-либо существующих строк, необходимо удалить столбец идентификаторов и создать его повторно, указав новое начальное значение. Если таблица содержит данные, то номера идентификаторов добавляются к существующим строкам с учетом указанного начального значения и приращения. Порядок, в котором выполняется обновление строк, не гарантирован.
Результирующие наборы
В зависимости от того, указаны ли какие-либо параметры для таблицы, содержащей столбец идентификаторов, инструкция DBCC CHECKIDENT возвращает значения (которые могут изменяться):
Checking identity information: current identity value '290', current column value '290'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Вызывающий должен владеть таблицей или быть членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_owner или предопределенной роли базы данных db_ddladmin.
Примеры
А. Сброс текущего значения идентификатора при необходимости
Следующий пример при необходимости сбрасывает текущее значение идентификатора для таблицы Employee в базе данных AdventureWorks.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO
Б. Сообщение текущего значения идентификатора
Следующий пример сообщает текущее значение идентификатора в таблице Employee базы данных AdventureWorks, при этом не исправляя значение идентификатора, если оно окажется неверным.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO
В. Принудительная установка нового значения текущему значению идентификатора
В следующем примере текущему значению идентификатора в столбце EmployeeID в таблице Employee принудительно устанавливается значение 300. Так как таблица имеет существующие значения, следующая вставляемая строка будет использовать в качестве значения 301, то есть текущее значение идентификатора плюс 1, текущее значение приращения, определенное для столбца.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 300);
GO