我需要通过我的 C# 代码启动 SQL Server 扩展事件会话。
我有这段代码来创建一个会话然后执行它,但它不起作用,请帮忙?
代码 :
用于创建会话的 SQL 语句
string sql = "DECLARE @file nvarchar(500), @path nvarchar(500), @db sysname = DB_NAME();
SET @file = RTRIM(N'D:\XE\ ') + @db;
SET @path = @file + N'day';
EXEC master.dbo.xp_create_subdir @file;
DECLARE @sql nvarchar(max) = N'CREATE EVENT SESSION ' + @db + N'_Session1
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(
ACTION (sqlserver.sql_text, sqlserver.tsql_stack, sqlserver.client_app_name,
sqlserver.client_hostname, sqlserver.username
) WHERE ( sqlserver.database_name = N''' + @db + N''' ) ),
ADD EVENT sqlserver.sql_statement_starting
(
ACTION (sqlserver.sql_text, sqlserver.tsql_stack, sqlserver.client_app_name,
sqlserver.client_hostname, sqlserver.username
) WHERE ( sqlserver.database_name = N''' + @db + N''')
)
ADD target package0.event_file
(
SET filename = N''' + @path + N'''
)
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=ON);';
EXEC master.sys.sp_executesql @sql;"
string sql1=" DECLARE @fichier nvarchar(500),@database sysname = DB_NAME();
DECLARE @sql1 nvarchar(max) =N'ALTER EVENT SESSION ' + @database + N'_Session ON SERVER STATE = START '
EXEC master.sys.sp_executesql @sql1;"