【问题标题】:Error Executing Stored Procedure that References Linked Server with PyMSSQL执行使用 PyMSSQL 引用链接服务器的存储过程时出错
【发布时间】:2016-08-08 19:45:13
【问题描述】:

我正在尝试通过 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)。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: python sql-server pymssql


    【解决方案1】:

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

    UPDATE LINKEDSERVERNAME...TableName SET ...
    

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

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

    我可以通过在pymssql.connect 调用的末尾添加一个autocommit=True 参数来避免这个问题。

    如果由于某种原因使用 autocommit=True 对您不利,请查看

    MSDTC on server 'server is unavailable

    有关配置 MSDTC 的信息。

    【讨论】:

    • 完美解决了这个问题!现在我正在解决我的存储过程看似随机退出的问题。我取出所有打印语句并设置 nocount ,这似乎解决了它。但现在它偶尔会再次发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多