У меня есть рабочая таблица (tQueryReports), где я
- удаляю предыдущий результат для текущего пользователя
- BULK INSERT строк, найденных в другой таблице, с некоторыми более тяжелыми вычислениями и XML поиск
- go по развернутым строкам, создание PDF, обновление каждой строки с помощью URL-адреса PDF
В течение времени записи все работало нормально, но теперь внезапно оно начало блокировка и ожидание, в конечном итоге блокирование всего приложения.
Я обнаружил (в Activity Monitor MS SQL Server 12.0.2269) в этой таблице был оператор UPDATE (скорее всего, обновление URL сгенерированными отчетами), за которым следовал куча в основном BULK INSERTS ждет. Это не похоже на go само по себе, просто продолжает накапливать ожидающие процессы.
Я не могу понять, почему UPDATE блокирует или заблокирован, поэтому сейчас я просто хотел бы знать, как установить блокировки на эта таблица.
Пользователь либо запрашивает данные (BULK INSERTing), либо генерирует отчеты в формате PDF по найденным строкам (UPDATE).
Поэтому я не думаю, что LOCKing должен быть слишком сложным. Я бы даже сказал, в этом нет необходимости.