programing

SQL Server Profiler에서 "exec sp_reset_connection"은 무엇을 의미합니까?

codeshow 2023. 4. 7. 21:46
반응형

SQL Server Profiler에서 "exec sp_reset_connection"은 무엇을 의미합니까?

sp_reset_connection을 내보냄으로써 SQL Profiler의 의미를 이해하려고 합니다.

"exec sp_reset_connection" 행 뒤에 Batch Starting 및 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 스테이트먼트보다 먼저 실행되는 이유는 무엇입니까?리셋은 사용자의 sql 뒤에 와야 하지 않을까요?

연결이 언제 열리고 언제 닫히는지 좀 더 자세히 알 수 있는 방법이 있나요?

"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 및 시스템과 같은 API의 계층에 액세스합니다.Data.SqlClient는 모두 연결 풀에서 연결을 다시 사용할 때 (내부) 저장 프로시저 sp_reset_connection을 호출합니다.이렇게 하면 다시 사용하기 전에 연결 상태가 리셋되지만 리셋되는 내용은 문서화되어 있지 않습니다.이 문서에서는 리셋되는 접속 부분을 문서화합니다.

sp_communications_connection은 연결의 다음 측면을 리셋합니다.

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

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

  • 미결 I/O 작업을 대기합니다.

  • 접속에 의해 서버상의 보류 버퍼를 해방합니다.

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

  • 접속에 의해 소유된 모든 할당 메모리를 해방합니다.

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

  • 연결에 의해 소유되는 모든 전역 커서를 중지합니다.

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

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

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

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

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

  • 미해결 트랜잭션 중단

  • 등록 시 분산 트랜잭션의 결함

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

  • 획득한 잠금을 해제합니다.

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

  • 모든 SET 옵션을 기본값으로 재설정합니다.

  • @@rowcount 값을 리셋합니다.

  • @@identity 값을 리셋합니다.

  • dbcc traceon()을 사용하여 세션레벨 트레이스 옵션을 리셋합니다.

  • 를 리셋합니다.보에 대한 NULLSQL Server 2005 이상에서

sp_reset_connection이 리셋되지 않음:

  • 보안 콘텍스트: 이것이 연결 풀링이 정확한 연결 문자열을 기반으로 연결을 일치시키는 이유입니다.

  • SQL Server 2005 이전에는 애플리케이션 역할을 전혀 되돌릴 수 없었기 때문에 sp_set approle을 사용하여 입력한 애플리케이션 역할.SQL Server 2005부터는 앱 역할을 되돌릴 수 있지만 세션에 포함되지 않은 추가 정보만 있어야 합니다.접속을 종료하기 전에 sp_unset approle을 통해 애플리케이션 역할을 수동으로 되돌려야 합니다.이 값은 다음과 같이 캡처됩니다.sp_setapprole행됩니니다다

주의: 일시적인 웹에서 손실되는 것을 원치 않기 때문에 여기에 목록을 포함합니다.

접속 풀링이 사용되고 있는 것을 나타냅니다(이것은 좋은 일입니다).

단, 주의:

저장 프로시저 또는 트리거에서 SET TRANSACTION INALION LEVEL을 발행하면 개체가 반환될 때 분리 수준이 개체가 호출되었을 때의 실제 수준으로 재설정됩니다.예를 들어, 배치에서 REPETABLE READ를 설정한 후 배치가 분리 레벨을 SERIALBLE로 설정하는 저장 프로시저를 호출하면 저장 프로시저가 배치에 제어를 반환할 때 분리 레벨 설정이 REPETABLE 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

반응형