Выраженное в ответ ответ говорит о тупике. Хотя, не было достаточной информации, чтобы предположить это, так что это может быть просто блокировка ожидания ожидания.
Какие ошибки вы видите:
- 1)
тупиковый жертва 1205 ошибка
«Server: Msg 1205, уровень 13, состояние 50, строка 1
транзакций (Process ID 5) было заторможенный на блокировки ресурсов другим процессом и был выбран в качестве жертвы тупика. Перезапустите транзакцию. "?
- 2)
ошибка тайм-аут
«Время ожидания истекло. Время таймаута истекло до завершения операции или сервер не отвечает.»
Поскольку тема стартера написана: «Но таблица просто блокирует и отпускает через 5-6 минут», я считаю, что это период для 2), в то время как жертвы взаимоблокировок 1) выбираются и откатываются за 5 секунд ,
Также было упомянуто, что вставки находятся с разных компьютеров. Запросы, выполняемые транзакционными компонентами COM +, по умолчанию будут иметь сериализуемый уровень tx iso, который исключает блокировку, но увеличивает конфликт блокировки (ожидание).
«Я использовал транзакции в хранимой процедуре, а также попытался установить уровень изоляции для READ_UNCOMMITTED, SERIALIZABLE и SNAPSHOT. Кажется, ничего не работает должным образом»
Это больше, чем, вероятно, означает, что ваш дизайн и индексирование не являются «правильными», но SQL Server просто делает свою работу должным образом.
С предоставленной информацией она угадывает игру, чтобы что-то посоветовать.
Избегайте размещения CL-IX (кластерные индексы) в столбцах DML-ed (обновлено, вставлено, удалено). DML для кластеризованных столбцов столбца индекса потребуют блокировок на CL-IX (для перемещения строки) и всех некластеризованных индексов (поскольку уровень листа некластеризованных индексов указывает строки по значению ключа CL-IX)
Вы должны иметь индексированная таблица или вся таблица будут заблокированы (заблокированы) на вставке, что приведет к увеличению времени ожидания и тайм-аутов.
Read "How to resolve blocking problems that are caused by lock escalation in SQL Server" (примечание: это устаревшая статья Для бывшего, вы должны использовать TOP вместо устаревшого ROWCOUNT посоветовал там.).
В SQL Server 2005 и выше, следует учитывать READ COMMITTED СНАПШОТА ОГО уровня ISO, который возможно, когда используется READ COMMITTED по умолчанию.
Пожалуйста, сообщите данные об ошибке? Вы получаете DeadLocks? sp_lock2 может помочь вам в детализации. –
Hi firoz, я не получаю никаких подробностей об ошибке. Я использую IE8 для тестирования, и он просто говорит об ошибке на странице в строке состояния. Я проверю sp_lock2. Спасибо за ур комментарий – ManojAnavatti