SqlTransaction
을 C#으로 시작하여 트랜잭션을 커밋하고 롤백했습니다. 모든 것이 바르게 진행되고 있지만 트랜잭션 중에 연결되어있는 테이블에 액세스하는 동안 문제가 발생합니다. 트랜잭션 중에 테이블을 읽을 수 없습니다 (트랜잭션에있는 테이블). 이것에 대해 검색하는 동안, 나는 독점적 인 자물쇠 때문에 그것이 일어난 것을 발견했습니다. 해당 데이터에 대한 후속 선택은 독점 잠금이 해제 될 때까지 기다려야합니다. 그런 다음 SqlTransaction
에 제공된 모든 격리 수준을 통과했지만 작동하지 않았습니다. 그래서 다른 사용자가 해당 테이블에 액세스하여 데이터를 읽을 수 있도록 트랜잭션 중 독점 잠금을 해제해야합니다. 이것을 수행 할 수있는 방법이 있습니까? 미리 감사드립니다. Sql 트랜잭션의 격리 수준
다음은이 코드는 잘 작동 거래
try
{
SqlTransaction transaction = null;
using (SqlConnection connection=new SqlConnection(Connection.ConnectionString))
{
connection.Open();
transaction=connection.BeginTransaction(IsolationLevel.Snapshot,"FaresheetTransaction");
//Here all transaction occurs
if (transaction.Connection != null)
{
transaction.Commit();
transaction.Dispose();
}
}
}
catch (Exception ex)
{
if (transaction.Connection != null)
transaction.Rollback();
transaction.Dispose();
} `
내 C# 코드,하지만 문제는 내가 트랜잭션의 시간 동안 테이블의 데이터 (트랜잭션 중에 액세스하는)에 액세스 할 때. 테이블은 응용 프로그램의 다른 부분에서 액세스하고 있습니다. 그래서 테이블에서 데이터를 읽으려고하면 예외가 발생합니다.
? 또는 다른 독자가 자물쇠를 무시할 수 있습니까? (아주 좋은 이유로 거기에) –
나는 다른 사용자를 위해 거래 테이블에 자물쇠를 갖고 싶지 않아 .... 트랜잭션은 트랜잭션의 시간이 오래 걸릴 수 있기 때문에, 수십만 데이터가 테이블에 삽입되므로 시간이 오래 걸릴 것입니다 ... 그래서, tran 기간에 saction, 나는 다른 사용자가 그 테이블에 액세스 할 수 있기를 원하고 데이터를 읽을 수 있습니다 ....... –