2010-07-30 2 views
0

С следующим кодом, я IDENTITY_INSERT включен, чтобы иметь возможность вставить какое-то значение в явном виде:IDENTITY_INSERT включен, но есть ошибка, но

SET IDENTITY_INSERT dbo.myTable ON 
Go 

вставка идентичности устанавливаются, чтобы быть первичным ключом, а не нуль

в моей программе C#, когда я хочу, чтобы вставить значение, генерируется эта ошибка:

IDENTITY_INSERT is turned off

но я превратил его о n

В чем проблема и как ее решить?

спасибо

+0

Вы включаете его из программы C#? Я не думаю, что это глобальная настройка - это сеанс. Вам нужно будет включить его из кода C#, внести свои вставки и затем отключить его. – PatrickSteele

+0

У меня есть большая проблема, что вы используете set identity_insert из C#. Это не то, что должно выполняться обычным образом из пользовательского интерфейса. Это очень опасная практика. Выполнение этой ошибки является угрозой целостности данных, и эти задачи должны использоваться только опытными базами данных, а не приложением. Обычно это делается только в редких случаях при вставке устаревших данных. Если вы планируете использовать свой дизайн для регулярного использования, вам нужно проверить, нет ли лучшего решения. – HLGEM

ответ

2

IDENTITY_INSERT установка работает только в текущей сессии SQL, например, вы не можете включить его в данной таблице в SQL Server Management Studio, а затем запустить свой код C# и ожидать, что он будет работать.

Что нужно сделать, так это то, что оператор SET IDENTITY_INSERT dbo.myTable ON будет частью вашего приложения C# - сначала установите для параметра значение ВКЛ в вашей команде, а затем сделайте все, что вам нужно сделать из своего приложения C#, и в конце поверните выключите эту настройку, опять же, с вашего кода на C#.

Смежные вопросы