Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизTADOStoredProc + deadlock Найти похожие ветки
← →
Дуся (2002-10-24 16:26) [0]Хочу поделиться открытием! Вдруг кто не знает?..
Прямо таки недокументированная возможность ...
Имею на MSSQL 2000 процедуру, которая вызывает внутри еще одну, которая что-то там себе делает:
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.
Так вот, в коде делаю вызов этой процедуры:
ADOStoredProc1.ProcedureName := "sp_call_error";
ADOStoredProc1.ExecProc;
В результате чего Exception не случается!!!!
А чтобы он все же случился, придется делатьADOStoredProc1.ExecuteOptions:=[eoExecuteNoRecords]
Тогда и только тогда все рекордсеты игнорируются и мы получаем долгожданный EOleException!..
Простите, если кому-то вопрос показался очевидным. Я билась три дня.
← →
Johnmen (2002-10-24 17:29) [1]Поаккуратнее с транзакциями !
Убери ненужную в sp_call_error.
← →
Дуся (2002-10-24 17:47) [2]Ну это в тестовом примере так. на самом деле там вроде как содержательно она нужна....
← →
Johnmen (2002-10-24 17:57) [3]Тогда поясню.
deadlock возникает, когда в рамках стартованной тр-ии предпринимается попытка изменить данные, уже измененные другой тр-ей, стартованной ранее и изменившей данные после старта второй...
Короче - аккуратнее ! :)))
← →
Дуся (2002-10-24 18:45) [4]Да знаю я, и пример смоделировала специально.
Только там такой сложный процесс онлайн идет - без поллитры не разберешься!...
Изменения идут постоянно, несколько раз в секунуд, разными процедурами, плюс пользователи....
А можно как-то в этом примере внутри внешней процедуры понять, что во вложеной случилась беда?..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c