powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / pb12 classic - ado.net - mssql 2005 - procedure execute ....
5 сообщений из 5, страница 1 из 1
pb12 classic - ado.net - mssql 2005 - procedure execute ....
    #37470234
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток.
Подсобите комрады.

Два юзера одновременно запускают одну и ту же процедуру с разными аргументами, процедура, помимо обработки данных, делает апдейт двух таблиц, всё происходит внутри begin transaction / commit transaction

Апликация зависает в лучшем случае, в худшем, выдаёт на принтер репорт с якобы новыми данными, а потом делает один большой rollback, в результате имею в руках репорт с якобы апдейтед данными из этих двух таблиц, но в реале, данные в них остались прежними.

Куда смотреть куда копать?

Буду премного благодарен за любую наводку.

Спасибо.
...
Рейтинг: 0 / 0
pb12 classic - ado.net - mssql 2005 - procedure execute ....
    #37470386
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество начатых транзакций не соответствует закоммиченным. PB сам открывает транзакции? Если нет, то напишите после вызова процедуры while @@trancount > 0 commit. Если зависает - смотрите блокировки.
...
Рейтинг: 0 / 0
pb12 classic - ado.net - mssql 2005 - procedure execute ....
    #37471480
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марк спасибо.
Я ступИл и не до конца всё рассказал.

Экзекют, в скрипте, просходит внутри лупа, т.е. выглядит примерно так:

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
...
Рейтинг: 0 / 0
pb12 classic - ado.net - mssql 2005 - procedure execute ....
    #37471983
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну концептуально это ничего не меняет... Посмотрите в profiler'е что отсылается на сервер.
...
Рейтинг: 0 / 0
pb12 classic - ado.net - mssql 2005 - procedure execute ....
    #37472009
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал бэкап дб, восстановил под другим именем на тот же сервер, сделал две виртуальные машины, установил на них апплицацию той же версии что у юзеров, запускаю профайлер, одновременно запускаю процесс с обоих ви-эмс ... и всё работает ... шайтан ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / pb12 classic - ado.net - mssql 2005 - procedure execute ....
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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