2008-11-24 58 views
4

我有一個在下班時間每週執行的維護計劃。它總是報告成功,但舊備份不會被刪除。我不想讓驅動器充滿。爲什麼我的SQL Server 2005備份不被刪除?

DB服務器信息:SQL Server標準版9.00.3042.00

有一個 「清除維護任務」 設置爲

「搜索文件夾,刪除文件基礎上的延伸」

和「在任務運行時基於文件的年齡刪除文件「被檢查並設置爲4周。

我唯一能看到的是我的備份每個都有自己的子文件夾,並且這不是遞歸的。我錯過了什麼嗎?

另外:我已經看到了問題的預SP2,但我運行Service Pack 2

回答

2

如果您在子文件夾備份,您必須指定確切的子文件夾中刪除。

例如:

您通過選擇說的選項進行備份類似「讓每個數據庫一個備份文件」,並檢查上面寫着「爲每個數據庫創建子文件夾」複選框。 (我與SQL Server的德語版工作,所以我現在一切都翻譯成英文,我自己)

指定的文件夾H:\備份,所以備份實際上會在文件夾^h創建:\備份\數據庫名稱

如果你想維護清除任務通過「刪除基於在任務運行時文件的年齡文件」刪除的備份,你必須指定文件夾H:\備份\數據庫名,不H:\ Backup !!!

這是我在開始使用SQL Server 2005時犯的錯誤 - 我在兩個字段Backup,Cleanup中放置了相同的文件夾。

+0

這接近我所看到的。我們在「H:\ Backups \ DatabaseName \」中備份,而我設置爲清理的文件夾是H:\ Backups \。有沒有更好的方法來做到這一點,而不是把所有事情備份到H:\ Backups \並讓MP清楚了? – andyhky 2008-11-24 20:54:19

1

我的理解是,你只能包含子文件夾的第一級。我假設你已經選中了該複選框。

您的備份比只有一個級別更深嗎?

另一個想法是,你有一個單一的維護計劃,你運行刪除多個數據庫的備份?我問這個問題的原因是因爲我看到你必須這樣做的方式是將其指向一個高一級的文件夾,這意味着你的「包含第一級子文件夾」不夠深。

我設置的方式是維護清理任務是我備份過程的一部分。因此,一旦針對特定數據庫的備份完成,「維護清理任務」將在相同的數據庫備份文件上運行。這允許我在目錄上更具體,所以我不會遇到太深的目錄結構。由於我按照自己的方式設置了條件,因此在準備好以任何方式刪除條目之前,條目都不會被刪除。

0

確保您的維護計劃沒有任何與之相關的錯誤。您可以檢查SQL Server Management Studio中SQL Server代理區域下的錯誤日誌。如果您的維護計劃中存在錯誤,那麼在開始刪除過時的備份之前可能會退出。

0

另一個問題可能是維護計劃的「工作流程」。

如果您的計劃包含多個任務,您必須將任務與箭頭連接起來以定義它們的運行順序。

可能的問題#1:

你忘了他們用箭頭連接。我剛剛測試過 - 作業運行時沒有任何錯誤或警告,但它只執行第一個任務。

可能問題2:

你的方式,清理任務將不會運行定義的工作流。如果使用箭頭連接兩個任務,則可以右鍵單擊箭頭並指定第二個任務是始終運行還是僅當第一個任務運行成功時才運行(這會更改箭頭的顏色,可能是紅色/綠,藍)。也許備份工作,然後清理從不運行,因爲它只會在備份失敗時運行?