我正在执行以下代码时遇到错误:
我正在执行以下代码时遇到错误:
private bool _updateList(SysInfo _sysInfo, List<pList> _pList)
{
try
{
foreach (var p in _pList)
{
_context.spUpdatePListApprovalFlow(p.countryID, _sysInfo.User.JobRoleID, p.src, p.id, p.status, _sysInfo.User.Username);
}
return true;
}
catch (Exception ex) //debug only
{
throw; //throws error to the main try catch
}
}
错误
无法执行操作,因为OLE DB提供程序“MSDASQL”对于链接服务器“AS400_LINKEDSRV”无法开始分布式事务。
但是,当我在SQL Management Studio中运行存储过程时,一切都正常:
exec [dbo].[spUpdatePListApprovalFlow]
@CountryID = 123456,
@UserTypeID = 23456,
@Src = 1,
@Id = '123456789',
@Status = 30,
@Username = 'username'
我已经尝试了很多方法,但都没有得到答案...以下是我尝试过的几种方法:
- SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED (将事务隔离级别设置为读取未提交的内容)
- 在存储过程中插入多个事务
这个存储过程包括两个子存储过程。其中一个向应用程序数据库的表中写入数据,另一个更新as400中的表。