如何清除 SQL 服务器扩展事件事件文件
How to clear SQL Server Extended Events Event File
如何清除存储在文件中的SQL服务器扩展事件?
背景
SQL 服务器扩展事件事件文件目标的文件存储在哪里?
我想删除几个月的日志文件;但是 SQL 服务器没有告诉我文件在哪里:
我会听从 Microsoft SQL 服务器论坛上的建议:
Clear events in file target?
Simply stop the session and delete .xel file if it’s no longer required.
尝试#3
我尝试做一件最明显的事情,任何称职的用户界面设计师都会从一开始就创建:右键单击 事件文件 目标,然后 select:
- 清除
- 删除
- 清除
- 空
除了没有选项可以做任何这些显而易见的事情:
尝试#4
我还尝试进入 扩展事件 菜单,然后单击 清除数据 。但是该选项莫名其妙地被禁用:
尝试#5
我还尝试编写 Extended Events Session 的脚本,以便查看它存储文件的位置。但是当然 SQL 服务器团队没有帮助:
ADD TARGET package0.event_file(SET filename=N'Expensive Queries',max_file_size=(25),max_rollover_files=(4)),
尝试#6
在 SQL 服务器分析器中。如果您想清除事件,请按下按钮以清除事件:
SQL Profiler 已弃用,其替代品无法清除事件。
清除事件的方法是什么?
红利阅读
- Query to clear sql server logs over a certain age
- Clear events in file target?
- BOL: Targets for Extended Events in SQL Server
- BOL: Event File Target
默认情况下,路径似乎是
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\*.xel
或者基本上是为 SQL 服务器保留系统文件的任何地方(即默认的 ERRORLOG 位置)。如果那里什么都没有,那么可能是您的扩展事件设置为环形缓冲区,在这种情况下,只会保留最新信息并将其存储在内存中。似乎在这种情况下清除日志的唯一方法是停止并启动会话。
您也可以使用
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
获取文件路径的方法如下:
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]);
我发现清除数据的唯一方法是删除会话,删除文件,然后重新创建会话。
如何清除存储在文件中的SQL服务器扩展事件?
背景
SQL 服务器扩展事件事件文件目标的文件存储在哪里?
我想删除几个月的日志文件;但是 SQL 服务器没有告诉我文件在哪里:
我会听从 Microsoft SQL 服务器论坛上的建议:
Clear events in file target?
Simply stop the session and delete .xel file if it’s no longer required.
尝试#3
我尝试做一件最明显的事情,任何称职的用户界面设计师都会从一开始就创建:右键单击 事件文件 目标,然后 select:
- 清除
- 删除
- 清除
- 空
除了没有选项可以做任何这些显而易见的事情:
尝试#4
我还尝试进入 扩展事件 菜单,然后单击 清除数据 。但是该选项莫名其妙地被禁用:
尝试#5
我还尝试编写 Extended Events Session 的脚本,以便查看它存储文件的位置。但是当然 SQL 服务器团队没有帮助:
ADD TARGET package0.event_file(SET filename=N'Expensive Queries',max_file_size=(25),max_rollover_files=(4)),
尝试#6
在 SQL 服务器分析器中。如果您想清除事件,请按下按钮以清除事件:
SQL Profiler 已弃用,其替代品无法清除事件。
清除事件的方法是什么?
红利阅读
- Query to clear sql server logs over a certain age
- Clear events in file target?
- BOL: Targets for Extended Events in SQL Server
- BOL: Event File Target
默认情况下,路径似乎是
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\*.xel
或者基本上是为 SQL 服务器保留系统文件的任何地方(即默认的 ERRORLOG 位置)。如果那里什么都没有,那么可能是您的扩展事件设置为环形缓冲区,在这种情况下,只会保留最新信息并将其存储在内存中。似乎在这种情况下清除日志的唯一方法是停止并启动会话。
您也可以使用
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
获取文件路径的方法如下:
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]);
我发现清除数据的唯一方法是删除会话,删除文件,然后重新创建会话。