レプリケーションのセキュリティ設定の表示および変更
このトピックでは、SQL Server Management Studio、Transact-SQL、またはレプリケーション管理オブジェクト (RMO) を使用して、SQL Server 2014 のレプリケーション セキュリティ設定を表示および変更する方法について説明します。 たとえば、ログ リーダー エージェントからパブリッシャーへの接続を SQL Server 認証から Windows 統合認証に変更したい場合や、Windows アカウントのパスワードを変更したときにエージェント ジョブの実行に使用する資格情報を変更したい場合があります。 各エージェントで必要な権限の詳細については、「 レプリケーション エージェント セキュリティ モデル」を参照してください。
このトピックの内容
作業を開始する準備:
レプリケーションのセキュリティ設定を表示および変更するために使用するもの:
フォロー アップ: レプリケーションのセキュリティ設定を変更した後
始める前に
制限事項と制約事項
使用するストアド プロシージャは、エージェントの種類およびサーバー接続の種類によって異なります。
使用する RMO のクラスとプロパティは、エージェントの種類およびサーバー接続の種類によって異なります。
セキュリティ
セキュリティ上の理由から、レプリケーション ストアド プロシージャによって返される結果セットでは、パスワードの実際の値はマスクされます。
アクセス許可
SQL Server Management Studio を使用する
次のダイアログ ボックスでセキュリティ設定を表示および変更します。
[レプリケーション パスワードの更新] ダイアログ ボックス。このダイアログ ボックスは、SQL Server Management Studio の [レプリケーション] フォルダーから利用できます。 レプリケーション トポロジのサーバーで SQL Server アカウントまたは Windows アカウントのパスワードを変更する場合は、そのアカウントを使用する各エージェントのパスワードを更新するよりも、このダイアログ ボックスを使用してください。 複数のサーバー上のエージェントが同じアカウントを使用している場合は、それぞれのサーバーに接続してパスワードを変更する必要があります。 パスワードは、レプリケーションで使用されるすべての場所で更新されます。 パスワードは、リンク サーバーなど、その他の場所では更新されません。
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページ。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。
[サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「 View and Modify Push Subscription Properties 」および「 View and Modify Pull Subscription Properties」を参照してください。
[ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスと [ディストリビューション データベースのプロパティ - <Database>] ダイアログ ボックス。 これらのダイアログ ボックスへのアクセスの詳細については、「 View and Modify Distributor and Publisher Properties」を参照してください。
[パブリッシャーのプロパティ - <Publisher>] ダイアログ ボックス。 このダイアログ ボックスへのアクセスの詳細については、「 View and Modify Distributor and Publisher Properties」を参照してください。
1 つ以上のエージェントによって使用されるアカウントのパスワードを変更するには
アカウントが SQL Server アカウントの場合、このダイアログ ボックスによって SQL Server アカウントのパスワードも変更されます。 アカウントが Windows アカウントの場合は、最初に Windows でパスワードを変更します。 詳細については、Windows のマニュアルを参照してください。
Note
レプリケーション パスワードを変更したら、そのパスワードを使用する各エージェントを停止して再起動し、エージェントに対して変更を反映させる必要があります。
SQL Server Management Studio でサーバーに接続し、サーバー ノードを展開します。
[レプリケーション] フォルダーを右クリックし、 [レプリケーション パスワードの更新]をクリックします。
[レプリケーション パスワードの更新] ダイアログ ボックスで、アカウントと新しいパスワードを指定します。
OK をクリックします。
スナップショット エージェントのセキュリティ設定を変更するには
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページで、[スナップショット エージェント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。
[スナップショット エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行するアカウントを指定します。
[プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。
[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。
エージェントがディストリビューターからパブリッシャーに接続するときのコンテキストを指定します。 [次の SQL Server ログインを使用する]を選択する場合は、ログインも指定する必要があります。
[ログイン] テキスト ボックスにログインを入力します。
[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。
Note
パブリッシャーが Oracle パブリッシャーの場合、接続コンテキストは **[ディストリビューターのプロパティ - <Distributor>**] ダイアログ ボックスで指定されます。 コンテキストを変更する手順については、以下を参照してください。
OK をクリックします。
ログ リーダー エージェントのセキュリティ設定を変更するには
[パブリケーションのプロパティ - <Publication>] ダイアログ ボックスの [エージェント セキュリティ] ページで、[ログ リーダー エージェント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。
[ログ リーダー エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行するアカウントを指定します。
[プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。
[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。
エージェントがディストリビューターからパブリッシャーに接続するときのコンテキストを指定します。 [次の SQL Server ログインを使用する]を選択する場合は、ログインも指定する必要があります。
[ログイン] テキスト ボックスにログインを入力します。
[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。
Note
パブリッシャーが Oracle パブリッシャーの場合、接続コンテキストは **[ディストリビューターのプロパティ - <Distributor>**] ダイアログ ボックスで指定されます。 次の手順を使用して、コンテキストを変更します。
OK をクリックします。
Note
ログ リーダー エージェントは、パブリッシュされているデータベースごとに 1 つ存在します。 1 つのパブリケーションでエージェントのセキュリティ設定を変更すると、パブリケーション データベースのすべてのパブリケーションの設定に影響が及びます。
Oracle パブリケーションのスナップショット エージェントおよびログ リーダー エージェントがパブリッシャーに接続するときのコンテキストを変更するには
[ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、パブリッシャーの横にあるプロパティ ボタン ([...]) をクリックします。
[パブリッシャーへのエージェント接続] セクションで、構成したレプリケーション管理ユーザー スキーマによって使用されるログインとパスワードを指定します。 詳細については、「Configure an Oracle Publisher」(Oracle パブリッシャーの構成) をご覧ください。
OK をクリックします。
プッシュ サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには
パブリッシャーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。
ディストリビューション エージェントを実行してディストリビューターへ接続するアカウントを変更するには、[エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。
ディストリビューション エージェントがサブスクライバーに接続するときのコンテキストを変更するには、[サブスクライバー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。
キュー更新サブスクリプションを使用する場合、ここで指定したコンテキストは、サブスクライバーに接続するためにキュー リーダー エージェントでも使用されます。
OK をクリックします。
プル サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには
サブスクライバーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。
ディストリビューション エージェントを実行してサブスクライバーへ接続するアカウントを変更するには、[エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。
キュー更新サブスクリプションを使用する場合、ここで指定したコンテキストは、サブスクライバーに接続するためにキュー リーダー エージェントでも使用されます。
ディストリビューション エージェントがディストリビューターに接続するときのコンテキストを変更するには、[ディストリビューター接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。
OK をクリックします。
プッシュ サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには
パブリッシャーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。
マージ エージェントを実行してパブリッシャーおよびディストリビューターへ接続するアカウントを変更するには、[エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [マージ エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。
マージ エージェントがサブスクライバーに接続するときのコンテキストを変更するには、[サブスクライバー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。
OK をクリックします。
プル サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには
サブスクライバーの [サブスクリプションのプロパティ - <Subscription>] ダイアログ ボックスでは、次の変更を加えることができます。
マージ エージェントを実行してサブスクライバーへ接続するアカウントを変更するには、[エージェント プロセス アカウント] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [マージ エージェント セキュリティ] ダイアログ ボックスで、アカウントとパスワードを指定します。
マージ エージェントがパブリッシャーおよびディストリビューターに接続するときのコンテキストを変更するには、[パブリッシャー接続] 行をクリックしてから、その行のプロパティ ボタン ( [...] ) をクリックします。 [接続情報の入力] ダイアログ ボックスでコンテキストを指定します。
OK をクリックします。
キュー リーダー エージェントを実行するアカウントを変更するには
[ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [全般] ページで、ディストリビューション データベースの横にあるプロパティ ボタン ([...]) をクリックします。
[ディストリビューション データベースのプロパティ - <Database>] ダイアログ ボックスで、[エージェント プロセス アカウント] テキスト ボックスの横にある [セキュリティ設定] ボタンをクリックします。
[キュー リーダー エージェントのセキュリティ] ダイアログ ボックスで、エージェントを実行してディストリビューターへ接続するアカウントを指定します。
[プロセス アカウント] テキスト ボックスに新しい Windows アカウントを入力します。
[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに、新しい複雑なパスワードを入力します。
OK をクリックします。
Note
ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。
キュー リーダー エージェントがパブリッシャーに接続するときのコンテキストを変更するには
[ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、パブリッシャーの横にあるプロパティ ボタン ([...]) をクリックします。
[パブリッシャーへのエージェント接続] セクションで、 [エージェント接続モード] オプションの [エージェント プロセス アカウントを借用する] または [SQL Server 認証] の値を指定します。 [SQL Server 認証]を指定する場合は、 [ログイン] および [パスワード]の値も入力します。
OK をクリックします。
Note
ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。
キュー リーダー エージェントがサブスクライバーに接続するときのコンテキストを変更するには
- キュー リーダー エージェントは、ディストリビューション エージェントと同じ接続コンテキストをサブスクリプションに使用します。 詳細については、ディストリビューション エージェントに関する上記の手順を参照してください。
即時更新プル サブスクリプションのセキュリティ設定を変更するには
サブスクライバーの [ サブスクリプションのプロパティ - <サブスクリプション> ] ダイアログ ボックスで、[ Publisher 接続 ] 行をクリックし、行のプロパティ ([...)] ボタンをクリックします。
[接続情報の入力] ダイアログ ボックスで、次のオプションのいずれかを選択します。
[リンク サーバーまたはリモート サーバーからのログインを使用します]。 sp_addserver (Transact-SQL)、sp_addlinkedserver (Transact-SQL)、SQL Server Management Studio、または他の方法を使用してサブスクライバ―とパブリッシャーの間にリモート サーバーまたはリンクされたサーバーを定義した場合は、このオプションを選択します。
[次のログインとパスワードによる SQL Server 認証を使用する]。 サブスクライバーとパブリッシャーの間でリモート サーバーまたはリンク サーバーを定義していない場合は、このオプションを選択します。 レプリケーションによってリンク サーバーが作成されます。 指定するアカウントは、パブリッシャーに既に存在している必要があります。
OK をクリックします。
Note
この手順により、サブスクライバーで変更が行われたときに、レプリケーション トリガーがサブスクライバーからパブリッシャーに接続するために使用する方法が変更されます。 ディストリビューション エージェントに関連付けられている設定を即時更新サブスクリプション用に変更することもできます。 詳細については、このトピックで既に説明した手順を参照してください。
この手順は、プル サブスクリプションにのみ当てはまります。 プッシュ サブスクリプションには、ストアド プロシージャ sp_link_publication (Transact-SQL) を使用します。
パブリッシャーからディストリビューターへの管理接続に使用されているパスワードを変更するには
[ディストリビューターのプロパティ - <Distributor>] ダイアログ ボックスの [パブリッシャー] ページで、[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに複雑なパスワードを入力します。
OK をクリックします。
[パブリッシャーのプロパティ - <Publisher>] ダイアログ ボックスの [全般] ページで、[パスワード] テキスト ボックスと [パスワードの確認入力] テキスト ボックスに複雑なパスワードを入力します。
OK をクリックします。
Transact-SQL の使用
重要
可能な限り、次のすべての手順で、実行時にセキュリティ資格情報を入力するように求めるメッセージをユーザーに表示します。 スクリプト ファイルに資格情報を格納する場合は、不正アクセスを防ぐために、そのファイルをセキュリティで保護する必要があります。
レプリケーション サーバーに格納されたパスワードのインスタンスをすべて変更するには
レプリケーション トポロジ内のサーバーの master データベースで、 sp_changereplicationserverpasswordsを実行します。 @loginのパスワードを変更する Microsoft Windows アカウントまたは Microsoft SQL Server ログインと、アカウントの新しいパスワード、または@passwordのログインを指定します。 これにより、トポロジ内の他のサーバーに接続すると、サーバーのすべてのエージェントで使用されるパスワードの各インスタンスが変更されます。
Note
ディストリビューターやサブスクライバーなど、トポロジ内の特定のサーバーへの接続に対するログインおよびパスワードのみを変更するには、 @serverにサーバーの名前を指定します。
パスワードの更新が必要なレプリケーション トポロジ内の各サーバーで手順 1. を繰り返します。
Note
レプリケーション パスワードを変更したら、そのパスワードを使用する各エージェントを停止して再起動し、エージェントに対して変更を反映させる必要があります。
スナップショット エージェントのセキュリティ設定を変更するには
パブリッシャーで、 @publicationを指定して sp_helppublication_snapshotを実行します。 これにより、スナップショット エージェントの現在のセキュリティ設定が返されます。
パブリッシャーで、 @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 構成マネージャー)」を参照してください。
ログ リーダー エージェントのセキュリティ設定を変更するには
パブリッシャーで、 @publisherを指定して sp_helplogreader_agentを実行します。 これにより、ログ リーダー エージェントの現在のセキュリティ設定が返されます。
パブリッシャーで、 @publicationを指定し、次のセキュリティ設定から変更するものを 1 つ以上指定して、 sp_changelogreader_agent を実行します。
エージェントの実行時に使用する Windows アカウント、またはこのアカウントのパスワードだけを変更するには、 @job_login および @job_passwordを指定します。
パブリッシャーへの接続時に使用するセキュリティ モードを指定するには、 @publisher_security_mode に 1 または 0を指定します。
パブリッシャーに接続するときに使用するセキュリティ モードを 1 から 0 に変更する場合や この接続に使用する SQL Server ログインを変更する場合は、 @publisher_login と @publisher_passwordを指定します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
重要
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_passwordを含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
プッシュ サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには
パブリッシャーのパブリケーション データベースで、 @publicationおよび @subscriber を指定して、 sp_helpsubscriptionを実行します。 これにより、ディストリビューターで実行されるディストリビューション エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。
パブリッシャーのパブリケーション データベースで、 sp_changesubscriptionを実行します。 @publication、 @subscriber、および @subscriber_dbを指定し、 @article に allを、 @propertyにセキュリティ プロパティの名前を、 @valueにプロパティの新しい値を指定します。
次のセキュリティ プロパティから変更するものに対してそれぞれ手順 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. を繰り返します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
重要
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 distrib_job_login および distrib_job_passwordを含むすべてのプロパティに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
プル サブスクリプションに対するディストリビューション エージェントのセキュリティ設定を変更するには
サブスクライバーで、 @publicationを指定して sp_helppullsubscriptionを実行します。 これにより、サブスクライバーで実行されるディストリビューション エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。
サブスクライバーのサブスクリプション データベースで、 @publisher、 @publisher_db、および @publicationを指定し、 @propertyにセキュリティ プロパティの名前を、 @valueに新しいプロパティの値を指定して、 sp_change_subscription_propertiesを実行します。
次のセキュリティ プロパティから変更するものに対してそれぞれ手順 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. を繰り返します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
プッシュ サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには
パブリッシャーのパブリケーション データベースで、 @publication、 @subscriber、および @subscriber_dbを指定して、 sp_helpmergesubscriptionを実行します。 これにより、ディストリビューターで実行されるマージ エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。
パブリッシャーのパブリケーション データベースで、 @publication、 @subscriber、および @subscriber_dbを指定し、 @propertyにセキュリティ プロパティの名前を、 @valueにプロパティの新しい値を指定して、 sp_changemergesubscriptionを実行します。
次のセキュリティ プロパティから変更するものに対してそれぞれ手順 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. を繰り返します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
重要
リモート ディストリビューターを使用してパブリッシャーを構成する場合、 merge_job_login および merge_job_passwordを含むすべてのプロパティに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
プル サブスクリプションに対するマージ エージェントのセキュリティ設定を変更するには
サブスクライバーで、 @publicationを指定して、 sp_helpmergepullsubscriptionを実行します。 これにより、サブスクライバーで実行されるマージ エージェントのセキュリティ設定を含むサブスクリプションのプロパティが返されます。
サブスクライバーのサブスクリプション データベースで、 @publisher、 @publisher_db、および @publicationを指定し、 @propertyにセキュリティ プロパティの名前を、 @valueに新しいプロパティの値を指定して、 sp_change_subscription_propertiesを実行します。
次のセキュリティ プロパティから変更するものに対してそれぞれ手順 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. を繰り返します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
サブスクライバーのフィルター選択されたスナップショットを生成する、スナップショット エージェントのセキュリティ設定を変更するには
パブリッシャーで、 @publicationを指定して、 sp_helpdynamicsnapshot_jobを実行します。 結果セットで、変更するサブスクライバーのパーティションの job_name の値を確認します。
パブリッシャーで、 @publicationを指定し、 @dynamic_snapshot_jobnameに手順 1. で取得した値を、 @job_passwordに新しい値を、または @job_login および @job_password にエージェント実行時に使用する Windows アカウントのログインおよびパスワードを指定して、 sp_changedynamicsnapshot_jobを実行します。
重要
リモート ディストリビューターを使用するパブリッシャーを構成する場合は、 job_login および job_passwordを含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
キュー リーダー エージェントのセキュリティ設定を変更するには
ディストリビューターで、 sp_helpqreader_agentを実行します。 これにより、キュー リーダー エージェントの実行時に使用される現在の Windows アカウントが返されます。
- ディストリビューターで、 @job_loginおよび @job_password に Windows アカウント設定を指定して、 sp_changeqreader_agentを実行します。
Note
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。 ディストリビューション データベースには、それぞれ 1 つのキュー リーダー エージェントがあります。 エージェントのセキュリティ設定を変更すると、このディストリビューション データベースを使用するすべてのパブリッシャーのすべてのパブリケーションの設定に影響が及びます。
キュー リーダー エージェントは、サブスクリプションのディストリビューション エージェントと同じ接続コンテキストを使用して、サブスクライバーへの接続を作成します。
パブリッシャーへの接続時に即時更新サブスクライバーで使用するセキュリティ モードを変更するには
サブスクライバー側のサブスクリプション データベースに対して、 sp_link_publicationを実行します。 @publisherおよび @publicationを指定し、 @publisher_dbにパブリケーション データベースの名前を、 @security_modeに次のいずれかの値を指定します。
0 - パブリッシャーで更新を作成する場合に SQL Server 認証を使用します。 このオプションの場合、パブリッシャーで、 @login および @passwordに有効なログインを指定する必要があります。
1 - パブリッシャーへの接続時にサブスクライバーで変更するユーザーのセキュリティ コンテキストを使用します。 このセキュリティ モードに関連する制限の詳細については、 sp_link_publication のトピックを参照してください。
2 - sp_addlinkedserver (Transact-SQL) を使って作成された既存のユーザー定義リンク サーバー ログインを使用します。
リモート ディストリビューターのパスワードを変更するには
ディストリビューターのディストリビューション データベースで、 @passwordにこのログインの新しいパスワードを指定して、 sp_changedistributor_passwordを実行します。
重要
distributor_admin のパスワードを直接変更しないでください。
このリモート ディストリビューターを使用する各パブリッシャーで、 @passwordに手順 1. のパスワードを指定して、 sp_changedistributor_passwordを実行します。
レプリケーション管理オブジェクト (RMO) の使用
重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 資格情報を保存する必要がある場合は、Microsoft Windows .NET Framework に用意されている 暗号化サービス を使用します。
レプリケーション サーバーに格納されているパスワードのインスタンスをすべて変更するには
ServerConnection クラスを使用して、レプリケーション サーバーに対する接続を作成します。
手順 1. で作成した接続を使用して、 ReplicationServer クラスのインスタンスを作成します。
ChangeReplicationServerPasswords メソッドを呼び出します。 次のパラメーターを指定します。
security_mode - ReplicationSecurityMode 値。パスワードのすべてのインスタンスを変更するために使用する認証の種類を指定します。
login - パスワードのすべてのインスタンスを変更するために使用するログイン。
password - 新しいパスワード値。
重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 資格情報を保存する必要がある場合は、Windows .NET Framework に用意されている 暗号化サービス を使用します。
Note
固定サーバー ロール
sysadmin
のメンバー以外、このメソッドを呼び出すことはできません。
パスワードを更新する必要のある、レプリケーション トポロジ内のすべてのサーバーについて、手順 1. から手順 3. を繰り返します。
ディストリビューション エージェントのセキュリティ設定をプッシュ サブスクリプション用からトランザクション パブリケーション用に変更するには
ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。
TransSubscription クラスのインスタンスを作成します。
サブスクリプションの PublicationName、 DatabaseName、 SubscriberName、 SubscriptionDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。TransSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。
エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 Login の Password フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。
エージェントがサブスクライバーとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの SubscriberSecurity フィールドを
true
に設定します。エージェントがサブスクライバーに接続するときに使用する認証の種類として SQL Server 認証を指定するには、SubscriberSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのサブスクライバー ログイン資格情報を指定します。Note
ディストリビューターに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。
(省略可) CachePropertyChanges に
true
を指定した場合、CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges にfalse
(既定値) を指定した場合、変更は直ちにサーバーに送られます。
ディストリビューション エージェントのセキュリティ設定をプル サブスクリプション用からトランザクション パブリケーション用に変更するには
ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。
TransPullSubscription クラスのインスタンスを作成します。
サブスクリプションの PublicationName、 DatabaseName、 PublisherName、 PublicationDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。TransPullSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。
エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 Login の Password フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。
エージェントがディストリビューターとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの DistributorSecurity フィールドを
true
に設定します。エージェントがディストリビューターに接続するときに使用する認証の種類として SQL Server 認証を指定するには、DistributorSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのディストリビューター ログイン資格情報を指定します。Note
サブスクライバーに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。
(省略可) CachePropertyChanges に
true
を指定した場合、CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges にfalse
(既定値) を指定した場合、変更は直ちにサーバーに送られます。
マージ エージェントのセキュリティ設定をプル サブスクリプション用からマージ パブリケーション用に変更するには
ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。
MergePullSubscription クラスのインスタンスを作成します。
サブスクリプションの PublicationName、 DatabaseName、 PublisherName、 PublicationDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。MergePullSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。
エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 Login の Password フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。
エージェントがディストリビューターとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの DistributorSecurity フィールドを
true
に設定します。エージェントがディストリビューターに接続するときに使用する認証の種類として SQL Server 認証を指定するには、DistributorSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのディストリビューター ログイン資格情報を指定します。エージェントがパブリッシャーとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの PublisherSecurity フィールドを
true
に設定します。エージェントがパブリッシャーに接続するときにエージェントが使用する認証の種類として SQL Server 認証を指定するには、PublisherSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのパブリッシャー ログイン資格情報を指定します。Note
サブスクライバーに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。
(省略可) CachePropertyChanges に
true
を指定した場合、CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges にfalse
(既定値) を指定した場合、変更は直ちにサーバーに送られます。
マージ エージェントのセキュリティ設定をプッシュ サブスクリプション用からマージ パブリケーション用に変更するには
ServerConnection クラスを使用して、パブリッシャーへの接続を作成します。
MergeSubscription クラスのインスタンスを作成します。
サブスクリプションの PublicationName、 DatabaseName、 SubscriberName、 SubscriptionDBName の各プロパティを設定し、 ConnectionContext プロパティに対し、手順 1. で作成した接続を設定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、手順 3. で指定したサブスクリプションのプロパティが正しく定義されていないか、サブスクリプションが存在していません。MergeSubscriptionのインスタンスに対し、次のいずれかまたは複数のセキュリティ プロパティを設定します。
エージェントの実行に使用する Windows アカウントの資格情報を変更するには、 Login の Password フィールドおよび SynchronizationAgentProcessSecurityフィールドを設定します。
エージェントがサブスクライバーとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの SubscriberSecurity フィールドを
true
に設定します。エージェントがサブスクライバーに接続するときに使用する認証の種類として SQL Server 認証を指定するには、SubscriberSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのサブスクライバー ログイン資格情報を指定します。エージェントがパブリッシャーとの接続に使用する認証の種類に Windows 統合認証を指定するには、WindowsAuthentication プロパティの PublisherSecurity フィールドを
true
に設定します。エージェントがパブリッシャーに接続するときにエージェントが使用する認証の種類として SQL Server 認証を指定するには、PublisherSecurity プロパティの WindowsAuthentication フィールドを
false
に設定し、SqlStandardLogin フィールドと SqlStandardPassword フィールドのパブリッシャー ログイン資格情報を指定します。Note
ディストリビューターに対するエージェント接続は、常に、 SynchronizationAgentProcessSecurityによって指定された Windows 資格情報を使用して確立されます。 このアカウントは、Windows 認証を使ってリモート接続を確立する際にも使用されます。
(省略可) CachePropertyChanges に
true
を指定した場合、CommitPropertyChanges メソッドを呼び出してサーバーに変更をコミットします。 CachePropertyChanges にfalse
(既定値) を指定した場合、変更は直ちにサーバーに送られます。
即時更新サブスクライバーがトランザクション パブリッシャーへの接続時に使用するログイン情報を変更するには
ServerConnection クラスを使用して、サブスクライバーへの接続を作成します。
サブスクリプション データベースの ReplicationDatabase クラスのインスタンスを作成します。 Name を指定し、 ServerConnection に手順 1. の ConnectionContextを指定します。
LoadProperties メソッドを呼び出して、オブジェクトのプロパティを取得します。 このメソッドから
false
が返された場合、手順 2. で指定したデータベースのプロパティが正しく定義されていないか、サブスクリプション データベースが存在していません。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[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
フォロー アップ: レプリケーションのセキュリティ設定を変更した後
エージェントのログインまたはパスワードを変更した後、変更を有効にするには、エージェントを停止して再起動する必要があります。
参照
Replication Management Objects Concepts
レプリケーション スクリプトのアップグレード (レプリケーション Transact-SQL プログラミング)
レプリケーションのログインとパスワードの管理
レプリケーション エージェントのセキュリティ モデル
レプリケーション セキュリティの推奨事項
SQL Server レプリケーション セキュリティ
Replication System Stored Procedures Concepts