【问题标题】:How to remove SQL Server Extended Events Event files (.xel)?如何删除 SQL Server 扩展事件事件文件 (.xel)?
【发布时间】:2019-01-07 07:55:15
【问题描述】:

我们发现,随着时间的推移,很多 .xel 文件都存储在 sql server 中,它们将不必要地填满驱动器上的空间(一段时间后我们不需要它们)。此外,相关的扩展事件会话可能未结束。

我们每周都会触发一个清理作业,它会清理未使用的文件。

有没有办法通过 c# 代码或 SQL 删除这些文件?

如何找到我感兴趣的(与某个会话相关的).xel(使用 c# 或 sql)文件?

如果我删除 SQL 扩展事件会话,它会清除其 .xel 日志吗?

任何建议将不胜感激。

【问题讨论】:

  • 删除会话将清除日志。请阅读stackoverflow.com/questions/48830499/…
  • 哦...实际上我看到了这个问题,但我错过了它说删除会话也会清除日志的部分。谢谢!!
  • @AdrianChiritescu,删除 xe 会话不会删除 xel 文件。如果您担心空间,请使用翻转跟踪文件并指定有限的大小和数量。
  • @DanGuzman 我认为删除事件会话也会清除这些文件。我会看看你的建议(翻转跟踪文件),但你能否给我一些关于我想要完成的其他提示?我正在尝试在后台清理作业中使用 c# 或 SQL 清除这些文件超过一个月的时间,这可能吗?谢谢!

标签: c# sql-server


【解决方案1】:

以下 C# 代码将从指定文件夹中删除超过一个月的 .xel 文件。我猜您只想查看创建文件的日期,而不是时间,因此将CreationTime.DateDateTime.Today 进行比较,并且任何超过一个月的文件都将被删除。必须引用System.IO 命名空间。如果扩展事件当前处于活动状态,它将使用该文件并且无法删除该文件。您可以使用代码中的try...catch 块来处理此问题,也可以在删除文件之前运行命令停止事件,然后再重新打开事件。采用启动和停止每个事件的方法将需要知道要使用的特定事件的名称,如下所示。如果使用此选项,您可以将这些作为 SQL 命令从 C# 代码或作为 SQL 代理作业中的另一个步骤发送。 T-SQL 示例停止扩展事件,并且可以通过将 STATE 更改为 START 来重新启用它。

停止事件语句示例:

ALTER EVENT SESSION YourExtendedEvent ON SERVER 
STATE = STOP

删除旧的扩展事件文件:

        string directory = @"C:\YourFilePath\";
        DirectoryInfo di = new DirectoryInfo(directory);

        foreach (FileInfo fi in di.EnumerateFiles())
        {
            if (fi.Extension == ".xel" && fi.CreationTime.Date < DateTime.Today.AddMonths(-1))
            {
                fi.Delete();
            }
        }

【讨论】:

  • 这正是我所需要的,非常感谢您的及时答复!
【解决方案2】:

删除扩展事件会话不会删除文件目标文件。

您可以安排 SQL 代理作业,根据您的保留条件通过 PowerShell 脚本删除旧文件。请注意,用于运行作业的帐户当然需要删除权限,如果您在与 SQL Server 相同的帐户下运行 SQL Server 代理并为Run as 指定 SQL Server 代理帐户,这不是问题。

以下是 PowerShell 作业步骤类型的 PowerShell 命令示例,用于删除超过 30 天的文件:

Get-ChildItem -Path "D:\SqlTraceFiles" -Filter "*.xel" | where {$_.lastwritetime -lt (get-date).adddays(-30)} | Remove-Item -force

【讨论】:

  • 非常感谢@Dan Guzman 的帮助!我希望你不介意,但我选择了另一个答案,因为它建议了一个 C# 解决方案,这对我们的项目更方便,但这里有一些我学到的非常好的东西,我将来会记住它们.另外,您发现我走错了路,认为删除会话会删除实际上不是的 .xel 文件。感谢您努力帮助我!
  • @AdrianChiritescu, hust 所以你知道,没有必要停止跟踪,除非你想删除当前活动的文件。
猜你喜欢
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
相关资源
最近更新 更多