Maintenance

Ola Hallengren 的 @DatabasesInParallel 參數有問題

  • November 19, 2018

我正在測試這個新參數@DatabasesInParallel,它似乎一次只能備份 1 個數據庫,但它並沒有明確說明這是文件中的限制,所以我想知道我是否做錯了什麼。

我設置了 4 個數據庫,並且手動執行以下 4 個命令:

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'AdminDB',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Pop',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_StackOverflow2010',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'

EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_SUPERUSER',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'

當我檢查 QueueDatabase 表時,我可以看到所有 4 個數據庫的 DatabaseOrder 和 RequestStartTime 列完全相同。但是,當您查看 DatabaseStartTime 列時,它會顯示前 2 個數據庫同時啟動,然後在第 2 個數據庫完成備份和驗證檢查之前,接下來的 2 個數據庫不會啟動。

QueueDatabase 表結果

這是我正在使用的參數的預期功能嗎?我希望使用此參數同時啟動所有 4 個數據庫。

**編輯 11/14:**更新了文章的標題/措辭

原始文章說它一次只備份 2 個數據庫,但實際上一次只備份 1 個數據庫。在我的測試中備份的第一個數據庫是如此之小,以至於我沒有意識到它幾乎立即完成,而第二個數據庫則開始了。但是你可以看到這個

在閱讀了 Ola 的最後一條評論後,我靈光一現,發現自己做錯了什麼並讓它發揮了作用。

由於我只是在測試這些命令,我​​從未真正將它們放入代理作業中——我認為它們會以相同的方式工作,只需同時手動執行它們。我剛剛將所有 4 個作業命令粘貼到查詢視窗中,然後執行。我認為這會起作用,但似乎即使它們在 QueueDatabase 表中都顯示相同的 RequestStartTime 也不起作用。

創建作業並設置單個計劃後,我可以看到 RequestStartTime 以毫秒為單位變化,但 DatabaseStartTime 對於所有 DB 都是相同的。

下面的螢幕截圖顯示了我今天測試的 QueueDatabase 表(粉紅色),當我創建代理作業時它是成功的。11/8(藍色)的測試是在我手動執行查詢視窗中的命令時進行的。

比較

我在一封電子郵件中詢問 Ola,如果這個功能在查詢視窗中手動執行時不起作用,是否有意義,下面是他的回复:

當您在一個查詢視窗中執行所有命令時,您永遠無法獲得併行執行(因為 T-SQL 不支持該功能)。

如果您想在 SSMS 中對其進行測試,那麼您需要我們 4 個不同的查詢視窗,然後快速開始執行所有這些視窗。

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