Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set isolation level on SqlCommand/SqlConnection initialized with no transaction

The following method is supposed to peroform a dirty read on an open connection. There are no transactions. Where do I set IsolationLevel?

public string DoDirtyRead(string storedProcName, SqlConnection connection) {     using (SqlCommand command = new SqlCommand(storedProcName, connection))     {         command.CommandType = CommandType.StoredProcedure;         // HOW TO SET IsolationLevel to READ_UNCOMMITTED here?         command.ExecuteNonQuery();     } } 
like image 633
kateroh Avatar asked Dec 03 '10 01:12

kateroh


People also ask

How do you use set transaction isolation level read uncommitted?

The isolation level of the transactional support is default to READ UNCOMMITTED. You can change it to READ COMMITTED SNAPSHOT ISOLATION by turning ON the READ_COMMITTED_SNAPSHOT database option for a user database when connected to the master database.

What is default isolation level?

The default isolation level is REPEATABLE READ . Other permitted values are READ COMMITTED , READ UNCOMMITTED , and SERIALIZABLE .

What is set transaction isolation level serializable?

The Serializable isolation level provides the strictest transaction isolation. This level emulates serial transaction execution for all committed transactions; as if transactions had been executed one after another, serially, rather than concurrently.


1 Answers

If you don't want to do transactions, you can set it once when you open the connection and it will remain at that setting until you change it. So just do:

connection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit(); 

Probably not the best for your specific case, since you are opening the connection, using it, and throwing it away, but I wanted to put this answer in for anyone with a longer-lived connection.

like image 147
Eddie Deyo Avatar answered Sep 17 '22 19:09

Eddie Deyo