2009-06-19 2 views
5

SQL Server 데이터베이스에서 SELECT 쿼리를 수행하는 SqlCommand를 통해 응용 프로그램에서 일부 데이터 목록을 가져옵니다. 우리는 명시 적으로 SqlCommand에 트랜잭션을 설정하지 않고 SqlConnection을 전달하고 실행합니다. SQL Server에서 기본 IsolationLevel이 ReadCommitted 인 기본 트랜잭션을 시작하고 사용하는 트랜잭션이 지정되지 않은 경우입니까?트랜잭션을 지정하지 않고 SQLCommand 실행

답변

3

SQL Server는 명시 적 트랜잭션없이 행복하게 작동 할 수 있습니다. 하지만 네, 그것은 본질적으로 읽기 - 위탁이라고 생각합니다 (물론 쿼리 개체에 추가 힌트 (예 : UPDLOCK/NOLOCK)를 추가하지 않는 한). (다른 사람의 사이에서)

DBCC USEROPTIONS 

쇼 : 당신은 이것을 조사 할 수

isolation level read committed 
5

SQL은 문에 대한 암시 적 트랜잭션을 생성하고, 문이 완료되면이 거래는 최선을 다하고 있습니다. 이 트랜잭션의 격리 수준은 현재 격리 수준이며 기본값은 READ COMMITTED입니다. 특정 명령문은 현재 분리 레벨을 겹쳐 쓰고 READ COMMITTED (예 : RECEIVE)를 실행합니다.

SqlCommand가 배치 (more statements)를 실행하면 테이블에 액세스하는 각 명령문은 자체 트랜잭션을 작성합니다.

기본값 autocommit of transactions은 SET IMPLICIT_TRANSACTION을 변경하여 제어됩니다.

자세한 내용은 Controlling Transactions을 참조하십시오.

+0

아마 여기 같은 문제가 있습니다. http://stackoverflow.com/questions/41096727/is-there-an-implicit-transaction-in-sqlcommand-executenonquery – VansFannel

관련 문제