我正在尝试通过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)。
有什么想法吗?
谢谢!
答案 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的信息。