Транзакции в SQL, поступающие из отката pymssql сами по себе

У нас есть разработчик, подключающийся к SQL Server с помощью pymssql, который использует freetds. Его сценарий динамически генерирует запросы на вставку sql на основе значений в базе данных MySQL.

Операторы анализируются должным образом и имеют правильное начало транзакции/фиксации в них, когда вы просматриваете их в SQL Profiler. Единственное «сообщение об ошибке пользователя», которое появляется «контекст базы данных изменен на ...», которое появляется всякий раз, когда вы выдаете USE в SQL. После завершения пакета происходит откат события журнала транзакций, и все вставленные записи удаляются.

Мы не используем XACT_ABORT_OFF, потому что я не видел, чтобы это повлияло на «изменение контекста БД на».

У кого-нибудь есть идеи или опыт в этом? Спасибо!

[edit]: код, скопированный из профилировщика, отлично работает в SSMS с использованием того же пользователя, и нет никаких триггеров.

[2-е редактирование]: внутри профилировщика SQL я вижу запись «Журнал транзакций» с «откатом» под типом события, однако TM: Rollback Tran отсутствует.


person Ali Razeghi    schedule 12.09.2012    source источник
comment
Проверили, есть ли на столе триггер, вызывающий откат? Вы напрямую запускали запрос из профилировщика в SSMS и видели, что происходит?   -  person HLGEM    schedule 12.09.2012
comment
Правильно, в таблицах нет триггеров, и когда я вставляю код в SSMS, он работает без сбоев, используя то же имя пользователя. Спасибо за отзыв!   -  person Ali Razeghi    schedule 12.09.2012


Ответы (2)


Возможно, соединение не зафиксировано или закрыто правильно. Проверьте документацию freetds, чтобы убедиться, что вы используете правильные шаблоны использования. Также вы можете проверить, возможно ли включить режим автоматической фиксации в соединении.

person ifx    schedule 12.09.2012
comment
Autocommit, это то, что я искал. Спасибо, сейчас разберусь и сообщу всем. Если у кого-то есть другие идеи, дайте мне знать. Спасибо! - person Ali Razeghi; 13.09.2012

Итак, после долгих поисков и тройной проверки настройки автоматической фиксации мы обнаружили, что две переменные имеют очень близкие имена, и она фиксирует неправильную. Есть модуль mysql и pymysql, но в данном случае мы использовали pymssql, но вместо этого он был введен в pymysql. Спасибо всем, кто прокомментировал.

person Ali Razeghi    schedule 12.09.2012