Обновление SQL-запроса само блокируется - PullRequest
0 голосов
/ 05 октября 2018

Я заново создал свой запрос:

MERGE [Unshipped] u
USING [Order] order or ON or.ID = u.ID

WHEN MATCHED AND u.Date <> or.Date
   THEN
      UPDATE 
      SET u.Date = or.Date

WHEN NOT MATCHED
    THEN 
       INSERT (ID, FK, Date)
       VALUES (or.ID, or.FK, or.Date)

Table2

В моем примере из реальной жизни это кажется мертвой блокировкой.В столбце идентификатора есть кластеризованный индекс.

Мое исследование привело меня к двум проблемам:

  1. Часть MCH в MATCH проверяет индекс на совпадения, читает- блокировка этих строк / страниц по ходу дела.

  2. Когда у него есть строка без совпадения, он сначала попытается вставить новую строку индекса, чтобы запросить запись строки / страницы.-lock ...

Это случай для этого запроса?Кто-нибудь может посоветовать мне еще?Каков наилучший подход, чтобы предотвратить это?Любая информация была бы отличной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...