Insert identity set on: SET IDENTITY_INSERT (Transact-SQL) — SQL Server

База данных

— как включить Identity_insert на уровне SQL Server

спросил

Изменено
2 года, 6 месяцев назад

Просмотрено
4к раз

В статье https://support.microsoft.com/en-us/help/4568653/fix-insert-exec-doesn-t-work-when-you-insert-row-content-explicit-i
он сказал:

INSERT EXEC не работает, когда вы вставляете строку, содержащую явные
значение идентификатора в таблицу со столбцом IDENTITY и IDENTITY_INSERT
ВЫКЛ по умолчанию в SQL Server

Это означает, что IDENTITY_INSERT может быть отключен по умолчанию в SQL Server и таким же образом включен.
Кто-нибудь знает, как этого добиться?

  • sql-сервер
  • база данных
  • управление базой данных

1

Вы должны включить его для любой таблицы, в которую вы хотите вставить, например:

 SET IDENTITY_INSERT [dbo]. [tablename] ON
 

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

 SET IDENTITY_INSERT [dbo].[tablename] OFF
 

После отключения вы можете включить его для другой таблицы

Документацию см. здесь

Нет. Документация это подтверждает:

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

Замечания

В любое время только одна таблица в сеансе может иметь значение ON для свойства IDENTITY_INSERT. Если для таблицы это свойство уже установлено в ON, а инструкция SET IDENTITY_INSERT ON выдается для другой таблицы, SQL Server возвращает сообщение об ошибке, в котором говорится, что SET IDENTITY_INSERT уже включен, и сообщает таблицу, для которой она включена.

Если вставленное значение больше, чем текущее значение идентификатора для таблицы, SQL Server автоматически использует новое вставленное значение в качестве текущего значения идентификатора.

Параметр SET IDENTITY_INSERT устанавливается во время выполнения или выполнения, а не во время синтаксического анализа.

Упорная мина .

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

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

t sql — Как включить identity_insert в SQL Server

Задавать вопрос

спросил

Изменено
7 лет, 3 месяца назад

Просмотрено
8к раз

Я получаю команду set identity_insert table_name on; , но по какой-то причине он фактически не меняет атрибут. Я сделал это с учетной записью, с которой создал таблицу, а также создал учетную запись «администратора» и дал ей разрешения на любые действия (насколько мне известно).

Всякий раз, когда я запускаю команду под любой учетной записью, я получаю результат «0 затронутых строк», затем я не могу выполнить запрос для вставки строк, которые я хочу вставить со следующей ошибкой:

Невозможно вставить явное значение для столбца идентификаторов в таблицу table_name, если для IDENTITY_INSERT установлено значение OFF.

Кроме того, я попытался включить имя схемы в запрос, например:

 set identity_insert mySchema.table_name on;
 

но я получаю следующую ошибку:

Не удается найти объект «mySchema.table_name», поскольку он не существует или у вас нет разрешений.

Также следует отметить, что мой проект выглядит так:

 локальный хост\SQLEXPRESS
-Базы данных
--Системные базы данных
--mySchema
 

Кто-нибудь знает решение этой проблемы?

  • sql-server
  • t-sql
  • вставка
  • идентичность

Вы используете правильный синтаксис:

 SET IDENTITY_INSERT dbo.