我在c#app的连接字符串中有MultipleActiveResultSets=true
。我已经发现我可以将其设置为false
以防止出现此错误。我试图弄清楚如何修改我的存储过程以使用MultipleActiveResultSets=true
有问题的存储过程是一个相当简单的存储过程,可以毫无问题地从C#应用程序执行99%的时间。但是,有几次,我在执行时记录了以下错误。
EXECUTE之后的事务计数表示BEGIN和COMMIT语句的数量不匹配。先前计数= 0,当前计数= 1.在批处理结束时,在MARS批处理中启动的事务仍处于活动状态。该事务将被回滚。
存储过程代码:
begin try
begin transaction
-- create @NewIDs to hold inserted IDs -- hopefully stop any issues related to @@IDENTITY
declare @NewIDs table (MyNewID int)
insert into users
output inserted.id into @NewIDs
values
(
LTRIM(RTRIM(@Username)),
'nothing',
'nothing',
LTRIM(RTRIM(@Email)),
@Phone,
@ProfileID,
LTRIM(RTRIM(@FirstName)),
LTRIM(RTRIM(@LastName)),
LTRIM(RTRIM(@SearchName)),
@Password,
GETDATE()
)
declare @UserID int
select top 1 @UserID = MyNewID from @NewIDs
select @retValue = @UserID
commit transaction
return @retValue
end try
begin catch
if @@TRANCOUNT > 0
rollback transaction
set @retValue = 0
return @retValue
end catch