2011-09-22 4 views
15

SQL Server에서 세션으로 간주되는 내용. sp_getapplock을 사용하려고하는데 다음과 같은 내용이 있습니다.SQL Server 세션

자원에 대한 잠금은 현재 트랜잭션 또는 현재 세션과 연관되어 있습니다. 현재 트랜잭션과 관련된 잠금은 트랜잭션이 커밋되거나 롤백 될 때 해제됩니다. 세션과 관련된 잠금은 세션이 로그 아웃 될 때 해제됩니다. 어떤 이유로 든 서버가 종료되면 모든 잠금이 해제됩니다.

'세션이 로그 아웃되면 세션과 관련된 잠금이 해제됩니다.'

무엇이 세션으로 간주되는지 알아야합니다. 관리 스튜디오를 사용하여 연결하는 것은 데이터베이스에 대한 세션입니다. asp.net을 사용하여 SQL Server에 연결하면 세션도 생성됩니다.

ADO .net 및 연결 풀을 사용하면 연결 풀의 모든 연결이 다른 세션으로 간주됩니까?

답변

3

ADO .net 및 연결 풀을 사용하는 경우 연결 풀의 모든 연결이 다른 세션으로 간주됩니까?

일종의. 새로운 연결을 열거 나 닫을 때마다, 그것은 하나의 세션입니다. 그러나 연결 풀의 "기능"중 하나는 명령에서 항상 열거 나 닫히는 것은 아니며 반복적으로 연결을 열고 닫는 것을 볼 때 장면 뒤에서 단일 연결을 사용한다는 것입니다. 나는 SQL Server에서 단일 세션을 생성한다고 믿습니다.

+4

"... 나는 SQL Server에서 단일 세션을 생성합니다"라고 가정합니다. 이것은 순수한 추측처럼 들리지만이 방법으로 작동한다고해도 문서화되지 않은 것으로 보이므로 의존해서는 안됩니다. –

3

연결 풀링을 사용하면 재사용 된 연결을 다시 할당 할 때마다 sp_reset_connection이 호출됩니다. This SO Postsp_reset_connection에 의한 정리 작업을 자세히 다루고 있습니다.

편집 질문의 문맥에서 sp_reset_connection "획득 된 잠금 해제". COMMIT 또는 기본적으로

을 롤백하는 SPID에 : 세션 종료에

  • "트랜잭션"

    • "세션"

  • 0

    sp_getapplock의 @LockOwner이 출시 될 때를 말한다 sys.sysprocesses의 "세션"은

    관련 문제