web-dev-qa-db-ja.com

SQLServerデータベースミラーリングの保守計画

SQL Serverデータベースミラーリングを使用しており、データベースをバックアップするためのデータベースメンテナンスプランを作成しようとしています。問題は、サーバーがプライマリデータベースでない場合、計画が失敗することです。この状況でのベストプラクティスは何かと思っていましたが、メンテナンスプランでプライマリデータベースのみをバックアップする方法はありますか?

6
Darren

私が見つけた厳格で迅速な推奨事項はありません-1つのオプションジョブを無効にしてミラーサーバーでジョブと依存関係を再作成します

次に、DATABASE_MIRRORING_STATE_CHANGEでWMIアラートを使用して、ジョブを有効/無効にします。このジョブはプライマリでも実行され、フェイルオーバー時にジョブを無効にします。別のバリエーションについては、 this リンクを参照してください。

this のように、復元状態にないデータベースのみをバックアップするロジックを使用して、バックアップストアドプロシージャを作成できます。

2
CPU_BUSY

SQL 2008を使用している場合、バックアップタスクには「状態がオンラインでないときにデータベースを無視する」オプションがあります。これにより、復元/ミラーリング状態のデータベースがバイパスされます。

SQL 2000ボックスの場合、各データベースで次のプロパティを確認できます

SELECT NAME FROM sysdatabases WHERE databasepropertyex(sysdatabases .Name, 'Status') = 'ONLINE'

SQL 2005 + Boxの場合、これを使用できます

SELECT NAME FROM sys.databases systemdatabases  WHERE state_desc = 'ONLINE'

次に、その基準を満たすデータベースのみをバックアップします。

5
Dale Wright

メンテナンスプランのT-SQLステートメントタスクで次のことを実行する方法が必要です。

declare @primary bit = 0
select @primary=1
from sys.database_mirroring
where mirroring_role = 1

バックアップシーケンスを開始する条件として@primaryを使用します。それが役に立ったかどうか教えてください。乾杯

1
Idriss