Показать сообщение отдельно
Старый 06.07.2006, 11:41   #1  
Sequel is offline
Sequel
Участник
 
53 / 13 (1) ++
Регистрация: 17.06.2005
Адрес: Новокузнецк
Блокировка ключа индекса
Столкнулся со следующей проблемой: выбираю для обновления строку из таблицы WMSShipment (таблица отгрузок) по полю ShipmentId (номер отгрузки). При этом, поскольку по полю ShipmentId стоит индекс, происходит блокировка на обновление ключа индекса со значением этой строки. Это все нормально и понятно - надо запретить другим пользователям выбирать эту строку на обновление. Но в таблице отгрузок еще есть индекс по полю статус, и значение ключа этого индекса тоже блокируется!!! Но статус - это ведь не уникальный индекс - в этой таблице всего несколько разных статусов, и это значит что теперь огромная часть таблицы будет заблокирована. К примеру если мы выберем всего 1 строку со статусом Активизировано, будут заблокированы все строки с таким статусом!!! Кто нибудь сталкивался уже с этим? Кто нибудь может сказать на какие именно индексы в SQL SERVER
накладывается блокировка обновления если у таблицы несколько индексов?
Работаем в Аксапте, Kernel Rollup 1, SQL Server 2005, подозреваю что 2000-й sql работает с блокировками на обновление так же