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