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

Jac*_*cob 1 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')
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何在pymssql本身中引用此限制的内容。我不太确定从哪里开始。我使用pymssql做了大量工作,并且从未遇到任何连接问题,并且我已经验证了我使用的登录名具有足够的权限(甚至尝试使用SA)。

有任何想法吗?

谢谢!

Gor*_*son 5

我能够使用试图在链接服务器上执行UPDATE的SP重新创建该问题,例如,

UPDATE LINKEDSERVERNAME...TableName SET ...
Run Code Online (Sandbox Code Playgroud)

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

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

通过autocommit=Truepymssql.connect通话结束时添加一个参数,我可以避免此问题。

如果出于某种原因使用autocommit=True对您不利,那么请看一下

服务器“ server”上的MSDTC不可用

有关配置MSDTC的信息。