web-dev-qa-db-ja.com

可用性グループとAGスクリプトの名前を変更する

皆さんに2つの質問があります。本当にありがとうございました。

1.-可用性グループの名前を変更する方法はありますか?

2.-削除して再度作成する必要がある場合に備えて、可用性グループを再作成するためにT-SQLステートメントを取得する方法はありますか?

共有してほしい情報があればお知らせください。提供させていただきます。

3
Luis de Haro
  1. 作成された可用性グループ(AG)の名前は変更できませんが、AG内のデータベースの名前は変更できます。再作成する必要があります。 AGを変更するためのオプションについては、こちらをご覧ください: https://msdn.Microsoft.com/en-us/library/ff878601.aspx

  2. GUI(ウィザード)を使用してAGを作成する場合、すべてのステップが完了すると、「スクリプト」ボタンが表示され、それらのステップのスクリプトを新しいウィンドウに生成するオプションが提供されます。その後、スクリプトを保存してGUIを終了するか、ウィザードを「終了」して実際にAGを作成できます。 (スクリプトはウィンドウ内に残ります)後で再作成する必要がある場合に備えて、スクリプトを保持することをお勧めします(たとえば、AGの名前を変更したい場合...)

たとえば、テーブルやストアドプロシージャの場合とは異なり、AGを "Script As ..."することは現在のところ可能ではないようです。

また、MSDNボイラープレートコードを開始点として使用して、最初からCREATE AVAILABILITY GROUPステートメントを作成することもできます( https://msdn.Microsoft.com/en-us/library/ff878399.aspx )が、続行する前にすべてが揃っていることを確認するGUIを使用する場合に比べて、非常に扱いにくく、エラーが発生しやすくなります。

5
seventyeightist

コメントに記載されているように、これには重大な免責事項があります:私はnot回帰テストを行ったので(まだ)、最後まで読んで、私が行ったことを理解し、テストしてください特定のサポート(バックアップ)ソフトウェアを使用したダミーのセットアップでnot実行している最も価値のあるデータベースサーバーの本番インスタンスで最初(または2回目)の時間を試してください。

このジレンマに正面から取り組むためには、Always-On Availablity Groupが実際にはSQLエンティティではなく、実際にはクラスターリソースであることを理解する必要があります。 SQL Server Management Studioは名前の変更を考慮して作成されていませんが、SQL Serverが行うのは、バックエンドでクラスターリソースを作成することです。したがって、それを変更できる方法は、フェールオーバークラスターマネージャーツールを使用することです。私が取った最初のステップは、ここでGUIを使用することでしたが、ステップ3で気づくように、GUIを使用して変更できない小さな部分があります。確かに最初の2つのステップもスクリプト化できるはずですが、認めましょう。どれくらいの頻度でそれを実行するのでしょうか。それは実際に調べる価値があるのでしょうか。

それで、次にGUIに...

  1. まず、フェールオーバークラスターマネージャーに移動し、オブジェクトツリーの役割ノードに移動して、名前を変更するAOグループ名をダブルクリックします。全般タブで、役割名を変更できます。これは、SQL Server Management Studioに表示されるオブジェクト名でもあります。
  2. 次に、まだAOグループ名を選択しているので、画面の下半分にある[Rerouces]タブに移動します。そこで、古いAO-Groupnameに一致する「サーバー名」が見つかります。ここでも同じ調整を行います。これにより、Active DirectoryのリソースのcomputerObjectの名前も事実上変更されることに注意してください。関連する権限があることを確認してください。そうしないと失敗します。これを変更すると、DNSでAO名に新しい名前が登録されていることも確認できるようになります。
  3. 最後に、新しいAOグループ名の「その他のリソース」オブジェクトをダブルクリックし、依存関係タブを確認します。そこでNewName_OldName "のような何かに気づくでしょう。ここで、Powershellが再生されます。クラスターメンバーの1つで管理PowerShellプロンプトに移動し、以下のコマンドを使用してリソース名を視覚的に確認します。

通常、AOグループは次のような値を返します。

PS C:\> Get-ClusterResource AOGROUPNAME* | FT -autosize
Name                      State  OwnerGroup   ResourceType
----                      -----  ----------   ------------
AOGROUPNAME               Online AOGROUPNAME  SQL Server Availability Group
AOGROUPNAME_10.1.2.3      Online AOGROUPNAME  IP Address
AOGROUPNAME_AOGROUPNAME   Online AOGROUPNAME  Network Name

ただし、AOグループ名OLDNAMEがNEWNAMEに変更されたとすると、次のように表示されます。

PS C:\> Get-ClusterResource NEWNAME* | FT -autosize
Name                  State  OwnerGroup   ResourceType
----                  -----  ----------   ------------
NEWNAME               Online NEWNAME      SQL Server Availability Group
NEWNAME_10.1.2.3      Online NEWNAME      IP Address
NEWNAME_OLDNAME       Online NEWNAME      Network Name

これは、古い命名の最後の残りであり、powershellコマンドを使用して修正できます。

PS C:\> Get-ClusterResource "NEWNAME_OLDNAME"| % { $_.Name="NEWNAME_NEWNAME"}

ここではフィードバックは得られませんが、コマンドを繰り返して元のリソース名を表示すると、実際にリソース名が変更されたことがわかります。

Disclamer:最初に述べたように、これは互換性について(まだ)テストされていません。私のシナリオでは、すべてがうまく機能しているように見えますが、それでも...

また、変更しようとしている名前がADに一致するコンピューターオブジェクトを持っているか、DNSに手動で追加されたAレコードまたはCNAMEレコードを持っていると、変更中に重大な問題が発生する可能性があります。何もないことを完全に確認(トリプルチェック)してください。そうしないと、エラーメッセージが表示され、クラスタリソースデータベースがおかしな名前で混乱します。私は手動のAレコードを持っていたので、必要な場所にすべてが元に戻ることを確認するために、もう少し踏み込む必要がありました。

2
Vossiewos