Форум сайта python.su
Добрый день, я тут бьюсь с одной проблемой уже долго, подключаюсь к удаленному серверу, селекты проходят, а хранимые процедуры совершающие транзакции с базой, не проходят,
при этом что характерно, те же процедуры я могу совершенно спокойно выполнять в среде менеджера базы данных, ошибка вот такая
pyodbc.ProgrammingError: ('42000', ' The operation could not be performed because OLE DB provider “SQLNCLI” for linked server “ABACUS” was unable to begin a distributed transaction. (7391) (SQLExecDirectW);
OLE DB provider “SQLNCLI” for linked server “ABACUS” returned message “The transaction manager has disabled its support for remote/network transactions.”. (7412)')
Офлайн
linzmanНу написано же, что менеджер транзакций не позволяет проводить удаленные/сетевые транзакции. Нужно просто активировать эту настройку на сервере.
The transaction manager has disabled its support for remote/network transactions."
Отредактировано (Март 24, 2010 12:09:04)
Офлайн
я все это сделал, даже виндовые апдейты закачал,
в настройках все эти манипуляции проделал,
ситуация такова, что мой локальный transaction manager отключил распределенные процедуры. в винде можно в лепешку расшибиться но не понять что конкретно не работает.
Может быть можно как то поуправлять самим pyodbc чтобы изменить эту ситуацию? скажите пожалуйста где можно об этом почитать? Или как то запустить транзакцию не в распределенном режиме
Офлайн
Ситуация была проста и тяжело постижима одновременно, пришлось порыться в спецификации pyodbc для того чтобы понять
pyodbc при установлении соединения отключает autocommit
поэтому хранимая процедура которая вносит изменения в базу не проходила
self.cnxn=pyodbc.connect(“DRIVER={SQL Server}; SERVER=”+self.srv+“; DATABASE=”+self.db+“; UID=”+self.uid+“; PWD=”+self.pwd)решение проблемы
self.cnxn.autocommit = True
Отредактировано (Март 24, 2010 16:29:50)
Офлайн