Programing

SQL Server 프로파일 러에서 "exec sp_reset_connection"은 무엇입니까?

lottogame 2020. 5. 29. 07:52
반응형

SQL Server 프로파일 러에서 "exec sp_reset_connection"은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

"sp_reset_connection"을 내 보내서 Sql Profiler의 의미를 이해하려고합니다.

"exec sp_reset_connection"줄 다음에 BatchStarting 및 Completed가 있습니다.

RPC:Completed       exec sp_reset_connection
SQL:BatchStarting   SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted  SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]    

기본적으로 첫 번째 줄 "exec sp_reset_connection"은 전체 프로세스 (내 연결이 열리고 선택 stmt가 실행 된 후 연결이 닫히고 풀로 다시 풀림)가 발생했음을 의미합니까? 아니면 내 연결은 여전히 ​​열려 있습니다.

그리고 왜 sp_reset_connection이 내 자신의 select 문보다 먼저 실행 되었습니까?

연결을 열고 닫을 때 더 자세히 알 수있는 방법이 있는지 알고 싶습니다.

"exec sp_reset_connection"을 보면 연결이 닫혔다는 의미입니까?


다른 답변이 말했듯 sp_reset_connection이 연결 풀이 재사용되고 있음을 나타냅니다. 하나의 특별한 결과에 유의하십시오!

Jimmy Mays의 MSDN 블로그 는 다음과 같이 말했습니다.

sp_reset_connection은 이전 연결 설정에서 트랜잭션 격리 수준을 서버 기본값으로 다시 설정하지 않습니다.

업데이트 : SQL 2014부터 TDS 버전 7.3 이상의 클라이언트 드라이버의 경우 트랜잭션 격리 수준이 기본값으로 다시 설정됩니다.

참조 : SQL Server : 풀링 된 연결에서 격리 수준 누수

추가 정보는 다음과 같습니다.

sp_reset_connection의 기능은 무엇입니까?

ODBC, OLE-DB 및 System.Data.SqlClient와 같은 데이터 액세스 API 계층은 모두 연결 풀에서 연결을 재사용 할 때 (내부) 저장 프로 시저 sp_reset_connection을 호출합니다. 연결이 재사용되기 전에 연결 상태를 재설정하기 위해이 작업을 수행하지만 재설정되는 항목은 문서화되어 있지 않습니다. 이 문서에서는 재설정 된 연결 부분을 문서화하려고합니다.

sp_reset_connection은 다음과 같은 연결 측면을 재설정합니다.

  • 모든 오류 상태 및 숫자 (예 : @@ error)

  • 병렬 쿼리를 실행하는 상위 EC의 하위 스레드 인 모든 EC (실행 컨텍스트)를 중지합니다.

  • 미해결 I / O 작업을 기다립니다

  • 연결에 의해 서버의 보류 버퍼를 비 웁니다.

  • 연결에 사용되는 버퍼 리소스를 잠금 해제합니다

  • 연결이 소유 한 모든 할당 된 메모리를 해제합니다

  • 연결에 의해 작성된 모든 작업 또는 임시 테이블을 지 웁니다.

  • 연결이 소유 한 모든 전역 커서를 종료합니다

  • 열려있는 열려있는 SQL-XML 핸들을 닫습니다.

  • 열려있는 SQL-XML 관련 작업 테이블을 삭제합니다.

  • 모든 시스템 테이블을 닫습니다.

  • 모든 사용자 테이블을 닫습니다.

  • 모든 임시 객체를 삭제합니다

  • 미결 거래 중단

  • 입대 할 때 분산 트랜잭션의 결함

  • 공유 데이터베이스 잠금을 해제하는 현재 데이터베이스의 사용자에 대한 참조 수를 줄입니다.

  • 획득 한 잠금 해제

  • 획득 한 핸들을 해제합니다

  • 모든 SET 옵션을 기본값으로 재설정

  • @@ rowcount 값을 재설정합니다

  • @@ identity 값을 재설정합니다

  • dbcc traceon ()을 사용하여 모든 세션 레벨 추적 옵션을 재설정합니다

  • NULLSQL Server 2005 이상 에서 원본 문서의 일부가 아닌 CONTEXT_INFO를 재설정

sp_reset_connection은 재설정되지 않습니다.

  • 보안 컨텍스트, 연결 풀링이 정확한 연결 문자열을 기반으로 연결을 일치시키는 이유

  • 응용 프로그램 역할을 되돌릴 수 없으므로 sp_setapprole을 사용하여 입력 한 응용 프로그램 역할

참고 : 나는 일시적인 웹에서 목록을 잃고 싶지 않기 때문에 여기에 목록을 포함시킵니다.


연결 풀링이 사용되고 있음을 나타냅니다 (좋은 일입니다).


그러나 다음을 참고하십시오.

스토어드 프로 시저 또는 트리거에서 SET TRANSACTION ISOLATION LEVEL을 발행하면 오브젝트가 제어를 리턴 할 때 오브젝트가 호출 될 때 적용되는 레벨로 격리 레벨이 재설정됩니다. 예를 들어, 일괄 처리에서 REPEATABLE READ를 설정 한 후 일괄 처리에서 격리 수준을 SERIALIZABLE로 설정하는 저장 프로 시저를 호출하면 저장 프로 시저가 제어를 일괄 처리로 되돌릴 때 격리 수준 설정이 REPEATABLE READ로 되돌아갑니다.

http://msdn.microsoft.com/en-us/library/ms173763.aspx

참고URL : https://stackoverflow.com/questions/641120/what-does-exec-sp-reset-connection-mean-in-sql-server-profiler

반응형