SQL Serverデータベースミラーリングを使用しており、データベースをバックアップするためのデータベースメンテナンスプランを作成しようとしています。問題は、サーバーがプライマリデータベースでない場合、計画が失敗することです。この状況でのベストプラクティスは何かと思っていましたが、メンテナンスプランでプライマリデータベースのみをバックアップする方法はありますか?
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'
次に、その基準を満たすデータベースのみをバックアップします。
メンテナンスプランのT-SQLステートメントタスクで次のことを実行する方法が必要です。
declare @primary bit = 0
select @primary=1
from sys.database_mirroring
where mirroring_role = 1
バックアップシーケンスを開始する条件として@primaryを使用します。それが役に立ったかどうか教えてください。乾杯