【问题标题】:How to clear SQL Server Extended Events Event File如何清除 SQL Server 扩展事件事件文件
【发布时间】:2018-07-27 13:59:13
【问题描述】:

如何清除存储在文件中的 SQL Server 扩展事件

背景

SQL Server 扩展事件事件文件目标的文件存储在哪里?

我想删除几个月的日志文件;但 SQL Server 没有告诉我文件在哪里:

我会听从微软 SQL Server 论坛上的建议:

Clear events in file target?

如果不再需要,只需停止会话并删除 .xel 文件。

尝试#3

我尝试做任何称职的用户界面设计师从一开始都会创建的最明显的事情:右键单击事件文件目标,然后选择:

  • 清除
  • 删除
  • 清除

除了没有选择做任何这些显而易见的事情:

尝试#4

我还尝试进入扩展事件菜单,然后点击清除数据。但是该选项被莫名其妙地禁用了:

尝试#5

我还尝试编写 Extended Events Session 脚本,以查看它存储文件的位置。但当然 SQL Server 团队没有帮助:

ADD TARGET package0.event_file(SET filename=N'Expensive Queries',max_file_size=(25),max_rollover_files=(4)),

尝试#6

在 SQL Server Profiler 中。如果您想清除事件,请按下按钮清除事件:

SQL Profiler 已弃用,它的替代品无法清除事件。


清除事件的方法是什么?

阅读奖励

【问题讨论】:

  • 阿门!为什么我们不能有更好的清除方法而不是进入服务器并删除一个危险的文件?

标签: sql-server extended-events


【解决方案1】:

默认情况下,路径似乎是

C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\*.xel

或者基本上是为 SQL Server 保存系统文件的任何地方(即默认的 ERRORLOG 位置)。如果那里什么都没有,那么可能是您的扩展事件设置为环形缓冲区,在这种情况下,仅保留最新信息并将其存储在内存中。在这种情况下,清除日志的唯一方法似乎是停止并启动会话。

【讨论】:

  • 默认情况下,管理员用户甚至没有访问Logs 目录的权限,因此在更高级别的目录中搜索您的.xel 文件将不会返回任何命中,即使它存在。
【解决方案2】:

你也可以使用

DECLARE @SQLDataRoot VARCHAR(400)
EXEC master..xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE', 
 @key = 'SOFTWARE\Microsoft\MSSQLServer\Setup', 
 @value_name = 'SQLDataRoot', @value = @SQLDataRoot OUTPUT
 SELECT @SQLDataRoot 

【讨论】:

  • 对我来说这个返回的目录C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL。在该目录中搜索 *.xel 没有返回任何结果。尝试打开嵌套的Logs 目录发现我什至没有查看该目录的权限。授予自己访问Logs 的权限表明它充满了.xel 文件,包括我的活动会话的文件。必须把它交给 MS,他们肯定知道如何让最简单的事情变得难以忍受,45 分钟的工作来清除事件日志。令人印象深刻!
【解决方案3】:

获取文件路径的方法如下:

SELECT n.value('(@name)[1]','varchar(255)') AS FilePath
FROM 
(
    SELECT CAST(t.target_data AS XML) target_data
    FROM sys.dm_xe_sessions s
        INNER JOIN sys.dm_xe_session_targets t ON t.event_session_address = s.address
    WHERE s.name = 'Your Session Name'
        AND t.target_name = N'event_file'
) AS tab
    CROSS APPLY [target_data].[nodes]('EventFileTarget/File') AS [q] ([n]);

我发现清除数据的唯一方法是删除会话删除文件,然后再次创建会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2015-07-20
    • 2012-10-28
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多