Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

2000 Ошибки с транзакцией [MSSQL]


Страницы:   1 2 3

KAA ©   (2002-08-16 11:51:00) 

При написании программы периодически допускаешь ошибки, в частности можно где-то не закрыть транзакцию. В результате клиентские приложения просто подвисают, пока не закроют подвисшего клиента. Но это блокирует работу и остальных клинетов, работающих с этой таблицей. А этих клиентов может быть штук 50, и сидят они по всему зданию.

Есть процедуры sp_lock и sp_who, с помошью которых по идее можно понять где и с чем произошла ошибка. Но как разобрать выдаваемую этими процедурами информацию я не знаю. Подскажите, что означают эти результаты.


KAA   (2002-08-19 17:28:00) [41]

Вообщем есть проблема.
В хранимой процедуре открывается транзакция, из нее запускаются другие хранимые процедуры. Если запускаемая ХП вернула ошибочный результат, происходит откат транзакции и выход их ХП. Но откат почему-то не происходит. Перед ROLLBACK TRANSACTION и после, функция @@trancount показывает одно и то же количество открытых транзакций. Естественно в результате остаются открытые транзакции и клиента клинет.


vuk   (2002-08-18 15:29:00) [42]

В BOL расписано все, что эти процедуры выдают.

Насчет незапуска транзакций на клиенте - не знаю, но сроду с этим никаких проблем не было. Вся работа с БД ведется исключительно через SP. Каждый вызов процедуры делается в отдельной транзакции, запускаемой с клиента. Транзакции непосредственно внутри SP не используются.
Вызов пелается через следующую процедуру (вариант для BDE):


function GetBDEDatabase(DataSet: TDBDataSet): TDatabase;
begin
result := Sessions.FindSession(DataSet.SessionName).FindDatabase(DataSet.DatabaseName);
end;

procedure ExecBDEStoredProc(Proc: TStoredProc);
begin
with GetBDEDatabase(Proc), Proc do
try
StartTransaction;
ExecProc;
Commit;
Execute("while @@Trancount > 0 commit");
except
Rollback;
raise;
end;
end;



KAA   (2002-08-18 13:23:00) [43]

У меня вся программа на хранимых процедурах. Внутри процедуры транзакция открывается и закрывается.
Просто были глюки, я так и не понял почему, когда не сработал откат транзакции, а выход из процедуры отработал. В результате клинит таблицы.
Меня интересует, что означает инфа, полученная с помошью команд sp_lock и sp_who? Как по ней мне узнать, на какой машине в сети произошел клин.


wicked   (2002-08-16 13:34:00) [44]

можно сделать просто - у Connection есть метод Execute, которому можно скормить
"rollback tran" (отменить)
или "while @@trancount > 0 commit tran" (сохранить всё)...

в общем - тебе решать...


Fiend   (2002-08-16 13:15:00) [45]

Совет:

Никогда не начинайте транзакцию с клиента. Т.е. Database.BeginTran, ну или как там точно метод называется ,не помню. Но многие так делают.

Если нужно сделать что то важное, что может привести к фатальным ошибкам, т.е. нужно быдет вернуть всё как было, Используйте лучше цельный батч, который будет начинаться с начала транзакции, а заканчиваться соответственно Commit. Лучше даже сделать всё это в ХП.


KAA   (2002-08-16 11:51:00) [46]

51 4 0 0 DB S GRANT
53 7 0 0 DB S GRANT
54 4 0 0 DB S GRANT
55 7 0 0 DB S GRANT
56 7 0 0 DB S GRANT
57 7 0 0 DB S GRANT
58 7 0 0 DB S GRANT
59 7 0 0 DB S GRANT
60 7 0 0 DB S GRANT
61 7 0 0 DB S GRANT
62 7 0 0 DB S GRANT
63 7 0 0 DB S GRANT
64 7 0 0 DB S GRANT
65 7 0 0 DB S GRANT
66 7 0 0 DB S GRANT
67 7 0 0 DB S GRANT
67 1 85575343 0 TAB IS GRANT
68 7 312388182 0 TAB IX GRANT
68 7 1727345218 0 TAB IX GRANT
68 7 1727345218 12 KEY (4e001520a208) X GRANT
68 7 480720765 3 PAG 1:3642 IX GRANT
68 7 740197687 1 KEY (130092d8179c) X GRANT
68 7 1529772507 1 KEY (7e002223df56) X GRANT
68 7 740197687 0 TAB IX GRANT
68 7 1643868923 6 KEY (e1000b7f57de) X GRANT
68 7 1529772507 1 PAG 1:2483 IX GRANT
68 7 312388182 1 PAG 1:2469 IX GRANT
68 7 1727345218 13 PAG 1:2468 IX GRANT
68 7 633769315 1 KEY (2e00d992949f) X GRANT
68 7 633769315 1 PAG 1:2526 IX GRANT
68 7 1643868923 0 TAB IX GRANT
68 7 89767377 1 KEY (0300d2dc2e97) X GRANT
68 7 312388182 3 PAG 1:3699 IX GRANT
68 7 89767377 0 TAB IX GRANT
68 7 1727345218 14 PAG 1:3702 IX GRANT
68 7 480720765 2 PAG 1:3689 IX GRANT
68 7 633769315 17 KEY (360019f18248) X GRANT
68 7 480720765 0 TAB IX GRANT
68 7 959342482 1 PAG 1:2693 IX GRANT
68 7 1529772507 16 KEY (860056332b67) X GRANT
68 7 1529772507 15 KEY (860056332b67) X GRANT
68 7 959342482 1 KEY (8e00374934d4) X GRANT
68 7 959342482 1 KEY (8d00d9e681c6) X GRANT
68 7 459864705 1 PAG 1:2801 IX GRANT
68 7 1643868923 8 PAG 1:2804 IX GRANT
68 7 1727345218 1 KEY (2900e647255b) X GRANT
68 7 1529772507 0 TAB IX GRANT
68 7 1643868923 4 KEY (ed0007cefd99) X GRANT
68 7 633769315 0 TAB IX GRANT
68 7 312388182 3 KEY (2800094753e8) X GRANT
68 7 480720765 3 KEY (b400f3893735) X GRANT
68 7 1727345218 14 KEY (9f0084df7c75) X GRANT
68 7 1643868923 3 KEY (260137a8cf6c) X GRANT
68 7 1529772507 15 PAG 1:2978 IX GRANT
68 7 633769315 14 KEY (ac002700b7f5) X GRANT
68 7 89767377 4 KEY (2c000b211edb) X GRANT
68 7 312388182 2 KEY (a3002687b622) X GRANT
68 7 1643868923 5 KEY (e8009468cd8e) X GRANT
68 7 0 0 DB S GRANT
68 7 1643868923 1 PAG 1:3089 IX GRANT
68 7 89767377 1 PAG 1:3088 IX GRANT
68 7 480720765 1 PAG 1:3090 IX GRANT
68 7 1727345218 13 KEY (8e004ce94887) X GRANT
68 7 959342482 0 TAB IX GRANT
68 7 959342482 14 KEY (a800a164297d) X GRANT
68 7 959342482 14 KEY (a7004fcb9c6f) X GRANT
68 7 1643868923 2 KEY (e500446af889) X GRANT
68 7 959342482 13 KEY (0b012774a2ac) X GRANT
68 7 1643868923 8 KEY (02017716fc4d) X GRANT
68 7 959342482 13 KEY (0c01c9db17be) X GRANT
68 7 633769315 16 KEY (3500c866d2ca) X GRANT
68 7 480720765 1 KEY (a800c99cfe26) X GRANT
68 7 89767377 5 KEY (e00064425948) X GRANT
68 7 1727345218 11 KEY (56001430307d) X GRANT
68 7 959342482 14 PAG 1:3272 IX GRANT
68 7 959342482 13 PAG 1:3270 IX GRANT
68 7 459864705 1 KEY (49005437a738) X GRANT
68 7 1529772507 16 PAG 1:3325 IX GRANT
68 7 633769315 18 KEY (3000d195d799) X GRANT
68 7 1727345218 11 PAG 1:3310 IX GRANT
68 7 89767377 5 PAG 1:3311 IX GRANT
68 7 633769315 15 KEY (53002af513cc) X GRANT
68 7 1727345218 12 PAG 1:3306 IX GRANT
68 7 459864705 0 TAB IX GRANT
68 7 1727345218 1 PAG 1:3356 IX GRANT
68 7 633769315 18 PAG 1:3347 IX GRANT
68 7 633769315 17 PAG 1:3345 IX GRANT
68 7 740197687 1 PAG 1:276 IX GRANT
68 7 633769315 16 PAG 1:3343 IX GRANT
68 7 633769315 15 PAG 1:3341 IX GRANT
68 7 633769315 14 PAG 1:3339 IX GRANT
68 7 1643868923 6 PAG 1:3373 IX GRANT
68 7 1643868923 5 PAG 1:3371 IX GRANT
68 7 1643868923 4 PAG 1:3369 IX GRANT
68 7 1643868923 3 PAG 1:3367 IX GRANT
68 7 1643868923 2 PAG 1:3365 IX GRANT
68 7 480720765 2 KEY (d1001061ce6a) X GRANT
68 7 312388182 2 PAG 1:3414 IX GRANT
68 7 89767377 4 PAG 1:3406 IX GRANT
68 7 1643868923 6 KEY (e90084b4ed3c) X GRANT
68 7 1643868923 1 KEY (dd0084717b1e) X GRANT
68 7 312388182 1 KEY (2500d8159548) X GRANT
69 7 0 0 DB S GRANT
70 7 0 0 DB S GRANT
71 7 0 0 DB S GRANT
71 7 740197687 1 PAG 1:276 IS GRANT
71 7 740197687 0 TAB IS GRANT
71 7 740197687 1 KEY (130092d8179c) S WAIT


KAA   (2002-08-16 11:51:00) [47]

51 4 0 0 DB S GRANT
53 7 0 0 DB S GRANT
54 4 0 0 DB S GRANT
55 7 0 0 DB S GRANT
56 7 0 0 DB S GRANT
57 7 0 0 DB S GRANT
58 7 0 0 DB S GRANT
59 7 0 0 DB S GRANT
60 7 0 0 DB S GRANT
61 7 0 0 DB S GRANT
62 7 0 0 DB S GRANT
63 7 0 0 DB S GRANT
64 7 0 0 DB S GRANT
65 7 0 0 DB S GRANT
66 7 0 0 DB S GRANT
67 7 0 0 DB S GRANT
67 1 85575343 0 TAB IS GRANT
68 7 312388182 0 TAB IX GRANT
68 7 1727345218 0 TAB IX GRANT
68 7 1727345218 12 KEY (4e001520a208) X GRANT
68 7 480720765 3 PAG 1:3642 IX GRANT
68 7 740197687 1 KEY (130092d8179c) X GRANT
68 7 1529772507 1 KEY (7e002223df56) X GRANT
68 7 740197687 0 TAB IX GRANT
68 7 1643868923 6 KEY (e1000b7f57de) X GRANT
68 7 1529772507 1 PAG 1:2483 IX GRANT
68 7 312388182 1 PAG 1:2469 IX GRANT
68 7 1727345218 13 PAG 1:2468 IX GRANT
68 7 633769315 1 KEY (2e00d992949f) X GRANT
68 7 633769315 1 PAG 1:2526 IX GRANT
68 7 1643868923 0 TAB IX GRANT
68 7 89767377 1 KEY (0300d2dc2e97) X GRANT
68 7 312388182 3 PAG 1:3699 IX GRANT
68 7 89767377 0 TAB IX GRANT
68 7 1727345218 14 PAG 1:3702 IX GRANT
68 7 480720765 2 PAG 1:3689 IX GRANT
68 7 633769315 17 KEY (360019f18248) X GRANT
68 7 480720765 0 TAB IX GRANT
68 7 959342482 1 PAG 1:2693 IX GRANT
68 7 1529772507 16 KEY (860056332b67) X GRANT
68 7 1529772507 15 KEY (860056332b67) X GRANT
68 7 959342482 1 KEY (8e00374934d4) X GRANT
68 7 959342482 1 KEY (8d00d9e681c6) X GRANT
68 7 459864705 1 PAG 1:2801 IX GRANT
68 7 1643868923 8 PAG 1:2804 IX GRANT
68 7 1727345218 1 KEY (2900e647255b) X GRANT
68 7 1529772507 0 TAB IX GRANT
68 7 1643868923 4 KEY (ed0007cefd99) X GRANT
68 7 633769315 0 TAB IX GRANT
68 7 312388182 3 KEY (2800094753e8) X GRANT
68 7 480720765 3 KEY (b400f3893735) X GRANT
68 7 1727345218 14 KEY (9f0084df7c75) X GRANT
68 7 1643868923 3 KEY (260137a8cf6c) X GRANT
68 7 1529772507 15 PAG 1:2978 IX GRANT
68 7 633769315 14 KEY (ac002700b7f5) X GRANT
68 7 89767377 4 KEY (2c000b211edb) X GRANT
68 7 312388182 2 KEY (a3002687b622) X GRANT
68 7 1643868923 5 KEY (e8009468cd8e) X GRANT
68 7 0 0 DB S GRANT
68 7 1643868923 1 PAG 1:3089 IX GRANT
68 7 89767377 1 PAG 1:3088 IX GRANT
68 7 480720765 1 PAG 1:3090 IX GRANT
68 7 1727345218 13 KEY (8e004ce94887) X GRANT
68 7 959342482 0 TAB IX GRANT
68 7 959342482 14 KEY (a800a164297d) X GRANT
68 7 959342482 14 KEY (a7004fcb9c6f) X GRANT
68 7 1643868923 2 KEY (e500446af889) X GRANT
68 7 959342482 13 KEY (0b012774a2ac) X GRANT
68 7 1643868923 8 KEY (02017716fc4d) X GRANT
68 7 959342482 13 KEY (0c01c9db17be) X GRANT
68 7 633769315 16 KEY (3500c866d2ca) X GRANT
68 7 480720765 1 KEY (a800c99cfe26) X GRANT
68 7 89767377 5 KEY (e00064425948) X GRANT
68 7 1727345218 11 KEY (56001430307d) X GRANT
68 7 959342482 14 PAG 1:3272 IX GRANT
68 7 959342482 13 PAG 1:3270 IX GRANT
68 7 459864705 1 KEY (49005437a738) X GRANT
68 7 1529772507 16 PAG 1:3325 IX GRANT
68 7 633769315 18 KEY (3000d195d799) X GRANT
68 7 1727345218 11 PAG 1:3310 IX GRANT
68 7 89767377 5 PAG 1:3311 IX GRANT
68 7 633769315 15 KEY (53002af513cc) X GRANT
68 7 1727345218 12 PAG 1:3306 IX GRANT
68 7 459864705 0 TAB IX GRANT
68 7 1727345218 1 PAG 1:3356 IX GRANT
68 7 633769315 18 PAG 1:3347 IX GRANT
68 7 633769315 17 PAG 1:3345 IX GRANT
68 7 740197687 1 PAG 1:276 IX GRANT
68 7 633769315 16 PAG 1:3343 IX GRANT
68 7 633769315 15 PAG 1:3341 IX GRANT
68 7 633769315 14 PAG 1:3339 IX GRANT
68 7 1643868923 6 PAG 1:3373 IX GRANT
68 7 1643868923 5 PAG 1:3371 IX GRANT
68 7 1643868923 4 PAG 1:3369 IX GRANT
68 7 1643868923 3 PAG 1:3367 IX GRANT
68 7 1643868923 2 PAG 1:3365 IX GRANT
68 7 480720765 2 KEY (d1001061ce6a) X GRANT
68 7 312388182 2 PAG 1:3414 IX GRANT
68 7 89767377 4 PAG 1:3406 IX GRANT
68 7 1643868923 6 KEY (e90084b4ed3c) X GRANT
68 7 1643868923 1 KEY (dd0084717b1e) X GRANT
68 7 312388182 1 KEY (2500d8159548) X GRANT
69 7 0 0 DB S GRANT
70 7 0 0 DB S GRANT
71 7 0 0 DB S GRANT
71 7 740197687 1 PAG 1:276 IS GRANT
71 7 740197687 0 TAB IS GRANT
71 7 740197687 1 KEY (130092d8179c) S WAIT


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо