Ошибка при выполнении хранимой процедуры, которая ссылается на связанный сервер с PyMSSQL

Я пытаюсь выполнить хранимую процедуру из скрипта Python через pymssql, который взаимодействует со связанным сервером. SP работает при запуске вручную, но при запуске из скрипта python возникают ошибки:

(7391, 'The operation could not be performed because OLE DB 
provider"SQLNCLI11" for linked server "DBLOG" was unable to begin a 
distributed transaction.DB-Lib error message 20018, severity 16:
\nGeneral SQL Server error: Check messages from the SQL Server\n')

Я не смог найти ничего, что ссылалось бы на это как на ограничение в самом pymssql. Я не совсем уверен, с чего начать. Я довольно много работаю с pymssql, и у меня никогда не было проблем с подключением, и я проверил, что используемый мной логин имеет достаточные разрешения (я даже пытался использовать SA).

Любые идеи?

Благодарю вас!


person Jacob    schedule 08.08.2016    source источник


Ответы (1)


Мне удалось воссоздать проблему с SP, который пытался выполнить ОБНОВЛЕНИЕ на связанном сервере, например,

UPDATE LINKEDSERVERNAME...TableName SET ...

хотя мое сообщение об ошибке было немного другим

(8501, "MSDTC на сервере" PANORAMA\SQLEXPRESS" недоступен. Сообщение об ошибке DB-Lib 20018, ...

Мне удалось избежать этой проблемы, добавив аргумент autocommit=True в конец моего вызова pymssql.connect.

Если по какой-то причине использование autocommit=True вам не подходит, взгляните на

MSDTC на сервере "сервер недоступен"

для получения информации о настройке MSDTC.

person Gord Thompson    schedule 08.08.2016
comment
Это отлично решило эту проблему! Теперь я просто работаю над проблемами моего сохраненного процесса, выходящего, по-видимому, случайным образом. Я удалил все операторы печати и отключил nocount, и это, похоже, исправило ситуацию. Но теперь это повторяется изредка. - person Jacob; 10.08.2016