このレッスンでは、SQL Server Management Studioを使用してマージ パブリケーションを作成し、AdventureWorks2012 サンプル データベースの Employee、SalesOrderHeader、SalesOrderDetail テーブルのサブセットを発行します。 ここでは、パラメーター化された行フィルターを使ってこれらのテーブルをフィルター処理し、サブスクリプションごとに一意のデータ部分が含まれるようにします。 また、マージ エージェントで使用されるSQL Server ログインをパブリケーション アクセス リスト (PAL) に追加します。 このチュートリアルを学習するには、前のチュートリアル「 レプリケーションに備えたサーバーの準備」を完了している必要があります。
パブリケーションを作成し、アーティクルを定義するには
SQL Server Management Studioでパブリッシャーに接続し、サーバー ノードを展開します。
[レプリケーション] フォルダーを展開し、 [ローカル パブリケーション]を右クリックして、 [新しいパブリケーション]をクリックします。
パブリケーションの新規作成ウィザードが起動します。
[パブリケーション データベース] ページで、[ AdventureWorks2012] を選択し、[ 次へ] をクリックします。
[パブリケーションの種類] ページで、 [マージ パブリケーション]を選択し、 [次へ]をクリックします。
[サブスクライバーの種類] ページで、SQL Server 2008 以降のみが選択されていることを確認し、[次へ] をクリックします。
[アーティクル] ページで、 [テーブル] ノードを展開して [SalesOrderHeader] および [SalesOrderDetail]を選択します。次に [Employee]を展開し、 [EmployeeID] または [LoginID]を選択して、 [次へ]をクリックします。
ヒント
その他の必要な列が自動的に選択されます。 自動的に選択された列のいずれかを選択し、[ 発行するオブジェクト] リストの下にあるメモを表示して、列が必要な理由を説明します。
[テーブル行のフィルター選択] ページで、 [追加] をクリックして [フィルターの追加]をクリックします。
[フィルターの追加] ダイアログ ボックスの [フィルターを適用するテーブルを選択します。] で [Employee (HumanResources)]を選択します。 [LoginID] 列をクリックして、右矢印をクリックし、フィルター選択クエリの WHERE 句にこの列を追加します。WHERE 句を次のように修正します。
WHERE [LoginID] = HOST_NAME()[このテーブルの 1 行を 1 つのサブスクリプションのみに移動する]をクリックして、 [OK]をクリックします。
[テーブル行のフィルター選択] ページで、 [Employee (Human Resources)]、 [追加] の順にクリックし、 [選択したフィルターを拡張するために結合を追加する]をクリックします。
[結合の追加] ダイアログ ボックスで、 [結合テーブル] の下の [Sales.SalesOrderHeader]をクリックして、 [JOIN ステートメントを手動で作成する]をクリックし、JOIN ステートメントを次のように完成させます。
ON Employee.EmployeeID = SalesOrderHeader.SalesPersonID[結合オプションを指定します]で、 [一意キー]を選択して [OK]をクリックします。
[テーブル行のフィルター選択] ページで、 [SalesOrderHeader]、 [追加]の順にクリックし、 [選択したフィルターを拡張するために結合を追加する]をクリックします。
[結合の追加] ダイアログ ボックスで、 [結合テーブル] の下の [Sales.SalesOrderDetail]をクリックします。
[JOIN ステートメントを手動で作成する]をクリックします。
[フィルター選択されたテーブルの列]で、 [BusinessEntityID]を選択し、矢印ボタンをクリックして列名を JOIN ステートメントにコピーします。
[JOIN ステートメント] ボックスで、次のように JOIN ステートメントを完成させます。
ON Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID[結合オプションを指定します]で、 [一意キー]を選択して [OK]をクリックします。
[テーブル行のフィルター選択] ページで、 [SalesOrderHeader (Sales)]、 [追加]の順にクリックし、 [選択したフィルターを拡張するために結合を追加する]をクリックします。
[結合の追加] ダイアログボックスで、 [結合テーブル] の下の [Sales.SalesOrderDetail]をクリックして [OK]をクリックし、 [次へ]をクリックします。
[スナップショットをすぐに作成する]を選択し、 [以下のスケジュールでスナップショット エージェントを実行する]をオフにして、 [次へ]をクリックします。
[エージェント のセキュリティ] ページで、[セキュリティ設定] をクリックし、[プロセス アカウント] ボックスに「Machine_Name>\repl_snapshot」と入力<し、このアカウントのパスワードを入力して、[OK] をクリックします。 [完了] をクリックします。
[ウィザードの完了] ページで、 [パブリケーション名] ボックスに「 AdvWorksSalesOrdersMerge 」と入力し、 [完了]をクリックします。
パブリケーションが作成されたら、 [閉じる]をクリックします。
スナップショット生成の状態を表示するには
SQL Server Management Studioでパブリッシャーに接続し、サーバー ノードを展開し、[レプリケーション] フォルダーを展開します。
[ローカル パブリケーション] フォルダーを展開し、 [AdvWorksSalesOrdersMerge]を右クリックして、 [スナップショット エージェントの状態の表示]をクリックします。
パブリケーションのスナップショット エージェントの現在の状態が表示されるので、 スナップショット ジョブが正常に終了していることを確認してから次のレッスンに進みます。
マージ エージェントのログインを PAL に追加するには
SQL Server Management Studioでパブリッシャーに接続し、サーバー ノードを展開し、[レプリケーション] フォルダーを展開します。
[ローカル パブリケーション] フォルダーを展開し、 [AdvWorksSalesOrdersMerge]パブリケーションを右クリックして、 [プロパティ]をクリックします。
[パブリケーションのプロパティ] ダイアログ ボックスが表示されます。
[パブリケーション アクセス リスト] ページを選択して、 [追加]をクリックします。
[パブリケーション アクセスの追加] ダイアログ ボックスで、[Machine_Name>\repl_merge] を選択<し、[OK] をクリックします。 [OK] をクリックします。
次の手順
ここでは、マージ パブリケーションを作成しました。 次は、このパブリケーションをサブスクライブします。 「 レッスン 2: マージ パブリケーションへのサブスクリプションの作成」を参照してください。