DBCC CHECKIDENT (Transact-SQL), Microsoft Docs

Перевіряє поточне значення ідентифікатора для зазначеної таблиці в середовищі SQL Server 2008 R2 та за потреби змінює значення ідентифікатора. Також інструкцію DBCC CHECKIDENT можна використовувати для ручного встановлення нового поточного значення ідентифікатора для стовпця ідентифікаторів.

Синтаксичні позначення Transact-SQL

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 TABL, перший рядок, що вставляється після запуску інструкції DBCC CHECKIDENT, буде використовувати значення new_reseed_value як ідентифікатор. Інакше наступний рядок, що вставляється, буде використовувати new_reseed_value + значення поточного збільшення.

Якщо таблиця не порожня, встановлення значення ідентифікатора менше, ніж максимальне значення стовпця ідентифікаторів, може призвести до однієї з таких умов.

Якщо на стовпці ідентифікаторів існують обмеження PRIMARY KEY або UNIQUE, при виконанні наступних операцій вставки в таблицю буде сформовано повідомлення про помилку 2627, тому що створене значення ідентифікатора конфліктуватиме з наявними значеннями.

Якщо обмежень PRIMARY KEY або UNIQUE не існує, наступні операції вставки призведуть до дублювання значень ідентифікаторів.

Винятки

У наступній таблиці перелічені умови, за яких інструкція DBCC CHECKIDENT не виконуватиме автоматичне скидання поточного значення ідентифікатора, а також представлені способи скидання значення.

Поточне значення ідентифікатора більше за максимальне значення в таблиці.

Виконайте команду DBCC CHECKIDENT (table_name, NORESEED), щоб визначити поточне максимальне значення в стовпці, а потім вкажіть його як аргумент new_reseed_value у команді DBCC CHECKIDENT (table_name, RESEED, new_reseed_value).

Виконайтекоманду DBCC CHECKIDENT (table_name, RESEED, new_reseed_value), для аргументу new_reseed_value встановіть дуже маленьке значення, а потім виконайте команду DBCC CHECKIDENT (table_name, RESEED), щоб виправити це значення.

З таблиці видалено всі рядки.

Виконайте команду 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 повністю. Якщо DBCC printed error messages, звертайтеся до нашої системи адміністратора.

Дозволи

Учасник повинен бути власником таблиці, членом зумовленої ролі сервера sysadmin, зумовленої ролі бази даних db_owner або зумовленої ролі бази даних db_ddladmin.

А. Скидання поточного значення ідентифікатора за необхідності

Наступний приклад у разі потреби скидає поточне значення ідентифікатора для таблиці AddressType у базі даних База даних AdventureWorks2008R2.

Б. Повідомлення поточного значення ідентифікатора

Наступний приклад повідомляє поточне значення ідентифікатора в таблиці AddressType бази даних База даних AdventureWorks2008R2, не виправляючи значення ідентифікатора, якщо воно виявиться неправильним.

В. Примусове встановлення нового значення поточному значенню ідентифікатора

Наступний приклад примусово встановлює ідентифікатор значення 10 в стовпці AddressTypeID для таблиці AddressType. Так як в таблиці вже є рядки, наступний рядок, що вставляється, буде використовувати як значення 11, тобто поточне значення ідентифікатора плюс 1, поточне значення збільшення, визначене для стовпця.