2009-11-24 3 views
4

JTDS 드라이버를 사용 중이고 Mgmt 스튜디오에서 SQL을 실행할 때와 동일한 쿼리 계획을 내 자바 클라이언트가 받고 있는지 확인하고 싶습니다. 이상적인 xml 형식의 쿼리 계획을 얻는 방법이 있습니다. ?SQL Server에서 jdbc를 사용하여 쿼리 계획을 가져올 수 있습니까?

기본적으로, 내가 관리 스튜디오에서

set showplan_xml on 

과 같은 형식의 출력을하고 싶습니다. 어떤 아이디어?

SELECT usecounts, cacheobjtype, 
    objtype, [text], query_plan 
FROM sys.dm_exec_requests req, sys.dm_exec_cached_plans P 
    CROSS APPLY 
    sys.dm_exec_sql_text(plan_handle) 
    CROSS APPLY 
    sys.dm_exec_query_plan(plan_handle)  
WHERE cacheobjtype = 'Compiled Plan' 
    AND [text] NOT LIKE '%sys.dm_%' 
    --and text like '%sp%reassign%' 
    and p.plan_handle = req.plan_handle 
    and req.session_id = 70 /** <-- your sesssion_id here **/ 

답변

6
  1. 는 자바 세션 ID를 식별하고 SESSION_ID에 대한 계획을 얻기위한 몇 가지 코드입니다. @@SPID을 java에서 인쇄하거나 SSMS를 사용하여 Java 클라이언트 세션에 대해 sys.dm_exec_sessions 및/또는 sys.dm_exec_connections을 찾습니다 (program_name, host_process_id, client_net_address 등으로 식별 할 수 있음).
  2. 성명을 실행하십시오. 이 .sqlplan 파일 2.
  3. 저장 계획에서 발견 된 plan_handle에서 sys.dm_exec_query_plan를 사용하여 계획을 추출하고 또한 SSMS에서

그것을 당신이 수 열 1.

  • 에서 발견 된 session_id에 대한 sys.dm_exec_requests에서 봐 프로파일 러를 사용하고 프로파일 러를 서버에 연결하고 Showplan XML 이벤트를 캡처하십시오.

  • +0

    감사합니다. Remus, 나는 (물론 Google을 통해!) 매개 변수로 session_id를 사용하는 일부 SQL을 위태롭게했습니다. 위의 편집을 참조하십시오. –

    관련 문제