2017-02-20 20 views
-1

У меня есть работа, которую необходимо обновить таблицу один раз в день с помощью: -MSSQL 2008 SET IDENTITY ВСТАВИТЬ на живой базе

SET IDENTITY INSERT ON

. Однако в одно и то же время другие пользователи используют эту живую базу данных и вставляют записи, и это необходимо сделать, используя SET IDENTITY INSERT OFF.

Есть ли способ, когда задание может выполняться, сохраняя при этом возможность вставлять записи?

+0

Разве это не так? Разве jub не требует «установить идентификационную вставку», пока пользователь требует, чтобы он был выключен? –

+0

Вы правы. Для задания требуется, чтобы идентификационная вставка включалась, а текущие транзакции требуют, чтобы идентификационная вставка ВЫКЛ. – user1480192

+0

«Задача требует, чтобы идентификационная вставка была включена, а текущие транзакции требуют вставки идентификатора OFF» - это немного нечетно. –

ответ

0

Для этого нет никаких проблем.

Объем Установка IDENTITY Вкладыш session,

так что если вы использовали следующий код:

SET IDENTITY_INSERT TableName ON 
Insert statement ... 

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

Cannot insert explicit value for identity column in table 'TableName' when IDENTITY_INSERT is set to OFF.

От MSDN: -

At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, SQL Server returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for.

+0

Итак, некоторые пользователи могут получить доступ к таблице с помощью Identity_Insert ON, в то время как другие могут получить доступ к одной и той же таблице с помощью identity_insert_off? – user1480192

+0

Да, как сообщается в MSDN, его область действия - сеанс. –

+0

используйте последовательность в вашем случае. –