[SQL] 연결이 닫힐 때 어떤 커밋되지 않은 트랜잭션이 어떻게됩니까?
SQL연결이 닫힐 때 어떤 커밋되지 않은 트랜잭션이 어떻게됩니까?
그들은 즉시 다시 굴러 있습니까? 그들은 일정 기간 후 롤백 있습니까? 그들은 커밋되지 않은 상태로 남아 있습니까?
연결 풀링이 사용하고 연결이 간단하게 재설정하는 경우 동작은 동일합니까?
해결법
-
==============================
1.연결 풀링을 적용하면서 오픈 머물 수 있습니다. 예 : 클라이언트가 "중단"으로 보내기 때문에 명령 제한 시간은 잠금 및 TXN을 남길 수 있습니다.
연결 풀링을 적용하면서 오픈 머물 수 있습니다. 예 : 클라이언트가 "중단"으로 보내기 때문에 명령 제한 시간은 잠금 및 TXN을 남길 수 있습니다.
이 개 솔루션 :
나는 항상 SET XACT_ABORT ON을 사용합니다.
이 SQL 팀 블로그에서 :
MSDN에서, 섹션 "트랜잭션 지원"(내 굵은)
-
==============================
2.커밋 변경 연결 밖에서 보이지 그래서 롤백시는 무관하다. 그래서 그래, 트랜잭션은 결국 롤백됩니다.
커밋 변경 연결 밖에서 보이지 그래서 롤백시는 무관하다. 그래서 그래, 트랜잭션은 결국 롤백됩니다.
-
==============================
3.세션이 닫힐 때 서버는 immedeatly 어떤 미트되지 않은 트랜잭션을 롤백합니다. 도핑 풀은 풀에 거래를 반환하기 전에 미트되지 않은 트랜잭션을 취소에 대한 책임을지고있는 것입니다. 보류중인 거래와의 연결을 처분 할 경우 롤백됩니다.
세션이 닫힐 때 서버는 immedeatly 어떤 미트되지 않은 트랜잭션을 롤백합니다. 도핑 풀은 풀에 거래를 반환하기 전에 미트되지 않은 트랜잭션을 취소에 대한 책임을지고있는 것입니다. 보류중인 거래와의 연결을 처분 할 경우 롤백됩니다.
거래는 ADO의 API (SqlConnection.BeginTransaction)를 사용하여 클라이언트에 의해 또는이 TRANSACTION 문을 BEGIN 실행하여 시작할 수 있습니다. 클라이언트와 서버 사이의 TDS 프로토콜은 트랜잭션이 ADO 그들이 T-SQL 코드에서 시작되는 경우에도 연결이 트랜잭션을 보류중인 것을 알 수 있도록 다음과 같이 최선을 다하고 / 시작되었을 때 클라이언트를 알리는 특별 토큰을 가지고있다.
from https://stackoverflow.com/questions/1539564/what-happens-to-an-uncommitted-transaction-when-the-connection-is-closed by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 시간 필드를 요약하기 (0) | 2020.04.20 |
---|---|
[SQL] java.sql.SQLException이있다 : mysql : 없음 적합한 드라이버는 JDBC을 찾을 수 없습니다 // localhost를 : 3306 / DBNAME [중복] (0) | 2020.04.20 |
[SQL] 때 또는 당신이 오른쪽 외부를 사용하는 이유에 참여하는 대신 왼쪽? (0) | 2020.04.20 |
[SQL] SQL 쿼리 결과에서 열 이름으로 열 값을 설정 (0) | 2020.04.20 |
[SQL] SQL 서버에서 문자열을 분할 (0) | 2020.04.20 |