Sql-Server

僅 1 個 DB 的 SQL Server 備份失敗(“系統找不到指定的路徑。”)

  • February 4, 2019

在過去的幾個早晨,我備份了我們的ReportServerTempDB失敗。我們還沒有在這台伺服器上使用 SSRS,但會在下個月使用,所以 DB 是預設的 8mb.mdf和 8mb .ldf(即很小)。

我們正在使用 Ola Hallengren 的腳本將備份執行到網路位置,並且所有備份都執行良好,直到它們到達ReportServerTempDB. 我們在執行時掛載網路位置,因為它不在我們的域中,並且需要訪問不同的憑據。這並不理想,我們正在考慮改變它,但現在,我需要解決這個問題。

我的腳本如下:

EXEC xp_cmdshell 'net use Y: \\10.1.1.200\data\SQLSANBackups /user:BackupUser Password'
GO

EXECUTE dbo.DatabaseBackup
@Databases = 'ALL_DATABASES',
@Directory = 'Y:\\',
@BackupType = 'FULL',
@ChangeBackupType = 'N',
@CleanupTime = 168,
@FileExtensionFull = 'bak',
@Compress = 'Y',
@CleanupMode = 'AFTER_BACKUP'
GO

EXEC xp_cmdshell 'net use Y: /delete'
GO

它失敗並出現以下錯誤:

BackupDiskFile::CreateMedia: Backup device 'Y:\\Servername \ReportServerTempDB\FULL\ReportServerTempDB_FULL_20190118_033124.bak' failed to create. Operating system error 3 (The system cannot find the path specified.).

Error: 18204, Severity: 16, State: 1.

如前所述,ReportServerTempDB成功完成之前的所有數據庫。如果我手動執行確切的腳本,只需指定ReportServerTempDB,它就可以完美地完成。本週早些時候一切正常,此後網路或硬體沒有任何變化。

備份後有3個生產數據庫ReportServerTempDB。由於失敗,他們沒有得到備份。我認為添加延遲在這裡沒有幫助,但無論如何都會嘗試。

我知道這ReportServerTempDB很容易重新創建,如果需要,我會刪除它,但是對於一個小型數據庫,為了保持一致,如果我不必這樣做會更容易。

好的,我終於弄清楚了這個問題。它發生在 ReportServerTempDB 上是完全隨機的,我認為這就是讓我失望的原因。我的日常維護在凌晨 3 點執行,包括上述備份。我也有 24/7 發生 30 分鐘的日誌備份,也使用指定的“Y”驅動器並將其刪除。

日誌備份在正常備份期間執行,並從完整備份中刪除“Y”驅動器,因此由於該位置不再存在而終止完整備份。我已經添加了一些邏輯,以便日誌備份不會在凌晨 3 點到 6 點之間刪除驅動器,這就解決了問題。不過還是謝謝大家的幫助。

嘗試使用/persistent:Yes.

稍後,如果您發現不需要它,您可以刪除掛載:

net use /delete

或者將掛載刪除移動到作業的最後一步(在索引和統計之後)。

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