如何使用SQL查询启动SQL Server扩展事件会话

时间:2018-08-23 11:03:09

标签: sql-server sql-server-2012

我能够使用sql查询创建SQL Server Extended事件会话。 但是以下是我使用sql查询创建扩展事件会话时面临的两个问题

  1. 扩展事件会话以禁用(停止)状态创建。
  2. .xel文件未在指定位置创建。

在使用向导创建扩展事件时,我注意到扩展事件最初是在禁用(停止)状态下创建的,并且在选择“立即启动启动事件会话...”会话时将其设置为启动状态,并创建了.xel文件。

我想使用sql查询实现同一步骤。

以下是我的剧本

CREATE EVENT SESSION [LoginSession_History] ON SERVER 
ADD EVENT sqlserver.connectivity_ring_buffer_recorded(
    ACTION(sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.database_name,sqlserver.nt_username,sqlserver.plan_handle,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.sql_text)),
ADD EVENT sqlserver.login(SET collect_options_text=(1)
    ACTION(sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.database_name,sqlserver.nt_username,sqlserver.plan_handle,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.sql_text)),
ADD EVENT sqlserver.logout(
    ACTION(sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.database_name,sqlserver.nt_username,sqlserver.plan_handle,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.session_id,sqlserver.sql_text))
ADD TARGET package0.event_file(SET filename=N'D:\Ext_Events\LoginSession_History.xel'),
ADD TARGET package0.ring_buffer
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=ON,STARTUP_STATE=ON)
GO

3 个答案:

答案 0 :(得分:1)

接下来将“ EVENT SESSION”更改为STATE = start;

-- Start the event session  
ALTER EVENT SESSION test_session  
ON SERVER  
STATE = start;  
GO  

Reference from official site

答案 1 :(得分:0)

要解决此问题,我们需要使用Alter事件会话命令并传递STATE = start 以下是链接

https://www.concurrency.com/blog/december-2015/schedule-extended-events-session-start-or-stop

答案 2 :(得分:0)

STARTUP_STATE=ON

是指重新启动 sqlserver 服务实例时将使用的状态。 它决定了它是否会自动启动。 是否设置 ON|OFF 取决于您要执行的事件跟踪类型以及您是否希望它跨回收激活。

在大多数情况下,在启动时消耗许多 cpu 周期同时记录大量细节的侵入性跟踪是非常不受欢迎的。