代码之家  ›  专栏  ›  技术社区  ›  benPearce

带有事务的dotnet中的SQL脚本

  •  2
  • benPearce  · 技术社区  · 15 年前

    我发现 this 问题和接受的答案让我开始处理GO语句,但是如果我使用BeginTransaction,它会抛出 在“new ServerConnection”行。

    SqlConnection connection = new SqlConnection(connectionString);
    connection.Open();
    SqlTransaction transaction = connection.BeginTransaction(transactionName);
    ServerConnection serverConnection = new ServerConnection(connection);
    

    3 回复  |  直到 7 年前
        1
  •  4
  •   Jupaol    11 年前

    假设你用的是 TransactionScope 对象

    using (
        var transactionScope = new TransactionScope(TransactionScopeOption.Required,
                                                    new TransactionOptions
                                                        {
                                                            IsolationLevel =
                                                                IsolationLevel.ReadCommitted,
                                                            Timeout = TimeSpan.FromMinutes(300)
                                                        }))
    {
        sqlServerInstance.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteAndCaptureSql;
        sqlServerInstance.ConnectionContext.StatementTimeout = int.MaxValue;
    
        //This line makes the MAGIC happen =)
        sqlServerInstance.ConnectionContext.SqlConnectionObject.EnlistTransaction(Transaction.Current);
        sqlServerInstance.ConnectionContext.ExecuteNonQuery(scriptContent);
    }
    
        2
  •  2
  •   Aaronaught    15 年前

    尝试使用 BeginTransaction CommitTransaction 方法论 ServerConnection

        3
  •  1
  •   Cade Roux    15 年前

    尝试在附加 ServerConnection SqlConnection

    还有,你在用什么 服务器连接 连接对象 ?