チュートリアル: レプリケーション用の SQL Server の準備 - パブリッシャー、ディストリビューター、サブスクライバー
適用対象:SQL Server
レプリケーション トポロジを構成するには、事前にセキュリティ計画を立てることが重要です。 このチュートリアルでは、レプリケーション トポロジのセキュリティを向上する方法について説明します。 また、データのレプリケーションの最初の手順である配布の構成方法についても説明します。 他のチュートリアルを行う前に、まずこのチュートリアルを実行してください。
注意
サーバー間でデータを安全にレプリケートするには、「レプリケーション セキュリティの推奨事項」の推奨事項をすべて実践してください。
学習する内容
このチュートリアルでは、サーバーを準備し、レプリケーションを最小の特権で安全に実行できるようにする方法を説明します。
このチュートリアルでは、次の内容を学習します。
- レプリケーション用の Windows アカウントを作成する。
- スナップショット フォルダーを準備する。
- ディストリビューションを構成する。
前提条件
このチュートリアルは、データベースの基本的な操作は理解しているが、レプリケーション機能についてはあまり詳しくないユーザーを対象としています。
このチュートリアルを実行するには、SQL Server、SQL Server Management Studio (SSMS)、および AdventureWorks データベースが必要です。
パブリッシャー サーバー側 (レプリケーション元) に以下をインストールします。
- SQL Server Express または SQL Server Compact を除く、SQL Server の任意のエディション。 除外されているエディションはレプリケーションのパブリッシャーとして使用できません。
AdventureWorks2022
サンプル データベース。 セキュリティ強化のため、既定ではサンプル データベースがインストールされません。
サブスクライバー サーバー (レプリケーション先) に、SQL Server Compact を除く SQL Server の任意のエディションをインストールします。 SQL Server Compact は、トランザクション レプリケーションのサブスクライバーとして使用できません。
SQL Server Management Studio をインストールします。
SQL Server 2017 Developer Edition をインストールします。
AdventureWorks サンプル データベースをダウンロードします。 SSMS でデータベースを復元する方法の詳細については、データベースの復元に関するページを参照してください。
注意
- 3 つ以上離れたバージョンの SQL Server インスタンスでは、レプリケーションはサポートされていません。 詳細については、「Supported SQL Versions in Replication Topology」(レプリケーション トポロジでサポートされている SQL Server のバージョン) を参照してください。
- SQL Server Management Studio では、固定サーバー ロール sysadmin のメンバーとしてログインし、パブリッシャーとサブスクライバーに接続する必要があります。 このロールの詳細については、「サーバー レベルのロール」を参照してください。
このチュートリアルの推定所要時間: 30 分
レプリケーション用の Windows アカウントの作成
このセクションでは、レプリケーション エージェントを実行するための Windows アカウントを作成します。 また、次のエージェントを実行するための別の Windows アカウントをローカル サーバー上に作成します。
エージェント | 場所 | アカウント名 |
---|---|---|
スナップショット エージェント | 発行元 | <machine_name>\repl_snapshot |
ログ リーダー エージェント (Log Reader Agent) | 発行元 | <machine_name>\repl_logreader |
ディストリビューション エージェント | パブリッシャーおよびサブスクライバー | <machine_name>\repl_distribution |
[マージ エージェント] | パブリッシャーおよびサブスクライバー | <machine_name>\repl_merge |
注意
このレプリケーション チュートリアルでは、パブリッシャーとディストリビューターで同じ SQL Server のインスタンス (NODE1\SQL2016) を共有します。 サブスクライバー インスタンス (NODE2 \ SQL2016) はリモートです。 パブリッシャーとサブスクライバーが同じ SQL Server インスタンスを共有することもできますが、これは必須条件ではありません。 パブリッシャーとサブスクライバーが同じインスタンスを共有している場合、サブスクライバー側でアカウントの作成に使用される手順は必要ありません。
パブリッシャー側でレプリケーション エージェントを実行するためのローカル Windows アカウントを作成する
パブリッシャー側で、[コントロール パネル] の [管理ツール] から [コンピューターの管理] を開きます。
[システム ツール]の [ローカル ユーザーとグループ]を展開します。
[ユーザー] を右クリックし、 [新しいユーザー] を選択します。
[ユーザー名] ボックスに「repl_snapshot」と入力し、パスワードおよびその他の必要な情報を入力し、[作成] を選択して repl_snapshot アカウントを作成します。
同様に、repl_logreader、repl_distribution、repl_merge の各アカウントを作成します。
[閉じる] を選択します。
サブスクライバー側でレプリケーション エージェントを実行するためのローカル Windows アカウントを作成する
サブスクライバー側で、[コントロール パネル] の [管理ツール] から [コンピューターの管理] を開きます。
[システム ツール]の [ローカル ユーザーとグループ]を展開します。
[ユーザー] を右クリックし、 [新しいユーザー] を選択します。
[ユーザー名] ボックスに「 repl_distribution 」と入力し、パスワードおよびその他の必要な情報を入力し、 [作成] を選択して repl_distribution アカウントを作成します。
同様にして、repl_merge アカウントも作成します。
[閉じる] を選択します。
詳細については、「レプリケーション エージェントの概要」を参照してください。
スナップショット フォルダーの準備
このセクションでは、パブリケーション スナップショットの作成と保存に使用されるスナップショット フォルダーを構成します。
スナップショット フォルダーの共有を作成し、アクセス許可を与える
エクスプローラーで SQL Server のデータ フォルダーを参照します。 既定の場所は、C:\Program Files\Microsoft SQL Server\MSSQL.X\MSSQL\Data です。
repldataという名前の新しいフォルダーを作成します。
フォルダーを右クリックし、[プロパティ] を選択します。
a. [repldata のプロパティ] ダイアログ ボックスの [共有] タブで、[詳細な共有] を選択します。
b. [詳細な共有] ダイアログ ボックスで、[このフォルダーを共有する] を選択し、[アクセス許可] を選択します。
[repldata のアクセス許可] ダイアログ ボックスで [追加] を選択します。 [ユーザー、コンピューター、サービス アカウントまたはグループの選択] ボックスに、前に作成したスナップショット エージェント アカウントの名前 (<Publisher_Machine_Name>\repl_snapshot) を入力します。 [名前の確認] を選択し、[OK] を選択します。
手順 6 を繰り返して、以前に作成したその他の 2 つのアカウント (<Publisher_Machine_Name>\repl_merge と <Publisher_Machine_Name>\repl_distribution) を追加します。
3 つのアカウントを追加したら、次のアクセス許可を割り当てます。
- repl_distribution: 読み取り
- repl_merge: 読み取り
- repl_snapshot: フル コントロール
共有のアクセス許可が正しく構成されたら、[OK] を選択して、[repldata のアクセス許可] ダイアログ ボックスを閉じます。 [OK] を選択して [詳細な共有] ダイアログ ボックスを閉じます。
[repldata のプロパティ] ダイアログ ボックスで、[セキュリティ] タブを選択し、[編集] を選択します。
[repldata のアクセス許可] ダイアログ ボックスで [追加] を選択します。 [ユーザー、コンピューター、サービス アカウントまたはグループの選択] ボックスに、前に作成したスナップショット エージェント アカウントの名前 (<Publisher_Machine_Name>\repl_snapshot) を入力します。 [名前の確認] を選択し、[OK] を選択します。
同様に、ディストリビューション エージェント (<Publisher_Machine_Name>\repl_distribution) とマージ エージェント (<Publisher_Machine_Name>\repl_merge) のアクセス許可を追加します。
次のアクセス許可が与えられていることを確認します。
- repl_distribution: 読み取り
- repl_merge: 読み取り
- repl_snapshot: フル コントロール
[共有] タブをもう一度選択し、共有の [ネットワーク パス] をメモします。 後でスナップショット フォルダーを構成するときにこのパスが必要になります。
[OK] を選択して [repldata のプロパティ] ダイアログ ボックスを閉じます。
詳細については、「スナップショット フォルダーのセキュリティ保護」を参照してください。
ディストリビューションの構成
このセクションでは、パブリッシャー側のディストリビューションを構成し、パブリケーション データベースとディストリビューション データベースに対して必要なアクセス許可を設定します。 ディストリビューターを構成済みの場合は、このセクションを開始する前に、パブリッシングとディストリビューションを無効にする必要があります。 特に実稼働環境で既存のレプリケーション トポロジを維持する必要がある場合は、このレッスンを実行しないでください。
パブリッシャー側のリモート ディストリビューターの構成は、このチュートリアルの対象外です。
パブリッシャー側でディストリビューションを構成する
SQL Server Management Studio でパブリッシャーに接続し、サーバー ノードを展開します。
[レプリケーション] フォルダーを右クリックし、 [ディストリビューションの構成] を選択します。
注意
- 実際のサーバー名ではなく localhost を使用して SQL Server に接続した場合、SQL Server が localhost または IP アドレスに接続できないことを示す警告が表示されます。 警告ダイアログで [OK] を選択します。 [サーバーへの接続] ダイアログ ボックスで、[サーバー名] を localhost または IP アドレスから使用しているサーバーの名前に変更します。 次に、 [接続](Connect) を選択します。
- 現時点で SQL Server Management Studio (SSMS) 18.0 (およびそれ以降) には既知の問題があります。IP アドレスを使用してディストリビューターに接続するときに警告メッセージは表示 "されません" が、これはまだ無効です。 ディストリビューターに接続するときは、実際のサーバー名を使用する必要があります。
ディストリビューション構成ウィザードが起動します。
[ディストリビューター] ページで、[<'ServerName'> を独自のディストリビューターとする (SQL Server はディストリビューション データベースとログを作成します)] を選択します。 [次へ] を選択します。
SQL Server エージェントが実行されていない場合は、SQL Server の [エージェントの起動] ページで、[はい、SQL Server エージェント サービスを自動的に開始するように構成します] を選択します。 [次へ] を選択します。
[スナップショット フォルダー] ボックスにパスとして「\\<Publisher_Machine_Name>\repldata」を入力し、[次へ] を選択します。 このパスは、共有のプロパティを構成した後に repldata のプロパティ フォルダーの [ネットワーク パス] に以前表示されていたパスと一致する必要があります。
ウィザードの残りのページでは、既定値をそのまま使用します。
[完了] をクリックしてディストリビューションを有効にします。
ディストリビューターを構成するときに次のエラーが表示される可能性があります。 これは、SQL Server エージェント アカウントの開始に使用されたアカウントが、システムの管理者ではないことを示します。 SQL Server エージェントを手動で開始して、既存のアカウントにこれらのアクセス許可を付与するか、SQL Server エージェントが使用するアカウントを変更する必要があります。
SQL Server Management Studio インスタンスが管理者権限で実行されている場合は、SSMS 内から手動で SQL エージェントを起動できます。
注意
SQL エージェントが自動的に起動しない場合は、SSMS で SQL Server エージェントを右クリックし、[更新] を選択します。 それでも停止状態である場合、SQL Server 構成マネージャーから手動で起動します。
データベースのアクセス許可を設定する
SQL Server Management Studio で、[セキュリティ] を展開し、[ログイン] を右クリックして、[新しいログイン] を選択します。
[全般] ページで、[検索] を選択します。 [選択するオブジェクト名を入力してください] ボックスに「<Publisher_Machine_Name>\repl_snapshot」と入力し、[名前の確認] 、[OK] を順に選択します。
[このログインにマップされたユーザー] の一覧にある [ユーザー マッピング] ページで、ディストリビューション データベースと
AdventureWorks2022
データベースの両方を選択します。[データベース ロールのメンバーシップ] の一覧で、両方のデータベースのログイン用に db_owner ロールを選択します。
[OK] を選択して、ログインを作成します。
その他のローカル アカウント (repl_distribution、repl_logreader、および repl_merge) のログインを作成するために手順 1 ~ 4 を繰り返します。 これらのログインも、ディストリビューション データベースと AdventureWorks データベースの固定データベース ロール db_owner のメンバーとなっているユーザーにマップする必要があります。
詳細については、次を参照してください。
次のステップ
サーバーをレプリケーション用に正常に準備しました。 次の記事では、トランザクション レプリケーションを構成する方法を説明します。