powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не работает SetTransObject в DataStore
10 сообщений из 10, страница 1 из 1
Не работает SetTransObject в DataStore
    #35095379
ЮраМиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа работает на подключении к серверу ASA, через SQLCA - все стандартно. Но нужно на некоторое время подключится к серверу ASE и запустить хранимую процедуру, поскольку процедура добавляет пользователей в сервер ASE, через прокси-процедуры не работает.

Вот примерный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	CONNECT USING ASETrans;

	datastore lds_1
	lds_1 = CREATE datastore
	lds_1.SetTransObject(ASETrans)
	
        lds_updUsers_komunal.DataObject = "dw_ase_sp_admupdUsersKomunal"
	code_dw_retr = lds_updUsers_komunal.Retrieve()
	

lds_1.SetTransObject(ASETrans) возвращает -1. хотя коннект проходит успешно.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095399
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой смысл делать SetTransObject() без присвоения DataObject? В любом случает после присвоения DataObject придется заново вызывать SetTransObject().
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095413
ЮраМиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если делаю в таком порядке DataObject , а затем SetTransObject(), то программа зависает.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095448
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраМицЕсли делаю в таком порядке DataObject , а затем SetTransObject(), то программа зависает.
Смотрите что PowerBuilder шлет на SQL сервер.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095510
ЮраМиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если включаю Trace ODBC, то последние записи:

(2428c18): BEGIN TRANSACTION: (0.045 MilliSeconds)
(2428c18): PROCEDURE PREPARE:
(2428c18): execute dbo.admUpdateUsers;0

а сама процедура зависает. Если же я делаю Retrieve из самого Билдера, то довольно быстро срабатывает.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095538
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраМица сама процедура зависает. Если же я делаю Retrieve из самого Билдера, то довольно быстро срабатывает.
Ну смотрите тогда в чем отличие в подключении. Уровень изоляции транзакций, способ подключения и т.д.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095612
ЮраМиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Настройки одинаковые - и те и те стандартные, без каких либо специальных опций.
// Profile ASE_komunal
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=komunal;UID=dba;PWD=sql'"

Но если программа запущена, то Retrieve зависает, если с билдера - то срабатывает.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35095985
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраМицНастройки одинаковые - и те и те стандартные, без каких либо специальных опций.
Но если программа запущена, то Retrieve зависает, если с билдера - то срабатывает.
однозначно различие в подключении.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35096298
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮраМицНастройки одинаковые - и те и те стандартные, без каких либо специальных опций.
// Profile ASE_komunal
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=komunal;UID=dba;PWD=sql'"

Но если программа запущена, то Retrieve зависает, если с билдера - то срабатывает.

При подключении к ASE (но не к ASA!!!) AutoCommit должен быть True (почти всегда, за редким исключением).
в этом случае подключение работает в unchained mode и транзакция не открыта пока не сделаешь явный Begin tran.

Можно попробовать поставить уровень изоляции SQLCA.Lock="RC"

Что делает процедура когда делаешь retrieve?
imho зависать может только из-за блокировок.
...
Рейтинг: 0 / 0
Не работает SetTransObject в DataStore
    #35098352
ЮраМиц
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело было в блокировках, всем спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не работает SetTransObject в DataStore
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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