分布式事务错误?

4
在存储过程中,我正在使用以下语句。但是当我运行存储过程时,它会抛出分布式事务错误。
Declare @res int
    Declare @mes as varchar(100)

    DECLARE  @Result TABLE (
result INT,
mesage VARCHAR(100))

    Insert @Result (result, mesage)         
            Exec [MySpeNet].[dbo].[GetMemberShipStatus]'3319994'
    select @res = result, @mes = mesage from @Result

异常:

      Msg 7391, Level 16, State 2, Procedure GetMemberShipStatus, Line 19
    The operation could not be performed because OLE DB provider "OraOLEDB.Oracle" 
for linked server "ASPQA" was unable to begin a distributed transaction.

还有其他方法可以存储结果和信息,而不必创建临时表吗?


Microsoft分布式事务协调器服务正在运行吗? - Nick Binnet
2个回答

3
这是对我起作用的方法:
在 SQL Server Management Studio 中,展开“服务器对象”,然后展开“联接的服务器”,右键单击相关的联接服务器,选择“属性”。选择“服务器选项”页面,并确保“启用分布式事务提升”设置为“False”。
或者您可以使用 T-SQL 来执行此操作:
USE master;
EXEC sp_serveroption '<<your linked server name>>', 'remote proc transaction promotion', 'false';

3

启用以下选项:

  • 允许远程客户端
  • 允许出站

在组件服务的本地DTC属性的安全选项卡中进行设置。

  • 打开运行,输入comexp.msc。
  • 双击“控制台根”。
  • 双击“组件服务”。
  • 双击“计算机”。
  • 双击“我的计算机”。
  • 双击“分布式事务协调器”。
  • 右键单击“分布式事务协调器”下的“本地DTC”,然后点击“属性”。
  • 点击“安全”选项卡。
  • 勾选“允许远程客户端”和“允许出站”复选框。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接