レプリケーションのセキュリティ設定の表示および変更

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL Managed Instance

このトピックでは、 SQL Server で SQL Server Management Studio、 Transact-SQL、またはレプリケーション管理オブジェクト (RMO) を使用して、レプリケーションのセキュリティ設定を表示および変更する方法について説明します。 たとえば、ログ リーダー エージェントからパブリッシャーへの接続を SQL Server 認証から Windows 統合認証に変更したい場合や、Windows アカウントのパスワードを変更したときにエージェント ジョブの実行に使用する資格情報を変更したい場合があります。 各エージェントで必要な権限の詳細については、「 レプリケーション エージェント セキュリティ モデル」を参照してください。

このトピックの内容

はじめに

制限事項と制約事項

  • 使用するストアド プロシージャは、エージェントの種類およびサーバー接続の種類によって異なります。

  • 使用する RMO のクラスとプロパティは、エージェントの種類およびサーバー接続の種類によって異なります。

セキュリティ

セキュリティ上の理由から、レプリケーション ストアド プロシージャによって返される結果セットでは、パスワードの実際の値はマスクされます。

Permissions

SQL Server Management Studio の使用

次のダイアログ ボックスでセキュリティ設定を表示および変更します。

  1. [レプリケーション パスワードの更新] ダイアログ ボックス。このダイアログ ボックスは、 [レプリケーション] SQL Server Management Studioフォルダーから利用できます。 レプリケーション トポロジのサーバーで SQL Server アカウントまたは Windows アカウントのパスワードを変更する場合は、そのアカウントを使用する各エージェントのパスワードを更新するよりも、このダイアログ ボックスを使用してください。 複数のサーバー上のエージェントが同じアカウントを使用している場合は、それぞれのサーバーに接続してパスワードを変更する必要があります。 パスワードは、レプリケーションで使用されるすべての場所で更新されます。 パスワードは、リンク サーバーなど、その他の場所では更新されません。

  2. [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページ。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

  3. [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「 View and Modify Push Subscription Properties 」および「 View and Modify Pull Subscription Properties」を参照してください。

  4. [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスと [ディストリビューション データベースのプロパティ - <Database>] ダイアログ ボックス。 これらのダイアログ ボックスへのアクセスの詳細については、「 View and Modify Distributor and Publisher Properties」を参照してください。

  5. [パブリッシャーのプロパティ - <Publisher>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「 View and Modify Distributor and Publisher Properties」を参照してください。

1 つ以上のエージェントによって使用されるアカウントのパスワードを変更するには

  1. アカウントが SQL Server アカウントの場合、このダイアログ ボックスによって SQL Server アカウントのパスワードも変更されます。 アカウントが Windows アカウントの場合は、最初に Windows でパスワードを変更します。 詳細については、Windows のマニュアルを参照してください。

    注意

    レプリケーション パスワードを変更したら、そのパスワードを使用する各エージェントを停止して再起動し、エージェントに対して変更を反映させる必要があります。

  2. SQL Server Management Studioでサーバーに接続して、サーバー ノードを展開します。

  3. [レプリケーション] フォルダーを右クリックし、 [レプリケーション パスワードの更新] をクリックします。

  4. [レプリケーション パスワードの更新] ダイアログ ボックスで、アカウントと新しいパスワードを指定します。

  5. [OK] をクリックします。

スナップショット エージェントのセキュリティ設定を変更するには

  1. [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページで、 [スナップショット エージェント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。

  2. [スナップショット エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行するアカウントを指定します。

    • [プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。

    • [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。

  3. エージェントがディストリビューターからパブリッシャーに接続するときのコンテキストを指定します。 [次の SQL Server ログインを使用する] を選択する場合は、ログインも指定する必要があります。

    • [ログイン] テキスト ボックスにログインを入力します。

    • [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。

    注意

    パブリッシャーが Oracle パブリッシャーの場合は、接続のコンテキストが [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスで指定されます。 コンテキストを変更する手順については、以下を参照してください。

  4. [OK] をクリックします。

ログ リーダー エージェントのセキュリティ設定を変更するには

  1. [パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページで、 [ログ リーダー エージェント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。

  2. [ログ リーダー エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行するアカウントを指定します。

    • [プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。

    • [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。

  3. エージェントがディストリビューターからパブリッシャーに接続するときのコンテキストを指定します。 [次の SQL Server ログインを使用する] を選択する場合は、ログインも指定する必要があります。

    • [ログイン] テキスト ボックスにログインを入力します。

    • [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。

    注意

    パブリッシャーが Oracle パブリッシャーの場合は、接続のコンテキストが [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスで指定されます。 次の手順を使用して、コンテキストを変更します。

  4. [OK] をクリックします。

    注意

    ログ リーダー エージェントは、パブリッシュされているデータベースごとに 1 つ存在します。 1 つのパブリケーションでエージェントのセキュリティ設定を変更すると、パブリケーション データベースのすべてのパブリケーションの設定に影響が及びます。

Oracle パブリケーションのスナップショット エージェントおよびログ リーダー エージェントがパブリッシャーに接続するときのコンテキストを変更するには

  1. [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、パブリッシャーの横にあるプロパティ ボタン ( ... ) をクリックします。

  2. [パブリッシャーへのエージェント接続] セクションで、構成したレプリケーション管理ユーザー スキーマによって使用されるログインとパスワードを指定します。 詳細については、「Oracle パブリッシャーの構成」をご覧ください。

  3. [OK] をクリックします。

プッシュ サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには

  1. パブリッシャーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。

    • ディストリビューション エージェントを実行してディストリビューターへ接続するアカウントを変更するには、 [エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。

    • ディストリビューション エージェントがサブスクライバーに接続するときのコンテキストを変更するには、 [サブスクライバー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。

      キュー更新サブスクリプションを使用する場合、ここで指定したコンテキストは、サブスクライバーに接続するためにキュー リーダー エージェントでも使用されます。

  2. [OK] をクリックします。

プル サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには

  1. サブスクライバーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。

    • ディストリビューション エージェントを実行してサブスクライバーへ接続するアカウントを変更するには、 [エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。

      キュー更新サブスクリプションを使用する場合、ここで指定したコンテキストは、サブスクライバーに接続するためにキュー リーダー エージェントでも使用されます。

    • ディストリビューション エージェントがディストリビューターに接続するときのコンテキストを変更するには、 [ディストリビューター接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。

  2. [OK] をクリックします。

プッシュ サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには

  1. パブリッシャーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。

    • マージ エージェントを実行してパブリッシャーおよびディストリビューターへ接続するアカウントを変更するには、 [エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [マージ エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。

    • マージ エージェントがサブスクライバーに接続するときのコンテキストを変更するには、 [サブスクライバー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。

  2. [OK] をクリックします。

プル サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには

  1. サブスクライバーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。

    • マージ エージェントを実行してサブスクライバーへ接続するアカウントを変更するには、 [エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [マージ エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。

    • マージ エージェントがパブリッシャーおよびディストリビューターに接続するときのコンテキストを変更するには、 [パブリッシャー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。

  2. [OK] をクリックします。

キュー リーダー エージェントを実行するアカウントを変更するには

  1. [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [全般] ページで、ディストリビューション データベースの横にあるプロパティ ボタン ( ... ) をクリックします。

  2. [ディストリビューション データベースのプロパティ - <Database>] ダイアログ ボックスで、 [エージェント プロセス アカウント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。

  3. [キュー リーダー エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行してディストリビューターへ接続するアカウントを指定します。

    • [プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。

    • [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。

  4. [OK] をクリックします。

    注意

    ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。

キュー リーダー エージェントがパブリッシャーに接続するときのコンテキストを変更するには

  1. [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、パブリッシャーの横にあるプロパティ ボタン ( ... ) をクリックします。

  2. [パブリッシャーへのエージェント接続] セクションで、 [エージェント接続モード] オプションの [エージェント プロセス アカウントを借用する] または [SQL Server 認証] の値を指定します。 [SQL Server 認証] を指定する場合は、 [ログイン] および [パスワード] の値も入力します。

  3. [OK] をクリックします。

    注意

    ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。

キュー リーダー エージェントがサブスクライバーに接続するときのコンテキストを変更するには

  • キュー リーダー エージェントは、ディストリビューション エージェントと同じ接続コンテキストをサブスクリプションに使用します。 詳細については、ディストリビューション エージェントに関する上記の手順を参照してください。

即時更新プル サブスクリプションのセキュリティ設定を変更するには

  1. サブスクライバーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスで、 [パブリッシャー接続] 行をクリックしてから、その行のプロパティ ボタン ( ) をクリックします。

  2. [接続情報の入力] ダイアログ ボックスで、次のオプションのいずれかを選択します。

    • [リンク サーバーまたはリモート サーバーからのログインを使用します]sp_addserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)、SQL Server Management Studio、または他の方法を使用してサブスクライバ―とパブリッシャーの間にリモート サーバーまたはリンクされたサーバーを定義した場合は、このオプションを選択します。

    • [次のログインとパスワードによる SQL Server 認証を使用する] 。 サブスクライバーとパブリッシャーの間でリモート サーバーまたはリンク サーバーを定義していない場合は、このオプションを選択します。 レプリケーションによってリンク サーバーが作成されます。 指定するアカウントは、パブリッシャーに既に存在している必要があります。

  3. [OK] をクリックします。

注意

この手順により、サブスクライバーで変更が行われたときに、レプリケーション トリガーがサブスクライバーからパブリッシャーに接続するために使用する方法が変更されます。 ディストリビューション エージェントに関連付けられている設定を即時更新サブスクリプション用に変更することもできます。 詳細については、このトピックで既に説明した手順を参照してください。

この手順は、プル サブスクリプションにのみ当てはまります。 プッシュ サブスクリプションには、ストアド プロシージャ sp_link_publication (Transact-SQL) を使用します。

パブリッシャーからディストリビューターへの管理接続に使用されているパスワードを変更するには

  1. [ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、 [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに複雑なパスワードを入力します。

  2. [OK] をクリックします。

  3. [パブリッシャーのプロパティ - <Publisher>] ダイアログ ボックスの [全般] ページで、 [パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに複雑なパスワードを入力します。

  4. [OK] をクリックします。

Transact-SQL の使用

重要

可能な限り、次のすべての手順で、実行時にセキュリティ資格情報を入力するように求めるメッセージをユーザーに表示します。 スクリプト ファイルに資格情報を格納する場合は、不正アクセスを防ぐために、そのファイルをセキュリティで保護する必要があります。

レプリケーション サーバーに格納されたパスワードのインスタンスをすべて変更するには

  1. レプリケーション トポロジ内のサーバーの master データベースで、 sp_changereplicationserverpasswordsを実行します。 @login に、パスワードを変更する Microsoft Windows アカウントまたは Microsoft SQL Server ログインを指定し、@password に、そのアカウントまたはログインの新しいパスワードを入力します。 これにより、トポロジ内の他のサーバーに接続すると、サーバーのすべてのエージェントで使用されるパスワードの各インスタンスが変更されます。

    注意

    ディストリビューターやサブスクライバーなど、トポロジ内の特定のサーバーへの接続に対するログインおよびパスワードのみを変更するには、@server にサーバーの名前を指定します。

  2. パスワードの更新が必要なレプリケーション トポロジ内の各サーバーで手順 1. を繰り返します。

    注意

    レプリケーション パスワードを変更したら、そのパスワードを使用する各エージェントを停止して再起動し、エージェントに対して変更を反映させる必要があります。

スナップショット エージェントのセキュリティ設定を変更するには

  1. パブリッシャーで、@publication を指定して sp_helppublication_snapshot を実行します。 これにより、スナップショット エージェントの現在のセキュリティ設定が返されます。

  2. パブリッシャーで、@publication を指定し、次のセキュリティ設定から変更するものを 1 つ以上指定して、sp_changepublication_snapshot を実行します。

    • エージェントの実行に使用する Windows アカウント、またはこのアカウントのパスワードだけを変更するには、@job_login および @job_password を指定します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを変更するには、@publisher_security_mode に対して値 1 または 0 を指定します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを 1 から 0 に変更する場合、またはこの接続に使用する SQL Server ログインを変更する場合は、@publisher_login および @publisher_password を指定します。

    重要

    リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

ログ リーダー エージェントのセキュリティ設定を変更するには

  1. パブリッシャーで、@publisher を指定して sp_helplogreader_agent を実行します。 これにより、ログ リーダー エージェントの現在のセキュリティ設定が返されます。

  2. パブリッシャーで、@publication を指定し、次のセキュリティ設定から変更するものを 1 つ以上指定して、sp_changelogreader_agent を実行します。

    • エージェントの実行に使用する Windows アカウント、またはこのアカウントのパスワードだけを変更するには、@job_login および @job_password を指定します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを変更するには、@publisher_security_mode に対して値 1 または 0 を指定します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを 1 から 0 に変更する場合、またはこの接続に使用する SQL Server ログインを変更する場合は、@publisher_login および @publisher_password を指定します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

    重要

    リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

プッシュ サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには

  1. パブリケーション データベースのパブリッシャーで、@publication および @subscriber を指定して、sp_helpsubscription を実行します。 これにより、ディストリビューターで実行されるディストリビューション エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。

  2. パブリケーション データベースのパブリッシャーで、sp_changesubscription を実行します。@publication@subscriber@subscriber_db を指定し、@article には値 all@property にはセキュリティ プロパティの名前、@value にはプロパティの新しい値を指定します。

  3. 次のセキュリティ プロパティから変更するものに対してそれぞれ手順 2. を繰り返します。

    • エージェントの実行に使用する Windows アカウントまたはこのアカウントのパスワードだけを変更するには、@property に値 distrib_job_password を指定し、@value に新しいパスワードを指定します。 アカウント自体を変更する場合は、@property に値 distrib_job_login を指定し、@value に新しい Windows アカウントを指定して、手順 2 を繰り返します。

    • サブスクライバーへの接続時に使用するセキュリティ モードを変更するには、@property に値 subscriber_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0 (SQL Server 認証) を指定します。

    • サブスクライバーのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 subscriber_password を指定し、@value に新しいパスワードを指定します。 @property には値 subscriber_login を、@value には新しいログインを指定して、手順 2 を繰り返します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

    重要

    リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 distrib_job_login および distrib_job_password を含むすべてのプロパティに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

プル サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには

  1. サブスクライバーで、@publication を指定して sp_helppullsubscription を実行します。 これにより、サブスクライバーで実行されるディストリビューション エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。

  2. サブスクリプション データベースのサブスクライバーで、sp_change_subscription_properties を実行します。@publisher@publisher_db@publication を指定し、@property にはセキュリティ プロパティの名前、@value にはプロパティの新しい値を指定します。

  3. 次のセキュリティ プロパティから変更するものに対してそれぞれ手順 2. を繰り返します。

    • エージェントの実行に使用する Windows アカウントまたはこのアカウントのパスワードだけを変更するには、@property に値 distrib_job_password を指定し、@value に新しいパスワードを指定します。 アカウント自体を変更する場合は、@property に値 distrib_job_login を指定し、@value に新しい Windows アカウントを指定して、手順 2 を繰り返します。

    • ディストリビューターへの接続時に使用するセキュリティ モードを変更するには、@property に値 distributor_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0(SQL Server 認証) を指定します。

    • ディストリビューターのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 distributor_password を指定し、@value に新しいパスワードを指定します。 @property には値 distributor_login@value には新しいログインを指定して、手順 2 を繰り返します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

プッシュ サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには

  1. パブリケーション データベースのパブリッシャーで、@publication@subscriber,@subscriber_db を指定して、sp_helpmergesubscription を実行します。 これにより、ディストリビューターで実行されるマージ エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。

  2. パブリケーション データベースのパブリッシャーで、sp_changemergesubscription を実行します。@publication@subscriber@subscriber_db を指定し、@property にはセキュリティ プロパティの名前、@value にはプロパティの新しい値を指定します。

  3. 次のセキュリティ プロパティから変更するものに対してそれぞれ手順 2. を繰り返します。

    • エージェントの実行に使用する Windows アカウントまたはこのアカウントのパスワードだけを変更するには、@property に値 merge_job_password を指定し、@value に新しいパスワードを指定します。 アカウント自体を変更する場合は、@property に値 merge_job_login を指定し、@value に新しい Windows アカウントを指定して、手順 2 を繰り返します。

    • サブスクライバーへの接続時に使用するセキュリティ モードを変更するには、@property に値 subscriber_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0 (SQL Server 認証) を指定します。

    • サブスクライバーのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 subscriber_password を指定し、@value に新しいパスワードを指定します。 @property には値 subscriber_login を、@value には新しいログインを指定して、手順 2 を繰り返します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを変更するには、@property に値 publisher_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0 (SQL Server 認証) を指定します。

    • パブリッシャーのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 publisher_password を指定し、@value に新しいパスワードを指定します。 @property に値 publisher_login@value に新しいログインを指定して、手順 2 を繰り返します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

    重要

    リモート ディストリビューターを使用してパブリッシャーを構成する場合、 merge_job_login および merge_job_password を含むすべてのプロパティに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

プル サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには

  1. サブスクライバーで、@publication を指定して、sp_helpmergepullsubscription を実行します。 これにより、サブスクライバーで実行されるマージ エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。

  2. サブスクリプション データベースのサブスクライバーで、sp_change_subscription_properties を実行します。@publisher@publisher_db@publication を指定し、@property にはセキュリティ プロパティの名前、@value にはプロパティの新しい値を指定します。

  3. 次のセキュリティ プロパティから変更するものに対してそれぞれ手順 2. を繰り返します。

    • エージェントの実行に使用する Windows アカウントまたはこのアカウントのパスワードだけを変更するには、@property に値 merge_job_password を指定し、@value に新しいパスワードを指定します。 アカウント自体を変更する場合は、@property に値 merge_job_login を指定し、@value に新しい Windows アカウントを指定して、手順 2 を繰り返します。

    • ディストリビューターへの接続時に使用するセキュリティ モードを変更するには、@property に値 distributor_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0(SQL Server 認証) を指定します。

    • ディストリビューターのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 distributor_password を指定し、@value に新しいパスワードを指定します。 @property には値 distributor_login@value には新しいログインを指定して、手順 2 を繰り返します。

    • パブリッシャーへの接続時に使用するセキュリティ モードを変更するには、@property に値 publisher_security_mode を指定し、@value に値 1 (Windows 統合認証) または 0 (SQL Server 認証) を指定します。

    • パブリッシャーのセキュリティ モードを SQL Server 認証に変更する場合、または SQL Server 認証のログイン情報を変更する場合は、@property に値 publisher_password を指定し、@value に新しいパスワードを指定します。 @property に値 publisher_login@value に新しいログインを指定して、手順 2 を繰り返します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

サブスクライバーのフィルター選択されたスナップショットを生成する、スナップショット エージェントのセキュリティ設定を変更するには

  1. パブリッシャーで、@publication を指定して、sp_helpdynamicsnapshot_job を実行します。 結果セットで、変更するサブスクライバーのパーティションの job_name の値を確認します。

  2. パブリッシャーで、sp_changedynamicsnapshot_job を実行します。@publication を指定し、dynamic_snapshot_jobname に手順 1 で取得した値を指定して、@job_password に新しいパスワードを指定するか、または @job_login@job_password にエージェントの実行に使用する Windows アカウントのログインとパスワードを指定します。

    重要

    リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。

キュー リーダー エージェントのセキュリティ設定を変更するには

  1. ディストリビューターで、 sp_helpqreader_agentを実行します。 これにより、キュー リーダー エージェントの実行時に使用される現在の Windows アカウントが返されます。

    • ディストリビューターで、@job_login および @job_password に Windows アカウントの設定を指定して、sp_changeqreader_agent を実行します。

    注意

    エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。 ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。

  2. キュー リーダー エージェントは、サブスクリプションのディストリビューション エージェントと同じ接続コンテキストを使用して、サブスクライバーへの接続を作成します。

パブリッシャーへの接続時に即時更新サブスクライバーで使用するセキュリティ モードを変更するには

  1. サブスクライバー側のサブスクリプション データベースに対して、 sp_link_publicationを実行します。 @publisher@publication@publisher_dbのパブリケーション データベース名、および @security_modeの次のいずれかの値を指定します。

    • 0 - パブリッシャーで更新を作成する場合に SQL Server 認証を使用します。 このオプションの場合、パブリッシャーで、 @login および @passwordに有効なログインを指定する必要があります。

    • 1 - パブリッシャーへの接続時にサブスクライバーで変更するユーザーのセキュリティ コンテキストを使用します。 このセキュリティ モードに関連する制限の詳細については、 sp_link_publication のトピックを参照してください。

    • 2 - sp_addlinkedserver (Transact-SQL) を使って作成された既存のユーザー定義リンク サーバー ログインを使用します。

リモート ディストリビューターのパスワードを変更するには

  1. ディストリビューション データベースのディストリビューターで、@password にこのログインの新しいパスワードを指定して、sp_changedistributor_password を実行します。

    重要

    distributor_admin のパスワードを直接変更しないでください。

  2. このリモート ディストリビューターを使用するすべてのパブリッシャーで、@password に手順 1 のパスワードを指定して、sp_changedistributor_password を実行します。

レプリケーション管理オブジェクト (RMO) の使用

重要

可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 資格情報を保存する必要がある場合は、 Windows .NET Framework に用意されている 暗号化サービス Microsoft を使用します。

レプリケーション サーバーに格納されているパスワードのインスタンスをすべて変更するには

  1. ServerConnection クラスを使用して、レプリケーション サーバーに対する接続を作成します。

  2. 手順 1. で作成した接続を使用して、 ReplicationServer クラスのインスタンスを作成します。

  3. ChangeReplicationServerPasswords メソッドを呼び出します。 次のパラメーターを指定します。

    • security_mode - ReplicationSecurityMode 値。パスワードのすべてのインスタンスを変更するために使用する認証の種類を指定します。

    • login - パスワードのすべてのインスタンスを変更するために使用するログイン。

    • password - 新しいパスワード値。

      重要

      可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 資格情報を保存する必要がある場合は、Windows .NET Framework に用意されている 暗号化サービス を使用します。

      注意

      固定サーバー ロール sysadmin のメンバー以外、このメソッドを呼び出すことはできません。

  4. パスワードを更新する必要のある、レプリケーション トポロジ内のすべてのサーバーについて、手順 1. から手順 3. を繰り返します。

ディストリビューション エージェントのセキュリティ設定をプッシュ サブスクリプション用からトランザクション パブリケーション用に変更するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. TransSubscription クラスのインスタンスを作成します。

  3. サブスクリプションの PublicationNameDatabaseNameSubscriberNameSubscriptionDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。

  4. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから false が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。

  5. TransSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。

    • エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 LoginPassword フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。

    • エージェントがサブスクライバーとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの SubscriberSecurity フィールドを true」を参照してください。

    • エージェントがサブスクライバーとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの SubscriberSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

      注意

      ディストリビューターに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。

  6. (省略可) P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChangesCachePropertyChangesを指定した場合、 CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges に値 false (既定値) を指定した場合、変更は直ちにサーバーに送られます。

ディストリビューション エージェントのセキュリティ設定をプル サブスクリプション用からトランザクション パブリケーション用に変更するには

  1. ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。

  2. TransPullSubscription クラスのインスタンスを作成します。

  3. サブスクリプションの PublicationNameDatabaseNamePublisherNamePublicationDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。

  4. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから false が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。

  5. TransPullSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。

    • エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 LoginPassword フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。

    • エージェントがディストリビューターとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの DistributorSecurity フィールドを true」を参照してください。

    • エージェントがディストリビューターとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの DistributorSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

      注意

      サブスクライバーに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。

  6. (省略可) P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChangesCachePropertyChangesを指定した場合、 CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges に値 false (既定値) を指定した場合、変更は直ちにサーバーに送られます。

マージ エージェントのセキュリティ設定をプル サブスクリプション用からマージ パブリケーション用に変更するには

  1. ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。

  2. MergePullSubscription クラスのインスタンスを作成します。

  3. サブスクリプションの PublicationNameDatabaseNamePublisherNamePublicationDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。

  4. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから false が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。

  5. MergePullSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。

    • エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 LoginPassword フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。

    • エージェントがディストリビューターとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの DistributorSecurity フィールドを true」を参照してください。

    • エージェントがディストリビューターとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの DistributorSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

    • エージェントがパブリッシャーとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの PublisherSecurity フィールドを true」を参照してください。

    • エージェントがパブリッシャーとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの PublisherSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

      注意

      サブスクライバーに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。

  6. (省略可) P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChangesCachePropertyChangesを指定した場合、 CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges に値 false (既定値) を指定した場合、変更は直ちにサーバーに送られます。

マージ エージェントのセキュリティ設定をプッシュ サブスクリプション用からマージ パブリケーション用に変更するには

  1. ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。

  2. MergeSubscription クラスのインスタンスを作成します。

  3. サブスクリプションの PublicationNameDatabaseNameSubscriberNameSubscriptionDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。

  4. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから false が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。

  5. MergeSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。

    • エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 LoginPassword フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。

    • エージェントがサブスクライバーとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの SubscriberSecurity フィールドを true」を参照してください。

    • エージェントがサブスクライバーとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの SubscriberSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

    • エージェントがパブリッシャーとの接続に使用する認証の種類に Windows 統合認証を指定するには、 WindowsAuthentication プロパティの PublisherSecurity フィールドを true」を参照してください。

    • エージェントがパブリッシャーとの接続に使用する認証の種類に SQL Server 認証を指定するには、 WindowsAuthentication プロパティの PublisherSecurity フィールドを false に設定し、さらに、 SqlStandardLogin 」および「 SqlStandardPassword フィールドに対して、サブスクライバーのログイン資格情報を設定します。

      注意

      ディストリビューターに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。

  6. (省略可) P:Microsoft.SqlServer.Replication.ReplicationObject.CachePropertyChangesCachePropertyChangesを指定した場合、 CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges に値 false (既定値) を指定した場合、変更は直ちにサーバーに送られます。

即時更新サブスクライバーがトランザクション パブリッシャーへの接続時に使用するログイン情報を変更するには

  1. ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。

  2. サブスクリプション データベースの ReplicationDatabase クラスのインスタンスを作成します。 Name を指定し、 ServerConnection に手順 1. の ConnectionContextを指定します。

  3. LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから false が返された場合、手順 2. で指定したデータベースのプロパティが正しく定義されていないか、サブスクリプション データベースが存在していません。

  4. LinkPublicationForUpdateableSubscription メソッドに次のパラメーターを指定して呼び出します。

    • Publisher - パブリッシャーの名前。

    • PublisherDB - パブリケーション データベースの名前。

    • Publication - 即時更新サブスクライバーでサブスクライブしているパブリケーションの名前。

    • Distributor - ディストリビューターの名前。

    • PublisherSecurity - A PublisherConnectionSecurityContext オブジェクト。即時更新サブスクライバーがパブリッシャーに接続するときのセキュリティ モードと、その接続に必要なログイン資格情報を指定します。

例 (RMO)

次の例では、指定されたログイン値をチェックし、該当する Windows ログイン、または、サーバー上のレプリケーションによって格納された SQL Server ログインを対象にすべてのパスワードを変更します。

// Set the Distributor and distribution database names.
string serverName = publisherInstance;

ReplicationServer server;

// Create a connection to the Distributor using Windows Authentication.
ServerConnection conn = new ServerConnection(serverName);

try
{
    // Open the connection. 
    conn.Connect();

    server = new ReplicationServer(conn);

    // Load server properties, if it exists.
    if (server.LoadProperties())
    {
        string[] slash = new string[1];
        slash[0] = @"\";

        // If the login is in the form string\string, assume we are 
        // changing the password for a Windows login.
        if (login.Split(slash, StringSplitOptions.None).Length == 2)
        {
            //Change the password for the all connections that use
            // the Windows login. 
            server.ChangeReplicationServerPasswords(
                    ReplicationSecurityMode.Integrated, login, password);
        }
        else
        {
            // Change the password for the all connections that use
            // the SQL Server login. 
            server.ChangeReplicationServerPasswords(
                    ReplicationSecurityMode.SqlStandard, login, password);
        }
    }
    else
    {
        throw new ApplicationException(String.Format(
            "Properties for {0} could not be retrieved.", publisherInstance));
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException(String.Format(
        "An error occured when changing agent login " +
        " credentials on {0}.",serverName), ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim serverName As String = publisherInstance

Dim server As ReplicationServer

' Create a connection to the Distributor using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(serverName)

Try
    ' Open the connection. 
    conn.Connect()

    server = New ReplicationServer(conn)

    ' Load server properties, if it exists.
    If server.LoadProperties() Then

        ' If the login is in the form string\string, assume we are 
        ' changing the password for a Windows login.
        If login.Split("\").Length = 2 Then

            ' Change the password for the all connections that use
            ' the Windows login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.Integrated, login, password)
        Else

            ' Change the password for the all connections that use
            ' the SQL Server login. 
            server.ChangeReplicationServerPasswords( _
            ReplicationSecurityMode.SqlStandard, login, password)
        End If
    Else
        Throw New ApplicationException(String.Format( _
         "Properties for {0} could not be retrieved.", publisherInstance))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException(String.Format( _
     "An error occured when changing agent login " + _
     " credentials on {0}.", serverName), ex)
Finally
    conn.Disconnect()
End Try

補足情報: レプリケーションのセキュリティ設定を変更した後

エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。

参照

Replication Management Objects Concepts
レプリケーション スクリプトのアップグレード (レプリケーション Transact-SQL プログラミング)
ID およびアクセス制御 (レプリケーション)
レプリケーション エージェントのセキュリティ モデル
Replication Security Best Practices
レプリケーションのセキュリティ設定の表示および変更
Replication System Stored Procedures Concepts