Работа с Firebird через 1С. Явное управление транзакциями

shaposh
Дата: 30.07.2012 19:04:36
Не думал что докачусь до разработки на 1с... Но так уж случилось...

Строка подключения:
FirebirdODBCString =
"Driver=Firebird/InterBase(r) driver;Uid=TWUSER;Pwd=PaswordValue;DbName=x.x.x.x:DbName;CHARSET=win1251;DIALECT=1; NOWAIT; ";
С подключением к БД проблем нет....

Параметры подключения:
FbWorkDBConnection = Новый COMОбъект("ADODB.Connection");
FbWorkDBConnection.ConnectionTimeout = 60;
FbWorkDBConnection.CommandTimeout = 180;
FbWorkDBConnection.CursorLocation = 3; // 3=adUseClient
FbWorkDBConnection.Mode = 3; // 3=adModeReadWrite
FbWorkDBConnection.IsolationLevel = 4096; // adXactReadCommited

Необходимо явное управление транзакциями при работе с БД.

Однако, при вызове метода FbWorkDBConnection.BeginTrans();
Получаю следующее.
Ошибка при вызове метода контекста (BeginTrans) FbWorkDBConnection.BeginTrans();
по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): В данном сеансе невозможен запуск дополнительных транзакций.

Если же не стартую транзакцию, а пытаюсь откатить умолчательную как то так:
P.S. FbWorkDBConnection.RollbackTrans(); получаю сообщение об отсутствии активных транзакций.

Господа, может кто поделится опытом?

Про возможность реализацию управления транзакциями на уровне самой БД из ХП знаю, это тема неинтересна
Гаджимурадов Рустам
Дата: 30.07.2012 19:09:18

Не через ODBC не пробовал\&

Posted via ActualForum NNTP Server 1.5

shaposh
Дата: 30.07.2012 19:09:45
Изначально подключался через Gemini Odbc драйвер - ошибки те же.
Решил что Gemini Odbc драйвер не поддерживает явное управление транзакциями... Да и документации по нему нет почти.
Переписал подключение через Firebird Odbc драйвер
Ничего не измнилось
P.S. Да и документация по нему таки убогая
shaposh
Дата: 30.07.2012 19:11:17
Если понимать, что это - ограничение ODBC, тогда, наверное надо закупать IbProvider. Но хочется понимать, что это именно его (ODBC)ограничение.
hvlad
Дата: 30.07.2012 20:37:51
shaposh
Необходимо явное управление транзакциями при работе с БД.
Попробуй не вызывать методы, а выполнить запросы вида
SET TRANSACTION
COMMIT
ROLLBACK

shaposh
В данном сеансе невозможен запуск дополнительных транзакций.
Значит какая-то уже запущена ?
Трейс поможет
S.PR
Дата: 30.07.2012 21:26:37
В FB есть IsolationLevel = 4096?
shaposh
Дата: 31.07.2012 10:51:20
[/quot]Значит какая-то уже запущена ? Трейс поможет[/quot]
А смысл трейсить - 1С сама запускает транзакцию при выполнении ADODb.Command. И не дает ей управлять
shaposh
Дата: 31.07.2012 13:28:49
Влад, очередное "спасибо" от ЗАО "Профитмед"!
Вопрос закрыт.
Смысл трейсить был - не поддерживаются вложенные транзакции - и хрен с ним.
А первую транзакцию я таки нечаянно запускал.
При попытке старта повторно - огребал.
Если бы не в 1С это все было - минуты за три бы разобрался...
А тут.... ТЯЖКО :(