2013-04-08 3 views
-1

Мне нужно создать новую таблицу с внешним ключом с таблицей Users.SQL ALTER TABLE SET (LOCK_ESCALATION = TABLE) на рабочем сервере

Таблица пользователей содержит 2 миллиона записей.

Когда я запускаю скрипт на нашем тестовом сервере, он блокирует эту таблицу и проверяет, что пользователи не могут запрашивать эту таблицу во время транзакции.

Запрос начинается как;

BEGIN TRANSACTION 
GO 
ALTER TABLE dbo.Users SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT 
/*CREATE NEW TABLE AND FOREIGN KEYS HERE*/ 

Что было бы безопасным способом запускать на производстве без его блокировки?

Должен ли мы установить производственный сервер в «Режим обслуживания» и снова вернуться в исходное состояние после завершения транзакции sql?

+1

Этот код не имеет смысла. –

+0

В чем проблема с кодом? Я добавил комментарий, что происходит в следующем заявлении. –

+1

«Мне нужно создать новую таблицу с внешним ключом с таблицей« Пользователи »- просто создайте ее! –

ответ

0

Для создания новой таблицы и ее внешних ключей и даже новых индексов таблицы вам не нужно блокировать или устанавливать lock_escalation указанной таблицы (в вашем случае dbo.Users). Просто не выполняйте вышеуказанную транзакцию, только создание новой таблицы и внешних ключей.