C# 将我的查询附加到SQL事务

C# 将我的查询附加到SQL事务,c#,sql,sql-server,transactions,C#,Sql,Sql Server,Transactions,我在调试代码时经常遇到这个小问题。假设我有一个C应用程序,它在事务中处理一些SQL查询。为了保持简单,我将使用以下示例: using (SqlTransaction myTransaction = myConnection.BeginTransaction("MyTransactionName")) { using (SqlCommand sqlCommand = new SqlCommand("first command text here", myConnection, myTran

我在调试代码时经常遇到这个小问题。假设我有一个C应用程序,它在事务中处理一些SQL查询。为了保持简单,我将使用以下示例:

using (SqlTransaction myTransaction = myConnection.BeginTransaction("MyTransactionName"))
{
    using (SqlCommand sqlCommand = new SqlCommand("first command text here", myConnection, myTransaction))
    {
        sqlCommand.ExecuteNonQuery();
    }

    // Breakpoint here at which time I'd like to go check in SQL Management Studio what the state of play is

    using (SqlCommand sqlCommand = new SqlCommand("second command text here", myConnection, myTransaction))
    {
        sqlCommand.ExecuteNonQuery();
    }
}
因此,正如代码所说,在两个SQL命令之间,我想在代码中设置一个断点,并在SQL Management Studio中检查哪些表中的哪些值受到影响。问题是,只要事务仍然打开,我就不能对DB运行查询。我必须在SSMSE中等待代码中启动的事务提交或回滚,然后才能对DB运行任何查询

我从来没有真正使用过或理解给事务命名的目的,但我也从来没有真正使用过嵌套事务。但这让我想知道,如果事务的名称已知,SSMSE中是否有方法附加到打开的事务,然后运行一些查询

我想在代码中设置一个断点,并在SQL Management Studio中检查哪些表中的哪些值受到影响。问题是,只要事务仍然打开,我就不能对DB运行查询

在SSMS会话中使用NOLOCK查看锁:

select top 5 * from Posts with (nolock) where Score < 4
我从来没有真正使用过或理解给事务命名的目的,但我也从来没有真正使用过嵌套事务

首先,它使使用中间保存点变得更容易,但这些保存点很少使用。但还有一个更重要的用法:它让DBA知道当事务阻塞并导致问题时,谁来杀谁

SSMSE中是否有方法附加到打开的事务,然后运行一些查询


不,没有;此外,多个并发SPID可以使用您所期望的相同事务名称,因为通常并发工作是相似的。

我喜欢从一个答案中学到三个新东西:-@DewaldSwanepoel这里是第四个,然后:您还可以使用SET transaction ISOLATION LEVEL READ UNCOMMITTED;在SSMS或第5版中,默认情况下,您可以在工具、选项、查询执行、SQL Server、高级中为新连接配置此选项;或通过查询、查询选项…、执行、高级来访问当前连接;在默认情况下,将此设置为“未提交”是一个很好的方法,可以避免在您通过SSM意外阻止同事时受到指责;或者,嗯,将SSM连接到prod数据库,但我们从未这样做,嗯,对吗?