2 回答

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();
}
}

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
- 2 回答
- 0 關注
- 149 瀏覽
添加回答
舉報