我有一个 SQL Server 2012 实例,其中一个链接服务器使用 System i Access ODBC 驱动程序指向 IBM Iseries 系统上的 db2 数据库。
我正在尝试启用分布式事务。我相信该提供商确实根据IBM 文档支持它们(除非我误解了该链接)。
我正在运行以下查询:
BEGIN TRANSACTION
UPDATE LINKEDSERVER.LINKEDDATABASE.SCHEMANAME.TABLENAME SET COLUMN = VALUE
SELECT CAST('qwerty' as integer) -- we want an error here so the transaction fails
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
链接服务器“LINKEDSERVER”的 OLE DB 提供程序“MSDASQL”返回消息“[IBM][System i Access ODBC 驱动程序]登记 DTC 阶段失败。2”。消息 7391,级别 16,状态 2,第 2 行 由于链接服务器“LINKEDSERVER”的 OLE DB 提供程序“MSDASQL”无法开始分布式事务,因此无法执行该操作。
我对这个错误所做的所有研究都遇到过想要禁用分布式事务而不是让它们工作的人。我已经在链接服务器属性上将“启用分布式事务的提升”设置为 true。
任何想法如何让这个工作?
编辑:更多信息/更新。当我在 Windows 日志中注意到这一点时,我正准备暂时放弃这个并等待帮助:
当 XA 事务被禁用时,调用者试图注册一个 XA 资源。
我找到了这个链接,它告诉我如何修改 …
sql-server linked-server sql-server-2012 iseries distributed-transactions