亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何刪除 SQL Server 擴展事件事件文件 (.xel)?

如何刪除 SQL Server 擴展事件事件文件 (.xel)?

C#
慕姐8265434 2022-07-10 16:29:02
我們發現,隨著時間的推移,很多 .xel 文件都存儲在 sql server 中,它們將不必要地填滿驅動器上的空間(一段時間后我們不需要它們)。此外,相關的擴展事件會話可能未結束。我們有一個每周觸發的清理作業,它會清理未使用的文件。有沒有辦法通過 c# 代碼或 SQL 刪除這些文件?如何找到我感興趣的 .xel(使用 c# 或 sql)文件(與某個會話相關)?如果我刪除 SQL 擴展事件會話,它會清除其 .xel 日志嗎?任何建議將不勝感激。
查看完整描述

2 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

以下 C# 代碼將從指定文件夾中刪除超過一個月的 .xel 文件。我猜您只想查看創建文件的日期,而不是時間,因此CreationTime.Date與 相比DateTime.Today,任何超過一個月的文件都將被刪除。對命名空間的引用System.IO將是必要的。如果擴展事件當前處于活動狀態,它將使用該文件并且無法刪除該文件。您可以使用try...catch在您的代碼中阻止或運行命令以在刪除文件之前停止事件,然后在之后重新打開事件。采用啟動和停止每個事件的方法將需要知道要使用的特定事件的名稱,如下所示。如果使用此選項,您可以將這些作為 C# 代碼中的 SQL 命令或作為 SQL 代理作業中的另一個步驟發送。STATET-SQL 示例停止擴展事件,并且可以通過更改為來重新啟用它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();

            }

        }


查看完整回答
反對 回復 2022-07-10
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

刪除擴展事件會話不會刪除文件目標文件。

您可以根據您的保留標準安排 SQL 代理作業以通過 PowerShell 腳本刪除舊文件。請注意,用于運行作業的帳戶當然需要刪除權限,如果您在與 SQL Server 相同的帳戶下運行 SQL Server 代理并為Run as.

以下是 PowerShell 作業步驟類型的 PowerShell 命令示例,用于刪除超過 30 天的文件:

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


查看完整回答
反對 回復 2022-07-10
  • 2 回答
  • 0 關注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號