Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не работает SetTransObject в DataStore / 10 сообщений из 10, страница 1 из 1
29.01.2008, 16:57
    #35095379
ЮраМиц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
Программа работает на подключении к серверу 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
29.01.2008, 17:01
    #35095399
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
А какой смысл делать SetTransObject() без присвоения DataObject? В любом случает после присвоения DataObject придется заново вызывать SetTransObject().
...
Рейтинг: 0 / 0
29.01.2008, 17:04
    #35095413
ЮраМиц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
Если делаю в таком порядке DataObject , а затем SetTransObject(), то программа зависает.
...
Рейтинг: 0 / 0
29.01.2008, 17:13
    #35095448
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
ЮраМицЕсли делаю в таком порядке DataObject , а затем SetTransObject(), то программа зависает.
Смотрите что PowerBuilder шлет на SQL сервер.
...
Рейтинг: 0 / 0
29.01.2008, 17:27
    #35095510
ЮраМиц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
Если включаю Trace ODBC, то последние записи:

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

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

Но если программа запущена, то Retrieve зависает, если с билдера - то срабатывает.
...
Рейтинг: 0 / 0
29.01.2008, 21:46
    #35095985
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
ЮраМицНастройки одинаковые - и те и те стандартные, без каких либо специальных опций.
Но если программа запущена, то Retrieve зависает, если с билдера - то срабатывает.
однозначно различие в подключении.
...
Рейтинг: 0 / 0
30.01.2008, 09:01
    #35096298
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
ЮраМицНастройки одинаковые - и те и те стандартные, без каких либо специальных опций.
// 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
30.01.2008, 17:19
    #35098352
ЮраМиц
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает SetTransObject в DataStore
Дело было в блокировках, всем спасибо!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Не работает SetTransObject в DataStore / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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