web-dev-qa-db-ja.com

ADでコンピューターオブジェクトの権限なしにSQL Server alwayson可用性グループのリスナーを設定する

コンピューターオブジェクトの作成権限がないActive Directory(AD)環境でSQL ServerのAlwaysonリスナーを作成する方法はありますか? AD管理者が私のためにコンピュータ名を作成しました。それをリスナーに接続する方法はありますか? ADでオブジェクトを作成する権限がないため、次のTSQLは失敗します。

USE [master] GO ALTER AVAILABILITY GROUP [VG-AdventureWorks2014] ADD LISTENER N'DNSCOMPUTERNAME' ( WITH IP ((N'XXX.XXX.XXX.XXX', N'255.XXX.XXX.XX') ) , PORT=1431); GO

会社のポリシーでは、DBAのAD権限は許可されていません。

3
r0tt

リスナーを事前設定する適切な方法と、クラスターがリスナー自体を作成できるようにする方法の1つがあります。あなたのアカウントは、FCM/PowershellまたはSQL Serverを介してリスナーを作成するときにADがリスナーを作成することを承認するために使用されるものではないことに注意してください。CNOはセキュリティコンテキストとして使用されます。

公式のプレステージ方法

  1. CNOが含まれているOUを見つける
  2. コンピューターオブジェクトを作成し、DNSリスナー名を付けます
  3. 新しいVCOにセキュリティを設定し、CNOにフルコントロールを与えます(フルは必須ではありませんが、ニーズのリストはかなり長いため、フルコントロールを与えてください)。
  4. SSMS/TSQL/Powershellを介してリスナーを作成する

公式の自動作成方法

  1. CNOにコンピュータオブジェクトを作成し、プロパティを一覧表示し、プロパティを読み取り、それが存在するOUに対してプロパティを書き込みます。
  2. SSMS/TSQL/Powershellを介してリスナーを作成する

指定された他の回答に記載されている方法は、ステージング前の方法と複数のリスナーを作成する方法の組み合わせです。さらに、セキュリティに関しては不適切な構成になっており、そのようにすると、おそらく戻ってきてあなたを噛んでしまいます。

3
Sean Gallardy

見つかった唯一の回避策は次のとおりです。

  1. AlwaysOn可用性グループ(VG-AdventureWorks2014)をセットアップし、ウィザードまたはT-SQLでのリスナー作成をスキップします。
  2. クラスターマネージャーに移動し、「クライアントアクセスポイント」を作成します。
  3. ネットワーク名とActive Directory管理者が作成したコンピューター名と静的IPを入力します。
  4. 「クライアントアクセスポイント」(VG-AdventureWorks2014_Listener1)はオフラインで表示され、IPはオンラインで表示されます。次に、Active Directory管理者に依頼して、「クライアントアクセスポイント」を編集し、ステータスをオンラインに変更します。
  5. 両方のリソース(クライアントアクセスポイントとIP)がオンラインになった後。それらを可用性グループリソースに関連付けます。
  6. ここで、クエリを実行すると、SQLサーバー上のsys.availability_group_listeners –リスナーが表示されます。
  7. それでもリスナーを使用することはできません。ポートを割り当てるには、T-SQLを実行するために戻る必要があります。 1433(デフォルトのSQLリスニングポート)を使用しています。

    USE [master] GO ALTER AVAILABILITY GROUP [VG-AdventureWorks2014] MODIFY LISTENER 'VG-AdventureWorks2014_Listener1' (port = 1433) GO

  8. 作成したリスナーに接続すると、可用性グループのプライマリレプリカをホストする正しいインスタンスが表示されます。

この回避策のアイデアは Qiang WangによるMicrosoftブログ からのものです。

0
r0tt