可用性グループは、スケジュールされたジョブとSSISパッケージでどのように機能しますか?


8

AlwaysOn可用性グループのデータベースを使用して2つのSQL Serverをセットアップしています。

また、データベースに対して実行するジョブを設定しています。フェイルオーバー中に、セカンダリサーバーでジョブが引き続き実行されるようにするにはどうすればよいですか?ジョブとSSISパッケージを両方のマシンにインストールし、セカンダリマシンで手動で無効にする必要がありますか?フェイルオーバーの場合は手動で有効にしますか?またはこれを処理するための組み込み機能はありますか?

回答:


4

はい、特定のジョブがプライマリレプリカである場合に実行する他のレプリカにジョブを作成する必要があります

各SQL Serverエージェントジョブを実行するif / whenの独自のロジックを作成する必要があります。たとえば、現在のインスタンスが特定の可用性グループのプライマリレプリカである場合にのみジョブを実行しますか?あなたはそれをあなたの仕事に入れる必要があります。AlwaysOn AGの柔軟性が失われるため、自動的に覆うことはできません。セカンダリレプリカでそれらを無効にするかどうか、それらのジョブが何をするか、どのように/いつ/どのように実行するかは、完全にあなた次第です。

セカンダリレプリカサーバーは、フェイルオーバーを待機する単なるスタンバイサーバーではないことに注意してください。完全に機能し、アクセス可能なサーバーである可能性があります。このため、すべての仕事をアイドル状態にしておくことは、大きな障害となるでしょう。

そのため、はい、ジョブを他のレプリカにプッシュし、ジョブが開始されたときにジョブを実行し続けるかどうかについてロジックを使用する必要があります。

たとえば、バックアップジョブは、sys.fn_hadr_backup_is_preferred_replica関数を利用して、現在のレプリカが特定のデータベースの優先レプリカであるかどうかを判断できます。これにより、バックアップ設定の可用性グループのセットアップ方法がわかります。


それは有望に聞こえます。プライマリサーバー(その時点で存在する可能性のあるサーバー)でのみジョブを実行します。
John

1

Books Onlineのドキュメントで、「ジョブをスケジュールするときに、プライマリでのみ実行するロジックを追加する」と言っているのと似たような不満に少し出会いましたが、その方法は述べていません。sys.fn_hadr_backup_is_preferred_replicaは、バックアップジョブには非常に優れていますが、「プライマリ」または同様の機能には同様の機能がないようです。幸い、次のようなものからその情報を取得できます。

select 
  DB_NAME(database_id),role_desc
from 
  sys.dm_hadr_availability_replica_states a
inner join 
  sys.dm_hadr_database_replica_states d
on 
  a.replica_id = d.replica_id
  and
  a.group_id = d.group_id
where 
  database_id = DB_ID()
and 
  d.is_local = 1

これで、現在のデータベースの役割がわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.