用户登录
用户注册

分享至

“该操作对于交易状态无效"错误和事务范围

  • 作者: 清蒸大黄黄
  • 来源: 51数据库
  • 2022-10-20

问题描述

当我尝试调用包含 SELECT 语句的存储过程时出现以下错误:

I am getting the following error when I try to call a stored procedure that contains a SELECT Statement:

该操作对交易状态无效

这是我的通话结构:

public void MyAddUpdateMethod()
{

    using (TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        using(SQLServer Sql = new SQLServer(this.m_connstring))
        {
            //do my first add update statement

            //do my call to the select statement sp
            bool DoesRecordExist = this.SelectStatementCall(id)
        }
    }
}

public bool SelectStatementCall(System.Guid id)
{
    using(SQLServer Sql = new SQLServer(this.m_connstring)) //breaks on this line
    {
        //create parameters
        //
    }
}

我在事务中创建到同一个数据库的另一个连接有问题吗?

Is the problem with me creating another connection to the same database within the transaction?

推荐答案

经过一些研究,我似乎无法使用 TransactionScope 块打开到同一个数据库的两个连接.我需要修改我的代码看起来像这样:

After doing some research, it seems I cannot have two connections opened to the same database with the TransactionScope block. I needed to modify my code to look like this:

public void MyAddUpdateMethod()
{
    using (TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew))
    {
        using(SQLServer Sql = new SQLServer(this.m_connstring))
        {
            //do my first add update statement            
        }

        //removed the method call from the first sql server using statement
        bool DoesRecordExist = this.SelectStatementCall(id)
    }
}

public bool SelectStatementCall(System.Guid id)
{
    using(SQLServer Sql = new SQLServer(this.m_connstring))
    {
        //create parameters
    }
}
软件
前端设计
程序设计
Java相关