Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅在sql中为特定连接创建事务?_C#_Sql Server_Tsql - Fatal编程技术网

C# 如何仅在sql中为特定连接创建事务?

C# 如何仅在sql中为特定连接创建事务?,c#,sql-server,tsql,C#,Sql Server,Tsql,我只想在sql中为特定连接创建一个事务。它应该为所有连接锁定该表,但允许其他连接读取该表,即使事务是从另一个连接开始的。我应该为它使用什么隔离级别 Tran = CnnTran.BeginTransaction(IsolationLevel.RepeatableRead); 对于select查询,您可以使用和(NOLOCK)或设置事务隔离级别READ UNCOMMITTED READ UNCOMMITTED:指定语句可以读取已被其他事务修改但尚未提交的行。因此,sele

我只想在sql中为特定连接创建一个事务。它应该为所有连接锁定该表,但允许其他连接读取该表,即使事务是从另一个连接开始的。我应该为它使用什么隔离级别

Tran = CnnTran.BeginTransaction(IsolationLevel.RepeatableRead);            

对于select查询,您可以使用
和(NOLOCK)
设置事务隔离级别READ UNCOMMITTED

READ UNCOMMITTED:指定语句可以读取已被其他事务修改但尚未提交的行。因此,select语句可以读取由其他未提交事务更新的行。因此,需要在要读取该表的另一个连接上设置隔离级别

如果需要,可以在连接处设置:

var myConnection = new SqlConnection();

// connection for reading uncommitted transactions
myConnection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();
或者,如果您愿意,也可以在交易中进行:

using (var myConnection = new SqlConnection(connectionString)) {
    myConnection.Open();
    using (var transaction = myConnection.BeginTransaction(IsolationLevel.ReadUncommitted)) {
        // do stuff
        transaction.Commit();
    }
}

谢谢你的回答,我如何在C代码上实现它?我在那里添加了一些代码。另外,在您正在执行的SQL中,您可以使用WITH(NOLOCK)提示-这与IsolationLevel.ReadUncommittedHanks的作用相同。让我试试这个示例。它非常有效……谢谢老兄,您刚刚救了我的命,否则我必须花3-4天来管理它。@Shell没问题,很高兴能提供帮助。