Вопрос

После переноса данных с SQL Server 2000 на SQL Server 2008, когда я делаю какую -либо транзакцию в таблице, которая обнаруживает больше строк в базе данных, это дает мне ошибку.

 Transaction (Process ID 59) was deadlocked on lock resources with
 another process and has been chosen as the deadlock victim. 
 Rerun the transaction.

На таблице есть 3 триггера (вставьте, обновляйте, удалите). Как я могу решить эту проблему?

Это было полезно?

Решение

После обновления до SQL Server 2008 вы запустили ниже?

  1. DBCC UpdateUsgae
  2. Обновить статистику с помощью FullScan
  3. Восстановите все индексы

Капли статистики значительно изменяется с 2000 года на SQL Server 2008, и вышеуказанные шаги очень важны после обновления. Я видел, как много людей сталкивались с проблемами производительности, но не тупиками. Я бы постарался сделать все вышеперечисленное, если вы еще не старались воспроизвести проблему потом.

Тем не менее, каковы результаты Select @@ версии в поле 2008 года? Вы обновляете одну ряд или несколько строк?

Другие советы

я подозревать что это может быть связано с оптимизаторами в разных версиях обработки заблокированная эскалация иначе. Вы можете проверить на наличие Lock:Escalation События?

Если вы запустите Profiler и записываете все графики тупиков, вы можете узнать, какие таблицы находятся на тупиках, включая страницы. Это должно помочь сузить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top