적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
SQL 추적 이벤트가 확장 이벤트 및 작업에 매핑하는 방법을 알아봅니다. SQL Trace 이벤트 클래스 및 열과 동일한 이벤트 데이터를 수집할 수 있습니다.
다음 절차에 따라 각 SQL 추적 이벤트 및 관련 열에 해당하는 확장 이벤트의 이벤트 및 동작을 확인할 수 있습니다.
T-SQL 명령을 실행하려면 SSMS(SQL Server Management Studio), Visual Studio Code용 MSSQL 확장, sqlcmd 또는 즐겨 찾는 T-SQL 쿼리 도구를 사용합니다.
쿼리 편집기를 사용하여 SQL 추적 이벤트에 해당하는 확장 이벤트 보기
SQL Server Management Studio의 쿼리 편집기 에서 다음 쿼리를 실행합니다.
SELECT DISTINCT tb.trace_event_id, te.name AS 'Event Class', em.package_name AS 'Package', em.xe_event_name AS 'XEvent Name', tb.trace_column_id, tc.name AS 'SQL Trace Column', am.xe_action_name AS 'Extended Events action' FROM sys.trace_events AS te LEFT JOIN sys.trace_xe_event_map AS em ON te.trace_event_id = em.trace_event_id LEFT JOIN sys.trace_event_bindings AS tb ON em.trace_event_id = tb.trace_event_id LEFT JOIN sys.trace_columns AS tc ON tb.trace_column_id = tc.trace_column_id LEFT JOIN sys.trace_xe_action_map AS am ON tc.trace_column_id = am.trace_column_id ORDER BY te.name, tc.name;
고:
모든 열이
NULL를 반환하고Event Class열만 제외되는 경우, 이벤트 클래스가 SQL Trace에서 마이그레이션되지 않았습니다.열
Extended Events action의 값NULL만 있는 경우 다음 조건 중 하나가 true입니다.확장 이벤트와 연결된 데이터 필드 중 하나에
SQL Trace column가 매핑됩니다.확장 이벤트의 각 이벤트에는 결과 집합에 자동으로 포함되는 기본 데이터 필드 집합이 있습니다.
열에
action해당하는 의미 있는 확장 이벤트가 없습니다. 예를 들어 SQL Trace의EventClass열이 있습니다. 이벤트 이름이 동일한 용도로 사용되므로 이 열은 확장 이벤트에 필요하지 않습니다.
확장 이벤트는 단일 이벤트를 사용하여 사용자가 구성할 수 있는 SQL Trace 이벤트 클래스(
UserConfigurable:1~UserConfigurable:9)를 대체합니다. 이벤트의 이름은user_event.입니다. 이 이벤트는 SQL Trace에서 사용하는 것과 동일한 저장 프로시저인sp_trace_generateevent을/를 사용하여 발생합니다.user_event저장 프로시저에 전달되는 이벤트 ID에 관계없이 이벤트가 반환됩니다. 그러나event_id필드는 이벤트 데이터의 일부로 반환되며 이벤트 ID를 기반으로 조건자를 빌드하는 데 사용할 수 있습니다. 코드에서UserConfigurable:0(이벤트 ID = 82)를 사용하는 경우, 세션에user_event이벤트를 추가하고event_id = 82조건자를 지정할 수 있습니다. 따라서 저장 프로시저가 Extended Eventssp_trace_generateevent이벤트 및 동등한 SQL Trace 이벤트 클래스를 생성하므로 코드를user_event변경할 필요가 없습니다.