powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TADOStoredProc + deadlock
3 сообщений из 3, страница 1 из 1
TADOStoredProc + deadlock
    #32061636
Дуся
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу поделиться открытием ! Вдруг кто не знает?..
Прямо таки недокументированная возможность ...

Имею на MSSQL 2000 процедуру, которая вызывает внутри еще одну, которая что-то там себе делает:
Код: plaintext
1.
2.
3.
4.
5.
CREATE PROCEDURE dbo.sp_call_error
 AS
begin transaction
    exec sp_test_error
commit
GO


При работе sp_test_error возникает deadlock. Но перед этим успешно проходит какая-то ее часть, возвращая некий рекордсет, после чего вываливает deadlock, что очень хорошо видно из консоли:


(0 row(s) affected)

Server: Msg 1205, Level 13, State 54, Procedure sp_test_error, Line 12
Transaction (Process ID 56) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Так вот, в коде делаю вызов этой процедуры:

Код: plaintext
1.
ADOStoredProc1.ProcedureName := 'sp_call_error';
ADOStoredProc1.ExecProc;

В результате чего Exception не случается!!!!
А чтобы он все же случился, придется делать
Код: plaintext
ADOStoredProc1.ExecuteOptions:=[eoExecuteNoRecords]


Тогда и только тогда все рекордсеты игнорируются и мы получаем долгожданный EOleException!..

Простите, если кому-то вопрос показался очевидным. Я билась три дня.
...
Рейтинг: 0 / 0
TADOStoredProc + deadlock
    #32061662
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exception если на клиенте и не генерится, то тем не менее на сервере ошибка (deadlock) происходит. А вот с этим-то и надо бороться. Все дидлоки - ошибки исключительно прикладного разработчика.
...
Рейтинг: 0 / 0
TADOStoredProc + deadlock
    #32061693
Дуся
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А и фиг бы с ним!.. на сервере все слишком запущено, проще на клиенте обработать и заново вызвать процедуру.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TADOStoredProc + deadlock
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]