Есть ли недостатки при включении Identity_Insert на производственном сервере sql? - PullRequest
0 голосов
/ 26 февраля 2012

Я выполняю модульный тест. Добавьте / вставьте запись данных в таблицу с именем столбца Id, который является столбцом идентификаторов.

В модульном тесте я вручную вставляю идентификатор.Таким образом, я мог бы установить Identiy_Insert в положение ON перед оператором вставки.

Есть ли какие-либо недостатки в том, что эта функция включена для производственного сервера?

Или я должен изменить свой метод модульного тестирования?Вставив значение в поле «Имя» и получив

и ASSERT, этого должно быть достаточно, чтобы запись данных была вставлена ​​для интеграций

ради.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

это не та функция, которую вы можете оставить. Действителен для каждого соединения.

Попробуйте, откройте соединение в SSMS и установите для ON одну таблицу. Затем откройте другое соединение, и вы увидите, что если вы попытаетесь вставить IDENTITY в ту же таблицу, это не удастся.

0 голосов
/ 26 февраля 2012

Из MSDN:

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

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

...