Sql-Server

Ola Hallengren 解決方案,備份未清理

  • June 15, 2021

我有大約 30 個 SQL Server 2005-2014 實例,所有這些實例都使用出色的 Ola Hallengran 維護腳本來生成我的完整/差異/日誌備份。直到最近,這對我來說已經工作了多年,沒有任何問題。

其中一台伺服器有兩個實例。對於該伺服器上的預設實例,.bak不會發生文件清理。

我不認為這與腳本有任何關係,而是其他一些事情,比如.bak在清理髮生時文件可能被鎖定。我已經更改了備份的安排,以防備份視窗與另一個程序發生衝突,但無濟於事。其他實例都沒有這個問題,包括同一個盒子上的命名實例。

我知道事實上這不是權限問題,因為實例的代理在域帳戶下執行,可以完全控製備份目標卷,這是物理伺服器上的專用共享,RAID 5(不幸的是)。它具有如下組策略權限:

  • 繞過遍歷檢查
  • 作為批處理作業登錄

我檢查了備份伺服器上的所有事件日誌,但沒有發現任何可以幫助我解決它的問題。

任何人都可以就我如何解決此問題提供任何建議嗎?

謝謝

更新:

  • 伺服器上的日期/時間與 DC 和我的工作站一致。備份伺服器也有完美的時間同步,所以絕對不是時間滑動問題。
  • @cleanupTime就像我離開它(72 小時)一樣。
  • 我最初認為該卷的磁帶備份可能是罪魁禍首,但後來檢查並三次檢查文件沒有被鎖定 - 我們對該卷的 Veeam 備份每週只進行一次。

我可以毫無問題地手動刪除文件。

根據您的建議,我已-o在命令末尾添加以了解命令的外觀。我認為唯一可能的原因是:

日期和時間:2015-10-20 11:29:58 命令:DECLARE @ReturnCode int EXECUTE @ReturnCode =

$$ master $$.dbo.xp_delete_file 0, N’\backupServer\Production\SQLInstance01\Reporting_Database\FULL’, ‘bak’, ‘2015-10-17T03:29:58’ IF @ReturnCode <> 0 RAISERROR(‘刪除文件時出錯。’, 16, 1) 結果:成功持續時間:00:00:00

因此,該命令似乎正在使用未以反斜杠終止的 UNC 路徑。我在其他地方讀到xp_delete_fileSP 需要反斜杠:

https://stackoverflow.com/questions/24582996/sql-server-xp-delete-file-parameters

所以這可能是一個紅鯡魚,但根據-o輸出,xp_delete_fileSP 不能正常工作。我將檢查另一個不存在此問題的實例上的輸出以進行比較。感謝您的建議。

更新#2: 我在另一個正確清理文件的實例上添加了-o我的命令,發現這個輸出在輸出文件中也沒有尾隨\,所以我仍然不知所措。

更新#3: 我嘗試通過將命令從輸出文件放入 SSMS 來刪除該文件。我發現該命令在任何其他實例上都能正常工作,而不是這個。**它說“命令已成功完成”,但沒有文件被刪除。是否有實例級設置可以啟用/禁用使用能力xp_delete_file

這是隨機想到的列表,我不能保證有任何問題。

  • 伺服器上的日期時間已被淘汰
  • 備份儲存上的日期時間已被淘汰
  • 有人更改了您代理工作的@CleanupTime(可能是意外)
  • 在清理嘗試執行鎖定文件時發生備份位置的備份(我自己有這個)

既然你說這是一個最近的問題,而不是剛剛發生的問題,我假設你仍然可以手動刪除這些文件,這表明它們不是永久使用的。

可能值得在最後執行 -o 命令以將命令的輸出寫入文件(例如,’-b’ 機會到 ‘-b -o C:\Logs\backuplog.txt’)和諮詢它是否會帶來任何問題

我剛遇到這種情況。在 50 個實例中,一個實例的舊備份沒有被刪除。該作業進行了新備份,並且在刪除舊備份時沒有失敗。直到另一個伺服器備份作業由於空間不足而失敗,我才注意到。(是的,不是很主動。)無論如何,這是 SQL 引擎服務帳戶沒有修改權限的唯一實例。一旦添加了這些,一切都很好。我想知道如果刪除失敗,該作業是否不應該失敗 - 也許它是 Ola 腳本中的一個選項。我遇到這個是因為我想看看其他人是否解決了這個問題。以為我會添加我的2位。

引用自:https://dba.stackexchange.com/questions/118245