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

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

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

    セキュリティ

  • レプリケーションのセキュリティ設定を表示および変更するために使用するもの:

    SQL Server Management Studio

    Transact-SQL

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

  • フォロー アップ: レプリケーションのセキュリティ設定を変更した後

作業を開始する準備

制限事項と制約事項

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

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

セキュリティ

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

権限

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

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

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

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

  3. [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「プッシュ サブスクリプションのプロパティの表示または変更」および「プル サブスクリプションのプロパティの表示または変更」を参照してください。

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

  5. [パブリッシャーのプロパティ - <Publisher>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「ディストリビューターとパブリッシャーのプロパティの表示および変更」を参照してください。

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] をクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

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_mode1 または 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_mode1 または 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 を指定し、@articleall を、@property にセキュリティ プロパティの名前を、@value にプロパティの新しい値を指定します。

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

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

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

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

    注意

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

    セキュリティに関する注意セキュリティに関する注意

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

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

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

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

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

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

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

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

    注意

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

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

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

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

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

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

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

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

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

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

    注意

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

    セキュリティに関する注意セキュリティに関する注意

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

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

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

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

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

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

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

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

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

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

    注意

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

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

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

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

    セキュリティに関する注意セキュリティに関する注意

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

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

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

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

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

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

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

  • サブスクライバー側のサブスクリプション データベースに対して、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 を実行します。

[トップに戻る] リンクで使用される矢印アイコン[Top]

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

セキュリティに関する注意セキュリティに関する注意

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

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

  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 アカウントの資格情報を変更するには、SynchronizationAgentProcessSecurityLogin フィールドおよび Password フィールドを設定します。

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

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

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

      注意

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

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

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

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

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

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

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

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

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

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

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

    • PublisherSecurity - 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[1] = @"\";

                    // 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

[トップに戻る] リンクで使用される矢印アイコン[Top]

フォロー アップ: レプリケーションのセキュリティ設定を変更した後

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

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

タスク

レプリケーション スクリプトのアップグレード (レプリケーション Transact-SQL プログラミング)

概念

レプリケーション管理オブジェクトの概念

レプリケーション エージェントのセキュリティ モデル

レプリケーション セキュリティの推奨事項

レプリケーション システム ストアド プロシージャの概念

その他の技術情報

レプリケーションのログインとパスワードの管理

セキュリティと保護 (レプリケーション)