C# 在C中读取SqlTransaction的挂起记录#

C# 在C中读取SqlTransaction的挂起记录#,c#,sql-server,C#,Sql Server,我有一个InsertUpdate存储过程,它通过SqlTransaction在C中执行 using (SqlConnection connection = new SqlConnection("Data Source=shsqldev;Initial Catalog=CATALOG;User ID=ID;Password=PASS;")) { connection.Open(); SqlTransaction sqlTransaction = connection.BeginT

我有一个
InsertUpdate
存储过程,它通过
SqlTransaction
在C中执行

using (SqlConnection connection = new SqlConnection("Data Source=shsqldev;Initial Catalog=CATALOG;User ID=ID;Password=PASS;"))
{
    connection.Open();

    SqlTransaction sqlTransaction = connection.BeginTransaction("testTransaction");

    SqlCommand cmd = new SqlCommand(tSql, connection)
    {
        Transaction = sqlTransaction,
        CommandType = CommandType.StoredProcedure
    };

    cmd.Parameters.AddRange(storedProcedureParameters.Select(p => new SqlParameter
    {
        ParameterName = p.ParameterName,
        Value = p.ParameterValue
    }).ToArray());

    cmd.ExecuteNonQuery();

    sqlTransaction.Commit();

    connection.Close();
}
我想做的是从之前的未决记录中读取

SqlTransaction.Commit()
我想读取实际记录,而不仅仅是知道行数


这可能吗?

存储的进程是否返回那些挂起的记录?当
cmd.ExecuteNonQuery
返回时,行存在于数据库中,并且可以在同一个连接上读取。您确实需要一种方法来查找行;SQL中没有“where not committed”筛选。只有存储过程知道插入/更新了哪些行。@mjwills No,这就是为什么这是一个令人头痛的问题。1.有太多的存储过程需要添加到。字面上几乎是2k,所以不幸的是,这不是我的选择2.这些sp是由一家企业维护的,所以即使我可以全部更新,他们也不会允许,因为它已投入生产。@mjwills哦,哇,这篇文章不错。从未听说过XY问题。我要做的基本上是在运行存储过程后跟踪数据库中的更改。当然,必须有一个比创建与数据库同步的服务更简单的解决方案。至少这是我所希望的。因此,简而言之,我想与数据库同步,但只在运行存储过程后,而不必读取整个数据库。@Jeroenmoster这正是我害怕的。没有真正的方法区分未提交和已提交的事务:\