|
pb12 classic - ado.net - mssql 2005 - procedure execute ....
|
|||
---|---|---|---|
#18+
Доброго всем времени суток. Подсобите комрады. Два юзера одновременно запускают одну и ту же процедуру с разными аргументами, процедура, помимо обработки данных, делает апдейт двух таблиц, всё происходит внутри begin transaction / commit transaction Апликация зависает в лучшем случае, в худшем, выдаёт на принтер репорт с якобы новыми данными, а потом делает один большой rollback, в результате имею в руках репорт с якобы апдейтед данными из этих двух таблиц, но в реале, данные в них остались прежними. Куда смотреть куда копать? Буду премного благодарен за любую наводку. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2011, 00:51 |
|
pb12 classic - ado.net - mssql 2005 - procedure execute ....
|
|||
---|---|---|---|
#18+
Количество начатых транзакций не соответствует закоммиченным. PB сам открывает транзакции? Если нет, то напишите после вызова процедуры while @@trancount > 0 commit. Если зависает - смотрите блокировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2011, 09:52 |
|
pb12 classic - ado.net - mssql 2005 - procedure execute ....
|
|||
---|---|---|---|
#18+
Марк спасибо. Я ступИл и не до конца всё рассказал. Экзекют, в скрипте, просходит внутри лупа, т.е. выглядит примерно так: DECLARE sp_proc PROCEDURE FOR sp_proc @l_argument = :l_argument, @s_argument = :s_argument; FOR l_row = 1 TO dw_1.rowcount() IF dw_1.IsSelected(l_row) THEN l_argument = dw_1.getitemnumber(l_row, 'column_1') s_argument = dw_1.getitemString(l_row, 'column_2') dw_1.SelectRow(l_row, FALSE) SetPointer(HourGlass!) EXECUTE sp_proc; l_code = i_tr_sql.SQLCode CLOSE sp_proc; SetPointer(Arrow!) IF l_code < 0 THEN MessageBox("SQL Error", '') else if dw_2.retrieve(l_argument, s_argument) > 0 then dw_2.print() END IF end if next ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2011, 17:46 |
|
pb12 classic - ado.net - mssql 2005 - procedure execute ....
|
|||
---|---|---|---|
#18+
Ну концептуально это ничего не меняет... Посмотрите в profiler'е что отсылается на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2011, 23:51 |
|
pb12 classic - ado.net - mssql 2005 - procedure execute ....
|
|||
---|---|---|---|
#18+
Сделал бэкап дб, восстановил под другим именем на тот же сервер, сделал две виртуальные машины, установил на них апплицацию той же версии что у юзеров, запускаю профайлер, одновременно запускаю процесс с обоих ви-эмс ... и всё работает ... шайтан ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2011, 00:50 |
|
|
start [/forum/topic.php?fid=15&fpage=18&tid=1335637]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 135ms |
0 / 0 |