2013-09-18 2 views
0

У меня есть запрос на обновление, который обновляет статус клиента по уникальному идентификатору клиента на нескольких уровнях потока приложений. Я исключения несколько раз следующего в моих журналах приложенийSQL Server - Блокировка уровня строк и блокировка уровня таблицы

Сделки была в тупике в ресурсах блокировки с другим процессом и был выбран в качестве тупиковой жертвы. Перезапустите транзакцию.

Мой запрос на обновление выглядит следующим образом:

UPDATE customer SET status= ? WHERE cust_id = ? 

Я предполагаю, что это из-за блокировок на уровне таблицы, но я не позволил ей. Мой вопрос: включена ли блокировка уровня таблицы по умолчанию? Будет ли реализация блокировки уровня строк помочь мне решить эту ситуацию? Как включить блокировку уровня строк для этого запроса? спасибо

+0

Захватите информацию о тупике и разместите ее здесь (XML, а не изображение!). Выполните шаги из [Сохранить графики взаимоблокировок] (http://technet.microsoft.com/en-us/library/ms190465.aspx) –

+0

http://stackoverflow.com/questions/1038113/how-to-find-current -transaction уровня – vasja

ответ

0

Это может быть слишком поздно, но здесь ничего не происходит.

Блокировка уровня таблицы по умолчанию используется в SQL-сервере. Блокировка уровня строки была бы полезна в вашем случае, но если система становится низкой на доступных ресурсах, она переходит на блокировку уровня таблицы, что может привести к проблемам для вас.

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