执行使用PyMSSQL引用链接服务器的存储过程时出错

时间:2016-08-08 19:45:13

标签: python sql-server pymssql

我正在尝试通过pymssql从python脚本执行存储过程,该脚本与链接服务器通信。 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)。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

我能够通过尝试在链接服务器上执行UPDATE的SP重新创建问题,例如,

UPDATE LINKEDSERVERNAME...TableName SET ...

虽然我的错误消息略有不同

  

(8501,"服务器上的MSDTC' PANORAMA \ SQLEXPRESS'不可用.DB-Lib错误消息20018,...

我通过在autocommit=True电话的末尾添加pymssql.connect参数来避免此问题。

如果出于某种原因使用autocommit=True对您没有好处,那么请查看

MSDTC on server 'server is unavailable

有关配置MSDTC的信息。