web-dev-qa-db-ja.com

Ola Hallengrenの@DatabasesInParallelパラメータに関する問題

この新しいパラメータをテストしています@DatabasesInParallel一度に1つのデータベースしかバックアップしないようですが、これはドキュメントの制限として具体的には指定されていないため、何か問題があるのではないかと思っています。

私は4つのDBをセットアップしていて、次の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テーブルを確認すると、DatabaseOrder列とRequestStartTime列が4つのデータベースすべてでまったく同じであることがわかります。ただし、列DatabaseStartTimeを見ると、最初の2つのデータベースが同時に開始しており、次の2つのデータベースは、2番目のデータベースがバックアップと検証チェックを完了するまで開始しません。

QueueDatabase Table Results

これは、私が使用しているパラメータを備えた意図された機能ですか?このパラメーターを使用して、4つのデータベースすべてがまったく同時に開始されることを期待します。

EDIT 11/14:投稿のタイトル/文言を更新

元の投稿によると、一度に2つのデータベースしかバックアップしていませんでしたが、実際には一度に1つのデータベースしかバックアップしていませんでした。テストでバックアップされた最初のDBは非常に小さいため、ほとんどすぐに終了し、2番目のDBが開始することに気付きませんでした。しかし、あなたはこれを見ることができます

2
davszur

オラの最後のコメントを読んだ後、私は電球の瞬間を持っていて、自分が間違っていることを理解し、それを機能させました。

私はこれらのコマンドをテストしているだけなので、実際にそれらをエージェントジョブに配置することはありませんでした。同時に手動で実行するだけで同じように機能することを考えました。クエリウィンドウに4つすべてのジョブコマンドを貼り付けて実行しました。これはうまくいくと思いましたが、QueueDatabaseテーブルですべて同じRequestStartTimeを示していても、うまくいかないようです。

ジョブを作成して単一のスケジュールを設定すると、RequestStartTimeがミリ秒ごとに異なることがわかりましたが、DatabaseStartTimeはすべてのDBで同じです。

以下のスクリーンショットは、エージェントジョブを作成したときに成功した本日のテスト(ピンク色)のQueueDatabaseテーブルを示しています。 11/8(青)のテストは、クエリウィンドウでコマンドを手動で実行したときのものです。

Comparison

この機能がクエリウィンドウで手動で実行しても機能しないという意味があるかどうかをメールでOlaに尋ねました。

1つのクエリウィンドウですべてのコマンドを実行すると、並列実行はできません(T-SQLはそれをサポートしていないため)。

SSMSでテストする場合は、4つの異なるクエリウィンドウを使用して、それらすべての実行をすばやく開始する必要があります。

1
davszur

パラメータは、4つのジョブすべてで同一である必要があります。

次のようにすべてのジョブを変更してみてください。

@Databases = 'USER_DATABASES'

0
Ola Hallengren