powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите MSSQL-у. Связь Oracl - MSSQL
5 сообщений из 5, страница 1 из 1
Помогите MSSQL-у. Связь Oracl - MSSQL
    #32105100
WW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WW
Гость
Столкнулся с проблеммой!
При вытаскивании данных с Oracl в таблицу MSSQL с триггером , MSSQL кричит
(The operation could not be performed because the OLE DB provider 'MSDAORA' was unable to begin a distributed transaction.) На стороне MSSQL координатор РТ включен.
При отключенном триггере - все Ок!
Триггер просто ведет лог.
Провайдер для связи MSDAORA
Может у кого есть мысли?
...
Рейтинг: 0 / 0
Помогите MSSQL-у. Связь Oracl - MSSQL
    #32105633
WW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WW
Гость
Неужели никто не знает про распределенные транзакции в Oracl?
...
Рейтинг: 0 / 0
Помогите MSSQL-у. Связь Oracl - MSSQL
    #32106935
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну знают, ну а что с того?

Какая версия Оракула? 7.3.4? 8.0.х? 8.1.х? или 9.х??? Standart или Enterprise,
или вообще Lite или Personal?
Это я к тому, что не всякая версия поддерживает distributed transactions.

Во-вторых, попытка начать distributed transaction при вставке в таблицу с триггером, обозначает, что либо
а) триггер лезет в оракуловскую базу данных с каким-нибудь DML, что есть однозначная причина для применения топора к рукам писавшим триггер, либо
б) сие есть национальные оссбенности MSSQL начинать DT при любой попытке DML из триггера, что есть вопрос не к Оракулу, а уже к MSSQL, что есть другой форум и другой вопрос "Почему MSSQL пытается начать DT при вставке из удалённой БД в таблицу с триггером, делающим DML?"

А вообще, тут уже обсуждалась эта тема, что при попытке в одной транзакции достать данные из другой БД по DB-link и вызвать транзакцию с pragma "autonomous transaction", Оракул выкидывает exception, что так делать нельзя.

Кстати, решается очень просто: разбиваем код на две транзакции:
сперва делаем выборку строки из удалённой БД во временные переменные,
потом делаем commit (хотя и ничего не изменяли), или, что менее предпочтительно, rollback,
и только потом вставляем данные в локальную таблицу.
...
Рейтинг: 0 / 0
Помогите MSSQL-у. Связь Oracl - MSSQL
    #32106936
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, ещё, юзверю, от чьего имени лезется в Оракул, не помешало бы сделать следующее:
Код: plaintext
grant select on DBA_PENDING_TRANSACTIONS to thatuser;
...
Рейтинг: 0 / 0
Помогите MSSQL-у. Связь Oracl - MSSQL
    #32107226
WW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WW
Гость
Спасибо за подсказку. Сделал через временную табл.
Все заработало.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите MSSQL-у. Связь Oracl - MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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