在存储过程中,我使用以下语句。但是当我运行Stored Proc时,它会抛出Distributed transaction错误。
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.
OR
有没有其他方法可以在不创建Temp表的情况下存储结果和消息?
答案 0 :(得分:3)
启用选项
在“组件服务”中的“本地DTC属性”的“安全”选项卡上。
答案 1 :(得分:3)
这对我有用:
在SQL Server Management Studio中,展开“服务器对象”,然后展开“链接服务器”,然后右键单击相关链接服务器并选择“属性”。选择“服务器选项”'页面,并确保'启用分布式交易的推广'设置为“假”'
或者你可以使用https://github.com/rmrevin/yii2-minify-view:
来完成USE master;
EXEC sp_serveroption '<<your linked server name>>', 'remote proc transaction promotion', 'false';