Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Process was deadlocked - как указать что килять надо другой процесс  [new]
didit
Guest
Всем, день добрый!
Помогите решить след. проблему - есть очень важный web-отчет, но все
чаше при его запуске вылетает :

(General Error (Transaction (Process ID 59) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.).

отчет выполняет один мегазапрос "select ...... " всего строка>40000 симв. - не я его писал, и соответсвенно переписывать его нет желания.
Вопрос - можно ли как-нибудь указать серверу, что килять его нельзя, а лучше
кильнуть другой процесс, конфликтующий с этим.
18 авг 05, 13:01    [1798498]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
http://rsdn.ru/?article/?db/deadlocks.xml
18 авг 05, 13:04    [1798522]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
Crimean
Member

Откуда:
Сообщений: 13148
SET DEADLOCK_PRIORITY
18 авг 05, 13:04    [1798524]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
Glory
Member

Откуда:
Сообщений: 104760
didit
Вопрос - можно ли как-нибудь указать серверу, что килять его нельзя, а лучше
кильнуть другой процесс, конфликтующий с этим.


Сервер сам выбирает жертву, на основе "the transaction that is least expensive to undo "
Но в сессии можно задать SET DEADLOCK_PRIORITY
18 авг 05, 13:07    [1798537]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
didit
Guest
Спасибо всем, кто ответил.
Попробую, если не получится - засучу рукава и буду переписовать отчет.
18 авг 05, 14:37    [1798955]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
didit
Спасибо всем, кто ответил.
Попробую, если не получится - засучу рукава и буду переписовать отчет.
Зачастую достаточно построения правильных индексов.
18 авг 05, 14:38    [1798960]     Ответить | Цитировать Сообщить модератору
 Re: Process was deadlocked - как указать что килять надо другой процесс  [new]
Дамрр1
Guest
didit
Спасибо всем, кто ответил.
Попробую, если не получится - засучу рукава и буду переписовать отчет.

Возможно, достаточно будет применить "грязное чтение" данных.
Для 95% отчетов это допустимо.
Для этого надо просто добавить хинты (nolock), вот так:
select * from MyTable (nolock) inner join TTable (nolock) on ... where ...
Тогда и деадлоков не будет.
19 авг 05, 08:39    [1800857]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить