У меня возникла проблема взаимоблокировки, и я обнаружил, что она вызвана двумя хранимыми процедурами, которые вызываются разными потоками (2 из которых называются веб-службами).
- Insert sp, который вставляет данные в таблицу X.
- Удалить sp, который удаляет данные в таблице X.
Более того, я получил результат, который сообщил мне о взаимоблокировке, произошедшей в неуникальном и некластеризованном индексе X-таблицы. Есть ли у вас какие-либо идеи для решения этой проблемы?
Обновить
Из блокировка чтения/записи я думаю, что это ошибка из-за следующих утверждений .
- В операторе вставки он получает идентификатор (кластеризованный индекс), а затем некластеризованный индекс.
- В статусе удаления он получает некластеризованный индекс перед идентификатором.
Итак, мне нужно выбрать идентификатор для удаления статуса, как в следующем заявлении.
SELECT id FROM X WITH(NOLOCK) WHERE [condition]
PS. Обе хранимые процедуры вызываются в транзакции.
Спасибо,