'Extended Events'에 해당되는 글 4건

  1. Xevent Query Trace Filtering
  2. deadlock capture of XEvent
  3. XEvent - SQL Trace와 동일한 결과 얻기
  4. XEvent 정리

Xevent Query Trace Filtering

-- Query.1 ) 쿼리창을 열어 아래의 쿼리를 실행 준비를 한다.

USE DBA

gO

   

SELECT *

FROM dbo.T_DiskInfo

go

SELECT *

FROM dbo.Hat

go

update Hat

set

Thing2 = Thing2 + 2

go

   

--DROP EVENT SESSION [Query_AUDIT] ON SERVER

--GO

   

-- Query.1 의 세션 ID를 확인해서 아래의 상수값 59를 세션 ID값으로 변경한다.

-- filename=N'D:\DB\XEVENT\Query_AUDIT.xel' 경로 변경

CREATE EVENT SESSION [Query_AUDIT] ON SERVER

ADD EVENT sqlserver.sp_statement_completed(SET collect_object_name=(1)

WHERE ([package0].[equal_uint64]([sqlserver].[session_id],(59)) AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%SELECT%') AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%Hat%'))),

ADD EVENT sqlserver.sql_statement_completed( ACTION(sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.session_id,sqlserver.sql_text,sqlserver.username)

WHERE ([package0].[equal_uint64]([sqlserver].[session_id],(59)) AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%SELECT%') AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%Hat%')))

ADD TARGET package0.event_file(SET filename=N'D:\DB\XEVENT\Query_AUDIT.xel')

WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)

GO

   

-- Query 1번을 4~5회 수행

-- 대략 30초 쉬고 아래의 쿼리를 수행한다. 여기도 위의 경로로 변경 한다.

   

use master

go

   

SELECT

XEvent.value('(event/@name)[1]', 'varchar(50)') AS event_name,

DATEADD(hh,

DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP),

XEvent.value('(event/@timestamp)[1]', 'datetime2')) AS [timestamp],        

XEvent.value('(event/action[@name="session_id"]/value)[1]', 'int') AS [session_id],

XEvent.value('(event/action[@name="database_name"]/value)[1]', 'varchar(50)') AS [database_name],

CASE

WHEN CHARINDEX ( 'SELECT', XEvent.value('(event/action[@name="sql_text"]/value)[1]', 'varchar(1000)')) > 0 THEN 'SELECT'

ELSE 'ETC'

END AS [statement_type],                

XEvent.value('(event/action[@name="client_hostname"]/value)[1]', 'varchar(100)') AS [client_hostname],

XEvent.value('(event/action[@name="username"]/value)[1]', 'varchar(100)') AS [username],

XEvent.value('(event/action[@name="sql_text"]/value)[1]', 'varchar(1000)') AS [sql_text],        

XEvent

FROM (

SELECT CAST(event_data AS XML) AS XEvent

FROM sys.fn_xe_file_target_read_file('D:\DB\XEVENT\Query_AUDIT*.xel', null, null, null)) as src

ORDER BY

DATEADD(hh,

DATEDIFF(hh, GETUTCDATE(), CURRENT_TIMESTAMP),

XEvent.value('(event/@timestamp)[1]', 'datetime2')),

CAST(SUBSTRING(XEvent.value('(event/action[@name="attach_activity_id"]/value)[1]', 'varchar(50)'), 1, 36) AS uniqueidentifier),

CAST(SUBSTRING(XEvent.value('(event/action[@name="attach_activity_id"]/value)[1]', 'varchar(50)'), 38, 10) AS int)

GO

   

'Extended Events' 카테고리의 다른 글

deadlock capture of XEvent  (0) 2013.04.30
XEvent - SQL Trace와 동일한 결과 얻기  (0) 2013.03.19
XEvent 정리  (0) 2013.03.12

deadlock capture of XEvent

'Extended Events' 카테고리의 다른 글

Xevent Query Trace Filtering  (0) 2013.05.03
XEvent - SQL Trace와 동일한 결과 얻기  (0) 2013.03.19
XEvent 정리  (0) 2013.03.12

안녕하세요. 주디아줌마입니다.

SQLSkills.com에서 Xevent를 이용하여 SQL TRACE와 동일 한 결과를 얻을 수 잇는 방법을 제공해 주었습니다. 저도 보면서 우와~~ @.@

   

원본 링크

참고 링크
http://blogs.msdn.com/b/extended_events/archive/2010/12/10/migrating-from-sql-trace-to-extended-events.aspx

  


시작하기 전에 위의 데모용 동영상은 보시면 좋고^^, Script는 다운로드 받으시기 바랍니다.

   

제 테스트 환경입니다.

SELECT @@VERSION

------------------------------------------------------------------------

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)

Dec 28 2012 20:23:12

Copyright (c) Microsoft Corporation

Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

   

   

  1. Profiler를 이용해서 캡쳐하고자 하는 이벤트를 선택
    1. 추적 속성 확인

         

    2. 추적 시작과 종료
       
    3. 파일 > 내보내기>추적 정의 스크립팅(T)> SQL Server 2005 - SQL11(S)를 실행
      D:\DB\XEVENT\TraceDefinition.sql 저장

         

    4. SSMS에서 TraceDefinition.sql 파일을 오픈한다.
      최대 파일 사이즈와 경로를 변경 후 실행 한다.

      set @maxfilesize = 100

      exec @rc = sp_trace_create @TraceID output, 0, N'D:\DB\XEVENT\file1', @maxfilesize, NULL

         

    5. Trace 정보 확인 및 중지
      select * from sys.fn_trace_getinfo(0)

         

      -- 중지

      exec sp_trace_setstatus 3, 0

         

  2. Xevent 프로시져 생성 및 XEVNET 스크립트 생성
    1. SP 생성
      Profiler to XEvents_sp_SQLskills_ConvertTraceToExtendedEvents.sql 파일을 실행 한다.
      sys.trace_xe_event_map 시스템 테이블이 비완성인지라 테이블의 collatiion 충돌이 발생하여 몇가지 수정하였다.
       

      <<Profiler to XEvents_sp_SQLskills_ConvertTraceToExtendedEvents.sql>>

       

    2. Xevent Script 생성
      아래와 같이 세션명과 traceID를 변경하여 실행 한다.
      http://www.sqlskills.com/blogs/jonathan/converting-sql-trace-to-extended-events-in-sql-server-2012/
      원작자 : Jonathan
    3.    

  3. XEVENT으로 추적 시작 및 결과 확인
    1. 위의 결과 script를 copy해서 실행
      SSMS>관리>확장이벤트>세션에 생성된 것을 확인

         

      실행 후 종료하여 결과 데이터를 확인해 보자.

         

    2. D:\DB\XEVENT 확장 이벤트에 생성된 파일을 더블 클릭

         

    3. 결과 확인

         

    4. 이벤트 로그 중 더블 클릭

         

      보고자 하는 항목을 테이블에 열 표시 선택

    5. 결과


      헤더 정보를 클릭하면 Sort도 가능
       

    6. 필터

         

         

이상입니다.

   

다 아시는 내용이신가요? 전,, 우와 하면서 보았는데^^ 확장 이벤트 공부할 필요가 있네요^^

멋쟁이 주디아줌마였습니다.

   

   

   

'Extended Events' 카테고리의 다른 글

Xevent Query Trace Filtering  (0) 2013.05.03
deadlock capture of XEvent  (0) 2013.04.30
XEvent 정리  (0) 2013.03.12

XEvent 정리

XEVENT를 이용해서 병렬처리로 되는지 쿼리 플랜 내리기..
단, 실 서버에서 하면 단번에 죽는다... 테스트용으로만 사용할 것..
http://www.sqlskills.com/blogs/erin/sql-server-maintenance-plans-and-parallelism-index-rebuild/


'Extended Events' 카테고리의 다른 글

Xevent Query Trace Filtering  (0) 2013.05.03
deadlock capture of XEvent  (0) 2013.04.30
XEvent - SQL Trace와 동일한 결과 얻기  (0) 2013.03.19