Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ORA-02048: attempt to begin distributed transaction without logging on  [new]
sobolev
Member

Откуда: Петрозаводск
Сообщений: 1426
Кто нибудь может подсказать?
При выполнении функции OCITransStart получаю такую ошибку. Все варианты флагов перебрал.
В сессии все функции работы с данными фунциклируют успешно.

Запуск сессии осуществляется вызовом
OCISessionBegin(Srvc, Err, Sess, OCI_CRED_RDBMS, OCI_DEFAULT)

Функция запуска транзакции выглядит так:
int SOraDatabase::StartTransaction()
{
	int    ok = 1;
	XID    tx_id;
	tx_id.FormatID = 0;//7100;
        // Ид транзакции формируется генератором случайных чисел
	ulong rid = SLS.GetTLA().P_Rg->Get(); 
	char   temp_buf[64];
	ultoa(rid, temp_buf, 10);
	tx_id.GtrIdLen = strlen(temp_buf);
	long   i = 0;
	while(i < tx_id.GtrIdLen)
		tx_id.Data[i++] = temp_buf[i]-'0';
	tx_id.BQualLen = 1;
	tx_id.Data[i++] = 1;
	OH     h_t = OhAlloc(OCI_HTYPE_TRANS);
	THROW(OhAttrSet(Srvc, OCI_ATTR_TRANS, h_t, 0));
	THROW(OhAttrSet(h_t, OCI_ATTR_XID, &tx_id, sizeof(tx_id)));
	THROW(ProcessError(OCITransStart(Srvc, Err, 15, OCI_TRANS_NEW)));
	CATCH
		ok = 0;
	ENDCATCH
	return ok;
}

Oracle 9

Самое обидное в том, что пример, приведенный в документации от Oracle почти так все
и делает (за исключением м.б. генерации XID'а).
12 янв 09, 11:03    [6670209]     Ответить | Цитировать Сообщить модератору
 Re: ORA-02048: attempt to begin distributed transaction without logging on  [new]
sobolev
Member

Откуда: Петрозаводск
Сообщений: 1426
Спасибо, сам разобрался.
Когда логинишься надо определять атрибут сервера OCI_ATTR_INTERNAL_NAME.
12 янв 09, 12:16    [6670934]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить