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.