SQL Server 2005 自習書シリーズ 管理編 No.2
この文章に含まれる情報は、公表の日付の時点での Microsoft Corporation の考え方を表しています。市場の変化に応える必要があるた め、Microsoft は記載されている内容を約束しているわけではありません。この文書の内容は印刷後も正しいとは保障できません。この文章 は情報の提供のみを目的としています。
Microsoft、ActiveX、Windows NT、Windows 2000、Windows Server 2003 は Microsoft Corporation の米国およびその他の国におけ
る登録商標です。
その他、記載されている会社名および製品名は、各社の商標または登録商標です。
はじめに
この自習書では、SQL Server 2005 のレプリケーション機能を紹介します。 この自習書を終えると、一通りのレプリケーションの概念および設定方法を習得することができます。 この自習書で実習を行うために必要な環境は次の通りです。OS
Windows 2000 Professional もしくは Windows 2000 Server もしくは Windows Server 2003 もしくは Windows XP Professionalソフトウェア
SQL Server 2005 Enterprise Edition もしくは SQL Server 2005 Developer Edition
この自 習 書 での 画 面や テ キ ス ト は、 OS が Windows 2000 Professional 、ソフトウェアが SQL Server 2005 Developer Edition - Community Technology Preview 2005 9 月版の構成で記述されています。
目次
1. レプリケーションの概要 ... 5 1.1 レプリケーションの概要 ... 6 1.2 レプリケーションの構成要素 ... 11 2. Oracle を利用した レプリケーション構築 ... 13 2.1 Oracle とのレプリケーション ... 14 2.2 Oracle の設定 ... 15 2.3 SQL Server の設定 ... 27 2.4 レプリケーションの動作確認 ... 46 3. レプリケーションの設定 ... 49 3.1 スナップショット レプリケーションの構築 ... 501. レプリケーションの概要
この章では、SQL Server 2005 が提供するレプリケーションの概要や使用する 単語の説明、レプリケーションの種類などを説明します。1.1 レプリケーションの概要
レプリケーションとは
レプリケーションとは、1 箇所にあるデータベースを複数箇所に分散し、それらデータベース間でデ ータの同期を取ることで、ネットワークのリソースやデータベースの負荷を減らすための仕組みです。 レプリケーションを利用することで、大量のトランザクションが発生する大規模なシステムであっても効 率的にデータ処理を行うことができるようになります。また、複数のサーバーにデータを分散させるこ とで、障害時のバックアップとしても利用することが可能です。SQL Server 2005 では管理ツールの SQL Server Management Studio を使用すれば、データベ ース管理者は GUI によるウィザードにしたがって容易にレプリケーションの設定を行うことができま す。 SQL Server 2005 のレプリケーションは、従来のバージョンと比べ以下の機能が強化されています。 ・ セキュリティ強化 ・ 管理機能の強化 ・ 異種データベースへのレプリケーションの強化 ・ プログラマビリティの強化 ・ Web 経由でのレプリケーションの強化 ・ 拡張性およびパフォーマンス強化
また SQL Server では異種データベースへの接続をサポートしています。SQL Server から Oracle サーバーへデータの同期を取ることも可能です。SQL Server 2005 からは Oracle サーバーをパブ リッシャとするレプリケーションを構築できるようになり、さらにレプリケーションの適用範囲が広がって います。
このように SQL Server 2005 のレプリケーション機能を使うことで、安全でかつ効率的なレプリケート 環境を構築することが可能になります。
SQL Server 2005 のレプリケーション モデル
SQL Server のレプリケーションに関連する用語や考え方は、出版業界をモデルに構成されていま す。パブリッシャ (出版社) がアーティクル (記事) を作成し、それらをパブリケーション (刊行物) と してまとめます。その後、ディストリビュータ (配布者) に対して刊行物を渡し、ディストリビュータから 各サブスクライバ (購読者) へと刊行物を配布します。パブリッシャ
パブリッシャはパブリケーションの管理や発信を行います。パブリッシャではパブリケーションとアーテ ィクルの関係の設定や、データの変更に対する監視などを行います。ディストリビュータ
ディストリビュータはパブリッシャから送られてきたパブリケーションを各サブスクライバに配布します。 配布のタイミングはスケジュールが設定されている場合は、そのスケジュールに基づき各サブスクライ バへと配布が行われます。通常はパブリッシャと同一マシン上にディストリビュータが構築されますが、 別のマシンにディストリビュータを構築することも可能です。サブスクライバ
サブスクライバは発行されたパブリケーション データを受け取る役割を担います。通常は読み取り専 用として、パブリケーション データを受信しますが、レプリケーションの種類によってはサブスクライ バ側からデータを発信することも可能です。 パブリケーション (刊行物) アーティクル (記事) パブリッシャ (出版社) ディストリビュータ (配布者) サブスクライバ (購読者) サブスクライバ (購読者) サブスクライバ (購読者)パブリケーション
パブリケーションはサブスクライバへ発信する際のデータの一単位を表します。新聞や雑誌のように 特定のルールに基づいて記事をまとめた方が情報を管理、配布する際に扱いやすいためです。パ ブリケーションは 1 つ以上のアーティクル (記事) を取りまとめたものとなります。アーティクル
アーティクルはパブリケーションの一部となるデータベース オブジェクトを指します。アーティクルとし て指定できるのは、テーブル、ストアド プロシージャー、ビュー、インデックス付きビュー、ユーザー 定義関数などがあります。 またテーブルの場合、特定の行や特定の列を絞りこんだ状態 (フィルタ) をアーティクルとして指定 することもできます。特定の行を絞り込むフィルタは "行フィルタ"、特定の列を絞り込むフィルタは "列フィルタ"と呼びます。サブスクリプション
サブスクリプションとは、パブリケーション データのコピーを求める動作のことです。サブスクリプショ ンには、プッシュ サブスクリプションとプル サブスクリプションの 2 つのタイプがあります。2 つのサ ブスクリプション タイプを混在させて設定することも可能です。 ・ プッシュ サブスクリプション プッシュ サブスクリプションはパブリッシャがサブスクライバからの具体的な要求がなくても、変 更をサブスクライバに伝達するようなサブスクリプションです。プッシュ サブスクリプションは発生 と同時に変更をリアルタイムに配信したい場合や、パブリッシャによってスケジュールが設定され なければならないときに使用されます。夜間などに各サブスクライバへ一括して配信を行いたい 場合に、プッシュ サブスクリプションが有効です。・ プル サブスクリプション プル サブスクリプションはサブスクライバがパブリッシャに対して具体的な要求を行い、変更を サブスクライバから伝達されるサブスクリプションです。プッシュ サブスクプションとは異なり、デ ータの要求に関してはサブスクライバ側が主導になります。常にネットワーク上に存在しない場 合や、マシンが特定時間のみにしか起動していないなどの条件下において有効です。
レプリケーションの種類
SQL Server 2005 では 3 種類のレプリケーションが提供されています。スナップショット
レプリケーション
スナップショット レプリケーションは最も単純で、基本的なレプリケーションです。スナップショット (パ ブリケーションされるデータをある時点でそのままコピーを行って保存したもの) をサブスクライバへ 一括でデータを配信します。サブスクライバへ配信されるデータは差分ではなくすべてのデータが配 信されます。メリットとしては、他のレプリケーションと比べ監視のための処理が不要なのでプロセッサ のオーバー ヘッドが少なくて済みます。また、配信したいデータが少ない場合にも有効です。 一方、配信するデータによっては大量のネットワーク リソースを必要とする場合もあるため、スナップ ショット レプリケーションにてデータを配信する場合はパブリケーション データをよく吟味する必要 があります。トランザクション
レプリケーション
トランザクション レプリケーションは初回スナップショットをサブスクライバに反映した後、変更や更新、 追加されたデータ (トランザクション) に対して監視を行い、それらトランザクション データのみをサ ブスクライバへ反映させます。 トランザクション単位でデータがまとめられるため、スナップショット レプリケーションに比べてネットワ ーク リソースは少なくて済みます。また、データへの変更が頻繁な場合に頻繁にレプリケートを行う 事で、常にパブリッシャ データと同一な状態を維持できます。ただし、ネットワークの接続性を良好 な状態で保つ必要があります。また、トランザクションの監視が定期的に必要となるため、パブリッシ ャの負荷は高くなります。 トランザクション レプリケーションでは以下の 3 つの方式を提供しています。 ・ サブスクライバのすべてが読み取り専用となる方式 ・ サブスクリプション更新をサポートした方式 ・ すべてのサーバーがパブリッシャ、サブスクライバを兼任する方式 (ピア ツー ピア方式)マージ レプリケーションは、ポータブル デバイスなどのサブスクライバでデータ更新を行い、それら の更新をマージできるレプリケーションです。サブスクライバ側で更新があった場合、通常はサブスク ライバからパブリッシャへ変更点をアップロードし、次にパブリッシャからサブスクライバへ更新内容を ダウンロードします。 ただし、複数のサブスクライバで同一テーブルを変更すると競合が発生してしまうため、マージレプリ ケーションではそういった競合に対して、特定のルールや競合回避モジュールを使用して競合を回 避する仕組みを提供しています。
1.2 レプリケーションの構成要素
ここでは SQL Server のレプリケーションを実際に機能させるレプリケーション エージェントと更新可能なサブスクライ バについて説明します。レプリケーション
エージェント
SQL Server 2005 ではレプリケーション エージェントとして以下のものが用意されています。 ・ SQL サーバー エージェント SQL サーバー エージェントは、レプリケーションにて使用するエージェントを管理するための簡 単な方法を提供します。SQL サーバー エージェントはレプリケーションの外側からコントロール および監視を行います。 ・ スナップショット エージェント スナップショット エージェントはすべてのタイプのレプリケーションで使用されます。準備した初 期データ ファイルやパブリッシャするテーブルを、スナップショット ファイルとしてディストリビュ ータに保持し、同期に関連する情報をディストリビューション データベースへ記録します。スナ ップショット エージェントはディストリビュータ上で動作します。 ・ ログリーダー エージェント ログリーダー エージェントはトランザクション レプリケーション時に使用されます。 ログリーダー エージェントはパブリケーションのトランザクション ログをチェックし、レプリケーショ ン用の印がついているデータをディストリビューション データベースへコピーします。ログリーダ ー エージェントはディストリビュータ上で動作します。 ・ ディストリビューション エージェント ディストリビューション エージェントはスナップ レプリケーションとトランザクション レプリケーショ ンで使用されます。このエージェントはディストリビューション データベース上のスナップ ファイ ル等のデータをサブスクライバに反映します。プル サブスクリプション使用時にはサブスクライ バ上で、プッシュ サブスクリプション使用時にはディストリビュータ上で動作します。 ・ マージ エージェント マージ エージェントはマージ レプリケーションで使用されます。それぞれのマージ サブスクリ プションは、パブリッシャとサブスクライバでマージ エージェントを持ち、データの変更を行いま す。プル サブスクリプション使用時にはサブスクライバ上で、プッシュ サブスクリプション使用時 にはディストリビュータ上で動作します。キューリーダー エージェントはトランザクション レプリケーションのキュー更新オプション指定時 に使用されます。このエージェントはパブリッシャにサブスクライバで行われた変更をキューとし て移動させます。 パブリッシャ ディストリビュータ サブスクライバ パブリケーション データベース トランザクション ログ スナップショット エージェント ログリーダー エージェント キューリーダー エージェント ディストリビューション エージェント スナップショット フォルダ ディストリビューション データベース マージエージェント サブスクリプション データベース パブリッシャ ディストリビュータ サブスクライバ パブリケーション データベース トランザクション ログ スナップショット エージェント ログリーダー エージェント キューリーダー エージェント ディストリビューション エージェント スナップショット フォルダ ディストリビューション データベース マージエージェント サブスクリプション データベース
サブスクライバによる更新
トランザクション レプリケーションでは、サブスクライバによるデータの更新を行うことができます。サ ブスクライバによる更新を行う場合、2 種類のサブスクライバを選択することができます。 ・ 即時更新サブスクライバ サブスクライバでのデータ更新を即座にパブリッシャへ反映します。この時、サブスクライバとパ ブリッシャはお互い通信可能な状態である必要があります。また更新を行う場合は 2 フェーズ コミットを使用します。 ・ キュー更新サブスクライバ サブスクライバでのデータ更新をパブリッシャへ反映させる場合、キューに 1 度溜めてから更新 を行います。この時、サブスクライバとパブリッシャはお互い通信可能な状態である必要はありま せん。 2 つの種類のサブスクライバはどちらか片方を選択することも、両方を選択することも、可能です。多 数のサブスクライバで同一箇所の更新が行われた場合、データの衝突が発生しますが、パブリッシャ 作成時に衝突の解決ポリシーを設定しておくことで、自動的に解決されます。 ※プッシュ サブスクリプションのみ表示しています。2. Oracle を利用した
レプリケーション構築
SQL Server 2005 では、Oracle をパブリッシャとするレプリケーションが可能にな りました。この章では Oracle をパブリッシャとするレプリケーション環境を構築し ます。はじめに Oracle 10g のインストールを行い、その後データベースの構築 やバブリッシャの設定を行います。2.1 Oracle とのレプリケーション
ここでは Oracle をパブリッシャとするレプリケーションの概要と構築手順について説明します。Oracle をパブリッシャとするレプリケーション
SQL Server 2005 では、Oracle パブリッシャをレプリケーションに含めることができるようになりました。 Oracle 8.0.5 以降のバージョンが使用でき、スナップショット レプリケーションおよびトランザクション レプリケーションを構築することが可能です。 今回は Oracle 10g をパブリッシャ、SQL Server 2005 をサブスクライバとするレプリケーション環境 を構築します。構築は以下の手順で行います。 Oracle 側の設定 ・ Oracle 10g のインストール ・ Oracle データベースの構築 ・ Oracle パブリッシャ用ユーザーの作成 SQL Server 側の設定 ・ Oracle パブリケーション作成 ・ サブスクリプションの作成 ・ レプリケーションの動作確認2.2 Oracle の設定
ここではパブリッシャとして使用する Oracle Database 10g のインストールとデータベース構築、そしてパブリッシャ ユーザーの作成について説明します。
Oracle Database 10g のインストール
Oracle Database 10g をインストールするには、Oracle Universal Installer を使用します。ここでは その操作方法と Oracle Database 10g のインストールについて説明します。
1.
Oracle Database 10g CD-ROM を挿入し表示されるメニュー画面で、[インストールを開始] をクリックし、 Oracle Universal Installer を起動します。
Oracle のインストーラー
2.
[Oracle Database 10g インストールへようこそ] 画面が表示されます。[標準インストール] をクリッ クし、[初期データベースの作成] チェック ボックスをオンにします。表 2.2.1 標準インストールでの設定内容 項目 設定値 グローバル・データベース名 SELFORA データベース・パスワード selfora パスワードの確認 selfora
4.
[次へ] をクリックします。5.
インストールの準備処理が開始されます。既存データベースのアップグレード すでに Oracle がインストールされている場合、[既存データベースのアップブレード]画面が表示されます。 この画面でアップグレードを行うかどうかを選択することができます。
6.
準備処理が完了するとインストールのサマリーが表示されます。 ここでインストールする Oracle Database の設定、言語、領域、製品についての情報が確認でき ます。内容を確認して [インストール] をクリックします。7.
インストールが開始されます。Oracle Database 10g の構成
製品のインストールが完了すると、Oracle の構成ツールである Configuration Assistant が自動 的に起動し、Oracle Net、iSQL*Plus、Oracle Database の順に、データベースを稼動させる上で 必要となる各ツールの構成が行われます。
Oracle の構成ツール
Oracle のソフトウェアを構成する際に使用されるのが Configuration Assistant です。
単体で起動する場合には [スタート] メニュー- [すべてのプログラム] - [Oracle – <ORACLE_HOME>] - [Configuration and Migration Tools] - [Database Configuration Assistant] をクリックします。
2. Oracle Net、iSQL*Plus の構成が完了すると Database Configuration Assistant により、自動 的に初期データベースの作成が行われます。
3. データベースの作成が完了すると次の画面が表示されます。
ントがロックされています。Scott ユーザーのロックを解除しましょう。 [パスワード管理...] をクリックしてください。 5. ロックされているユーザーの一覧が表示されます。 Scott ユーザーのアカウントのロックを解除して [OK] をクリックします。 6. [インストールの終了] 画面が表示されます。[終了] をクリックします。 確認画面が表示されたら [はい] をクリックします。
パブリッシュ用ユーザーの構成
Oracle とレプリケーションをする場合には、Oracle Database でパブリッシュ用ユーザーを構成す る必要があります。ここではその構成方法について説明します。 1. [スタート] メニューの[すべてのプログラム] - [アクセサリ] から [コマンド プロンプト] をクリックし、 コマンド プロンプトを起動します。 2. SQL*Plus でユーザー作成用のスクリプトを実行します。スクリプトは SQL Server のインストール フォルダ¥MSSQL¥Install¥oracleadmin.sql を使用します。次のコマンドを入力してください。sqlplus system/selfora @”C:¥Program Files¥Microsoft SQL Server¥MSSQL.1¥MSSQL¥Install¥oracleadmin”
ここでは SQL Server が C:¥Program Files¥Microsoft SQL Server¥MSSQL.1 にインストールさ れたものとしてコマンドを記述しています。途中で改行されていますが実際には 1 行 で入力しま す。 3. コマンドを実行するとユーザーの構成に必要な情報の入力を要求されるので、表 2.2.2 の情報を 入力します。 表 2.2.2 パブリッシュ用ユーザー構成情報 項目 設定値
User to create for replication selfora
Replication user password selfora (パスワードは入力しても表示されません) Default tablespace users
5. 次に作成したユーザーでパブリッシュに必要なオブジェクトを作成します。ユーザーの作成と同様 に提供されているスクリプト instorcl.sql を実行します。次のコマンドを入力してください。 作成したユーザー selfora で接続します。
sqlplus selfora/selfora @”C:¥Program Files¥Microsoft SQL Server¥MSSQL.1¥MSSQL¥Install¥instorcl”
6. コマンドを実行するとオブジェクトの作成処理が開始されます。このスクリプトではオブジェクトの削
除を行っています。初回は削除対象のオブジェクトが存在しないためエラーが表示されますが、 特に問題はありませんので無視して進めてください。
7. SQL*Plus が終了します。オブジェクトの作成が完了しました。
8. パブリッシュを実行するためには、パブリッシュ対象のテーブルへの参照権限が必要となります。
権限を付与します。次のコマンドで SQL*Plus を起動します。
9. パブリッシュ用ユーザーがすべてのテーブルを参照できるように、次のコマンドを入力します。
GRANT SELECT ANY TABLE TO SELFORA;
2.3 SQL Server の設定
SQL Server ではパブリケーションとサブスクリプションの設定を行います。
パブリケーションの作成
ここでは Oracle バプリッシャとローカル パブリケーションを関連付けるパブリケーションの作成につ いて説明します。
1. SQL Server Management Studio を起動し、[オブジェクト エクスプローラ] のコンソール ツリー から [レプリケーション] - [ローカルパブリケーション] を右クリックし、ショートカット メニューから [Oracle パブリケーション] をクリックします。
3. [ディストリビュータ] 画面が表示されます。[<コンピュータ名> を独自のディストリビュータとする] をクリックし、[次へ] をクリックします。この画面はディストリビュータの設定がすでに終了している 場合、表示されません。
4. [SQL Server エージェントの起動] 画面では、 [はい、SQL Server エージェントサービスを自動 的に開始するように構成します] をクリックし、[次へ] をクリックします。
5. [スナップショット フォルダ] 画面では、[スナップショット フォルダ] にパブリッシャとサブスクライバ が共にアクセスすることができるフォルダを指定し、[次へ] をクリックします。
6. Oracle パブリッシャを選択する画面が表示されます。
7. ディストリビュータが構成されていない場合、ディストリビュータを構成するかどうかをたずねられま す。[はい] をクリックします。
8. [ディストリビュータのプロパティ] 画面が表示されます。
9. [サーバーへの接続] 画面が表示されます。 表 2.2.3 を参照して情報を入力し [接続] をクリックします。 表 2.2.3 サーバー接続情報 項目 設定値 サーバーインスタンス <Oracle インスタンス名> 認証 Oracle 標準認証 ログイン selfora パスワード selfora 10. 接続に成功すると、Oracle パブリッシャの設定が追加されます。 [OK] をクリックします。
11. [パブリケーション新規作成ウィザード] 画面の [Oracle パブリッシャ] から先ほど追加したパブ リッシャをクリックし、[次へ] をクリックします。 12. パブリケーションの種類を選択する画面が表示されるので、ここで [パブリケーションの種類] か ら [トランザクション パブリケーション] をクリックし、[次へ] をクリックします。 パブリケーションの種類 パブリケーションにはスナップショット パブリケーションとトランザクション パブリケーションの 2 つがあります。
13. アーティクルを選択する画面が表示されます。[パブリッシュするオブジェクト] から [EMP (SCOTT)] チェック ボックスをオンにし、[次へ] をクリックします。 アーティクル レプリケーションするテーブルやフィルタなどのデータ抽出定義のことを ”アーティクル” と呼びます。 14. テーブル行のフィルタを選択する画面が表示されます。 今回はフィルタの設定は行わないので、[次へ] をクリックします。
スクリプションを初期化できるようにそのスナップショットを保持する] チェック ボックスをオンにし、 [次へ] をクリックします。 16. エージェントのセキュリティを設定する画面が表示されます。 [セキュリティ設定] をクリックします。 17. スナップショットエージェントのセキュリティを設定する画面が表示されます。 [SQL Server エージェント サービスのアカウントで実行する] をクリックし [OK] をクリックしま す。
18. [エージェント セキュリティ] 画面に戻ります。[次へ] をクリックします。
19. ウィザードのアクションを設定する画面が表示されます。[ウィザード終了時の処理] の [パブリケ
20. ウィザードの完了画面が表示されます。
[パブリケーション名] に 「selfora」 と入力して、[完了] をクリックします。
22. ウィザードは作成処理と同時にスナップショット エージェントのスケジュールを設定します。 SQL Server エージェントが開始されていない場合は警告が表示されます。この場合 SQL Server エ ージェントを起動して、手順を進めてください。サブスクリプションの作成時にスナップショット エー ジェントが開始されます。 23. 作成処理がすべて成功したら、[閉じる] ボタンをクリックします。 パブリケーションの作成が完了しました。
サブスクリプションの作成
ここではまずサブスクリプション データベースを作成し、その後にパブリケーションとサブスクリプショ ンを関連付ける、サブスクリプションの作成について説明します。
1. SQL Server Management Studio の [オブジェクト エクスプローラ] のコンソール ツリーから [データベース] を右クリックし、ショートカット メニューから [新しいデータベース] をクリックしま す。
2. [新しいデータベース] 画面が表示されます。ここで [データベース名] に「SELFORA」と入力し、
[OK] をクリックします。データベース SELFORA が作成されます。
3. SQL Server Management Studio の [オブジェクト エクスプローラ] のコンソール ツリーから [レプリケーション] - [ローカルサブスクリプション] を右クリックし、ショートカット メニューから [新し いサブスクリプション] をクリックします。
4. [サブスクリプションの新規作成ウィザード] 画面が表示されます。 [次へ] をクリックします。 5. パブリケーションを選択する画面が表示されます。 [データベースとパブリケーション] から selfora をクリックし、[次へ] をクリックします。 6. ディストリビューション エージェントの場所を設定する画面が表示されます。 [ディストリビュータ <コンピュータ名> ですべてのエージェントを実行する (プッシュ サブスクリプ ション) ] がチェックされていることを確認し、[次へ] をクリックします。
7. サブスクライバを選択する画面が表示されます。[サブスクライバ データベースとサブスクリプショ ン データベース] の [<コンピュータ名>] の行の [サブスクリプション データベース] で [SELFORA] をクリックし [次へ] をクリックします。
8. ディストリビューション エージェントのセキュリティを設定する画面が表示されます。
[サブスクリプションのプロパティ] から [<コンピュータ名>] の行の [….] ボタンをクリックします。
9. [ディストリビューション エージェント セキュリティ] ダイアログ ボックスが表示されます。 表 2.3.2 にしたがって情報を入力し、[OK] をクリックします。
表 2.3.2 ディストリビューション エージェント セキュリティ設定 項目 設定値 実行アカウント SQL Server エージェント サービスのアカウントで実行する。 ディストリビュータに接続 プロセスのアカウントを借用する。 サブスクライバに接続 次の SQL Server ログインを使用する。 ログイン sa パスワード (sa のパスワード) パスワードの確認入力 (sa のパスワード) 10. ディストリビューション エージェント セキュリティの画面に戻ります。[次へ] をクリックします。
11. 同期スケジュールの画面が表示されます。 [エージェント スケジュール] の [サブスクライバ] が [<コンピュータ名>] の行の [エージェント スケジュール] が [連続実行する] になっていることを確認し、[次へ] をクリックします。 12. サブスクリプションの初期化画面が表示されます。[サブスクリプションのプロパティ] の [サブスク ライバ] が [<コンピュータ名>] の行の [初期化] がチェックされていること、[次の場合に初期化] が [今すぐ] になっていることを確認し、[次へ] をクリックします。
13. ウィザードのアクションを設定する画面が表示されます。
[ウィザード終了時の処理] の [サブスクリプションを作成する] チェック ボックスがオンになって いることを確認し、[次へ] をクリックします。
15. サブスクリプションの作成処理が開始され、進捗が表示されます。処理が成功したら[閉じる] をク リックします。サブスクリプションの作成が完了します。
2.4 レプリケーションの動作確認
Oracle と SQL Server の設定が連携され、レプリケーションが正常に動作しているかどうかの確認を行います。
動作確認
ここでは Oracle の EMP テーブルにレコードを挿入し、レプリケーションにより SQL Server に反 映されることを確認します。
1. SQL Server Management Studio の [オブジェクト エクスプローラ] のコンソール ツリーから、[<コ ンピュータ名>] - [データベース] の [SELFORA] を開きます。[テーブル] から [dbo.EMP] を右ク リックし、ショートカット メニューで [テーブルを開く] をクリックし、テーブルを開きます。テーブルに 格納されているデータが表形式で表示されるので 14 件のレコードがあることを確認します。確認し たらテーブルを閉じます。
2. [オブジェクト エクスプローラ] のコンソール ツリーから、[レプリケーション] - [ローカル パブリケーシ ョン] を開きその中の [selfora] を右クリックし、コンテキストメニューで [ログリーダー エージェント] をクリックします。ログリーダー エージェントの状態が表示されるので、[状態] に [使用できるレプリ ケートされたトランザクションが存在しません。] と表示されていることを確認します。画面はこのまま 閉じずに表示しておきます。 3. SQL*Plus で Oracle に接続します。次のコマンドを入力します。 sqlplus scott/tiger 4. Oracle に接続されたら、EMP テーブルに 1 件のレコードを挿入します。 次のコマンドを入力してください。
INSERT INTO EMP (EMPNO, ENAME, DEPTNO) VALUES (1000, ‘selfuser’, 20); COMMIT;
5. 先ほど表示したログリーダー エージェントの状態を表示します。ここで [状態] に [1 個のトランザク ションが 1 個のコマンドと共に配信されました。] と表示されていることを確認します。
6. [dbo.EMP] テーブルを再度開きます。SQL*Plus で挿入したレコードが表示され、レコードが 15
件になっていることを確認します。1 件のトランザクションが正常に Oracle から SQL Server へ配 信されたことが確認できます。
3. レプリケーションの設定
この章ではレプリケーションの構築方法について説明します。3.1 スナップショット レプリケーションの構築
ここではスナップショット レプリケーションの構築手順を説明します。前提条件
スナップショット レプリケーションを構築するにあたって、SQL Server インスタンスがパブリッシャ ディ ストリビュータ用に 1 つ、サブスクライバ用に 1 つ、計 2 つ必要となります。今回のレプリケーション 構築では [既定のインスタンス] でインストールした [<コンピュータ名>] をパブリッシャ ディストリビュ ータに、 [名前付きインスタンス] で作成した [<コンピュータ名>¥SUBSCRIBER] をサブスクライバと して設定します。上の画面はインスタンスを 2 つ作成した後、 SQL Server Management Studio を起動し 2 つのイ ンスタンスに接続している画面です。
パブリケーション、ディストリビューションの設定
それでは、実際にレプリケーションを構築しましょう。パブリケーションとディストリビューション、次にサ ブスクリプションの順に設定を行います。
1.
SQL Server Management Studio を起動します。2.
[オブジェクト エクスプローラ] のコンソール ツリーから [<コンピュータ名>] ‐ [レプリケーショ ン] を順番に開き、 [ローカル パブリケーション] を右クリックしてショートカット メニューから [新 しいパブリケーション] をクリックします。[パブリケーションの新規作成ウィザード] が表示されま す。3.
[ディストリビュータ] 画面では、 [<コンピュータ名> を独自のディストリビュータとする] をクリック し、[次へ] をクリックします。この画面はディストリビュータの設定がすでに終了している場合、表 示されません。パブリッシングとディストリビューションの削除 パブリッシャを削除したい場合や、再度ディストリビュータを設定したい場合はこれらを削除する必要があります。その 場合、[オブジェクト エクスプローラ] のコンソール ツリーの [<コンピュータ名>] ‐ [レプリケーション] を右クリックし、 表示されるショートカット メニューから [パブリッシングとディストリビューションの無効化] をクリックし、画面の指示にし たがい削除します。
4.
[SQL Server エージェントの起動] 画面では、 [はい、SQL Server エージェントサービスを自動 的に開始するように構成します] をクリックし、[次へ] をクリックします。5.
[スナップショット フォルダ] 画面では、[スナップショット フォルダ] にパブリッシャとサブスクライ バが共にアクセスすることができるフォルダを指定し、[次へ] をクリックします。6.
[ パ ブ リ ケ ー シ ョ ン デ ー タ ベ ー ス ] 画 面 で は 、 [ デ ー タ ベ ー ス ] ボ ッ ク ス の 一 覧 で [AdventureWorks] をクリックし、[次へ] をクリックします。7.
[パブリケーションの種類] 画面では [スナップショット パブリケーション] をクリックし、[次へ] を クリックします。8.
[アーティクル] 画面では、必要な [パブリッシュするオブジェクト] のチェック ボックスをオンにし ます。ここではテーブル内の [Address]、[AddressType]、[AWBuildVersion] の 3 つのチェッ ク ボックスをオンにし、[次へ] をクリックします。9.
アーティクルに対して問題がある場合には [アーティクルの問題点] 画面が表示されます。内容10.
[テーブル行のフィルタ選択] 画面では、そのまま [次へ] をクリックします。 データのフィルタリング スナップショット レプリケートの場合など、大量のデータがパブリッシュされることになります。 特定のアーティクルに対してはできるだけ最小限のデータをパブリッシュしたい場合、フィルタを使用することができま す。11.
[スナップショット エージェント] 画面が表示されます。[スナップショットをすぐに作成し、サブスク リプションを初期化できるようにそのスナップショットを保持する] チェック ボックスをオンにし、 [次へ] をクリックします。12.
[エージェント セキュリティ] 画面が表示されます。[セキュリティ設定] をクリックし、[スナップショ ット エージェントのセキュリティ] ダイアログ ボックスで [SQL Server エージェント サービスのア カウントで実行する] をクリックし [OK] をクリックします。[エージェント セキュリティ] 画面に戻っ たら [次へ] をクリックします。13.
[ウィザードのアクション] 画面が表示されます。[パブリケーションを作成する] チェック ボックス がオンになっていることを確認し、[次へ] をクリックします。14.
[ウィザードの完了] 画面が表示されます。サブスクリプションの設定
サブスクリプションにはプッシュ サブスクリプションとプル サブスクリプションの 2 つがあります。ここ ではプッシュ サブスクリプションの設定に関して説明を行います。
1.
SQL Server Management Studio を起動し、[オブジェクト エクスプローラ] のコンソール ツリー を [<コンピュータ名>] ‐ [レプリケーション] ‐ [ローカル パブリケーション] の順番で開き、目的 のパブリケーションを右クリックして、ショートカット メニューから [新しいサブスクリプション] をクリ ックします。3.
[パブリケーション] 画面では、現在設定されているパブリッシャをクリックします。[パブリッシャ] ボ ッ ク ス に て 使 用 す る パ ブ リ ッ シ ャ を ク リ ッ ク し 、 [ デ ー タ - ベ ー ス と パ ブ リ ケ ー シ ョ ン ] 内 の [AdventureWorksPublish] をクリックして、[次へ] をクリックします。4.
[ディストリビューション エージェントの場所] 画面では、 [ディストリビュータ <コンピュータ名> ですべてのエージェントを実行する (プッシュ サブスクリプション)] をクリックし、[次へ] をクリッ クします。5.
[サブスクライバ] 画面では、対象となるサブスクライバを設定します。[サブスクライバの追加] - [SQL Server サブスクライバの追加] をクリックし、[サーバーへの接続] 画面を使用して接続を 行います。接続が完了すると [<コンピュータ名>¥SUBSCRIBER] が追加されますので、[サブスク リプション データベース] にて [新しいデータベース] をクリックします。[新しいデータベース] 画面が表示されますので、データベース名に「AdventureWorksSubscribe」を入力し [OK] をク リックします。[サブスクライバ] 画面に戻ったら、[次へ] をクリックします。6.
[ディストリビューション エージェント セキュリティ] 画面では、対象となるサブスクライバの右端の 列の [….] をクリックします。アカウント指定の画面では [SQL Server エージェント サービスの アカウントで実行する] をクリックし、[OK] をクリックします。[ディストリビューション エージェント セキュリティ] 画面に戻ったら [次へ] をクリックします。7.
[同期スケジュール] 画面では、[サブスクライバ] 欄に [<コンピュータ名>¥SUBSCRIBER] が設 定されていることを確認し、対象のサブスクライバの [エージェント スケジュール] にて [連続実 行する] をクリックし、[次へ] をクリックします。8.
[サブスクリプションの初期化] 画面では、[次の場合に初期化] の列のリストボックスから [初回9.
[ウィザードのアクション] 画面では、[サブスクリプションを作成する] チェック ボックスがオンにな っていることを確認し、[次へ] をクリックします。10.
[ウィザードの完了] 画面にて、ウィザードで設定した内容が表示されます。11.
[オブジェクト エクスプローラ] のコンソール ツリーから [SQL Server エージェント] を右クリッ クし、ショットカット メニューの [開始] をクリックします。スナップショットの配信
これまでの設定でスナップショット レプリケーションの設定が終了しましたので、実際にスナップショ ットを配信してみましょう。
1.
SQL Server Management Studio を起動し、[オブジェクト エクスプローラ] のコンソール ツリ ーを [<コンピュータ名>¥SUBSCRIBER] ‐ [データベース] ‐ [AdventureWorksSubscribe] - [テーブル] の順番で開きます。まだ、スナップショット配信を行っていないため、サブスクライバ側 のテーブルには何も表示されていません。2.
[ローカル パブリケーション] - [AdventureWorksPublish] を右クリックして、ショートカット メニ ューから [スナップショット エージェントの状態表示] をクリックします。3.
[スナップショット エージェントの状態表示] 画面が表示されます。[開始] をクリックします。エージェントの実行が終了したら [閉じる] をクリックします。
4.
[<コンピュータ名>¥SUBSCRIBER] ‐ [データベース] ‐ [AdventureWorksSubscribe] ‐ [テ ーブル] の順番で開き、テーブルの内容を確認しましょう。スナップショット配信が行われているこ とが確認できます。スケジュール設定に関して
今回は手動でスナップショット エージェントを動作させていますが、スケジューラを使用して配信を行う ことも多いと思います。ここではスケジュールを設定して配信する方法について説明します。