SQL Server 2005 SP тупиковая проблема - PullRequest
0 голосов
/ 11 августа 2009

У меня запланированное задание с ежедневным запуском SP (SQL Server 2005). В последнее время я часто сталкиваюсь с проблемой тупика для этого SP. Вот сообщение об ошибке:

Message
Executed as user: dbo. Transaction (Process ID 56) was deadlocked on thread | 
communication buffer resources with another process and has been chosen as the deadlock 
victim. Rerun the transaction. [SQLSTATE 40001] (Error 1205).  The step failed.

SP использует несколько взаимосвязанных представлений для некоторых таблиц, одна из которых - таблица данных большого размера с несколькими миллионами строк данных (и продолжает расти). Я не уверен, что любое задание или запрос к таблице приведет к недоступности SP для таблицы? Я собираюсь выяснить, кто находится в сети, используя запрос . Это может привести к тому, что в течение этого времени на сервере SQL появится какой-либо запрос или пользователь.

Не уверен, есть ли у кого-то похожая проблема или это известная проблема SQL 2005? Любой дополнительный способ, который я должен сделать в своем SP или на сервере SQL, чтобы избежать тупика?

Ответы [ 2 ]

1 голос
/ 11 августа 2009

Взаимоблокировки - это когда две транзакции удерживают некоторые ресурсы и хотят иметь ресурс, который есть и у другой - ни одна из них не может продолжаться, поскольку они обе ждут друг друга. Они не могут быть полностью устранены, но многое можно сделать, чтобы смягчить их. Ремус и Радж предлагают собирать больше информации о них в Profiler - что я также рекомендую - обычно может помочь оптимизация ваших запросов (если вы знаете, какие из них участвуют). Вот статья MSDN, которая может помочь вам в этом: « Минимизация тупиков ».

1 голос
/ 11 августа 2009

Используйте SQL Server Profiler для отслеживания всех запущенных запросов. Я положил вывод в SQL Server. Это поможет вам выяснить, какие из них имеют доступ к вашей конкретной таблице / таблицам. Опубликуйте свои выводы, и мы можем помочь вам в этом.

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