SQL Server 以外のサブスクライバーのサブスクリプションを作成する方法 (SQL Server Management Studio)
トランザクション レプリケーションおよびスナップショット レプリケーションでは、Microsoft SQL Server 以外のサブスクライバーへのデータのパブリッシュをサポートしています。 SQL Server 以外のサブスクライバーのサブスクリプションを作成するには、以下の操作を実行します。
SQL Server ディストリビューターに、適切なクライアント ソフトウェアおよび OLE DB プロバイダーをインストールし、これらを構成します。 詳細については、「Oracle サブスクライバー」および「IBM DB2 サブスクライバー」を参照してください。
パブリケーションの新規作成ウィザードを使用して、パブリケーションを作成します。 パブリケーションの作成の詳細については、「パブリケーションを作成してアーティクルを定義する方法 (SQL Server Management Studio)」および「Oracle データベースからパブリケーションを作成する方法 (SQL Server Management Studio)」を参照してください。 パブリケーションの新規作成ウィザードで、以下のオプションを指定します。
[パブリケーションの種類] ページで、[スナップショット パブリケーション] または [トランザクション パブリケーション] を選択します。
[スナップショット エージェント] ページで、[スナップショットをすぐに作成する] チェック ボックスをオフにします。
SQL Server 以外のサブスクライバーに対してパブリケーションが有効になったら、スナップショットを作成し、スナップショット エージェントが SQL Server 以外のサブスクライバーに適したスナップショットおよび初期化スクリプトを生成することを確認します。
[パブリケーションのプロパティ - <PublicationName>] ダイアログ ボックスを使用して、SQL Server 以外のサブスクライバーのパブリケーションを有効にします。 この手順の詳細については、このトピック内で説明します。 [パブリケーションのプロパティ] ダイアログ ボックスの詳細については、「[パブリケーションのプロパティ - <パブリケーション>]」を参照してください。
サブスクリプションの新規作成ウィザードを使用して、サブスクリプションを作成します。 この手順の詳細については、このトピック内で説明します。
(省略可能) サブスクライバー側のテーブルを保持するには、pre_creation_cmd アーティクル プロパティを変更します。 この手順の詳細については、このトピック内で説明します。
パブリケーションのスナップショットを生成します。 この手順の詳細については、このトピック内で説明します。
サブスクリプションを同期します。 詳細については、「プッシュ サブスクリプションの同期をとる方法 (SQL Server Management Studio)」を参照してください。
注 |
---|
この手順は、Microsoft SQL Server 2005 以降を実行するパブリッシャーに該当します。 |
SQL Server 以外のサブスクライバーのパブリケーションを有効にするには
SQL Server Management Studio でパブリッシャーに接続し、サーバー ノードを展開します。
[レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。
パブリケーションを右クリックし、[プロパティ] をクリックします。
[サブスクリプション オプション] ページで、[SQL Server 以外のサブスクライバーを許可] オプションに対して [True] の値を選択します。 このオプションを選択した場合、パブリケーションと SQL Server 以外のサブスクライバーとの互換性を確保するために、プロパティの数が変更されます。
注 [True] を選択すると、pre_creation_cmd アーティクル プロパティの値が 'drop' に設定されます。 この設定では、アーティクルのテーブル名と一致するテーブルがサブスクライバーにある場合、レプリケーションによってそのテーブルが削除されます。 サブスクライバーにある既存のテーブルを保持するには、アーティクルごとに sp_changearticle ストアド プロシージャを使用し、次のように pre_creation_cmd の値に 'none' を指定します。sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'
[OK] をクリックします。パブリケーションの新しいスナップショットを作成するように要求されます。 この時点で作成しない場合は、次に示す作成手順を後で使用してください。
SQL Server 以外のサブスクライバーのサブスクリプションを作成するには
[レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。
適切なパブリケーションを右クリックして、[新しいサブスクリプション] をクリックします。
[ディストリビューション エージェントの場所] ページで、[ディストリビューター <Distributor> ですべてのエージェントを実行する] が選択されていることを確認します。 SQL Server 以外のサブスクライバーは、サブスクライバーでのエージェントの実行をサポートしていません。
[サブスクライバー] ページで、[サブスクライバーの追加] をクリックし、次に [SQL Server 以外のサブスクライバーの追加] をクリックします。
[SQL Server 以外のサブスクライバーの追加] ダイアログ ボックスで、サブスクライバーの種類を選択します。
[データ ソース名] に値を入力します。
Oracle の場合、これは構成した Transparent Network Substrate (TNS) 名です。
IBM の場合は、任意の名前にすることができます。 通常は、サブスクライバーのネットワーク アドレスを指定します。
この手順で入力したデータ ソース名と手順 9. で指定した資格情報は、このウィザードでは検証されません。 これらは、サブスクリプションに対してディストリビューション エージェントが実行されるまで、レプリケーションで使用されません。 クライアント ツール (Oracle の場合には sqlplus など) を使用してサブスクライバーに接続することにより、すべての値がテストされていることを確認します。 詳細については、「Oracle サブスクライバー」および「IBM DB2 サブスクライバー」を参照してください。
[OK] をクリックします。これで、ウィザードの [サブスクライバー] ページで、サブスクライバーが [サブスクライバー] 列に表示され、読み取り専用の [(既定の転送先)] が [サブスクリプション データベース] 列に表示されます。
Oracle の場合、1 つのサーバーに 1 つのデータベースしか作成できないため、データベースを指定する必要はありません。
IBM DB2 の場合、データベースは DB2 接続文字列の Initial Catalog プロパティで指定されます。DB2 接続文字列は、後述する [追加の接続オプション] フィールドに入力できます。
[ディストリビューション エージェント セキュリティ] ページで、サブスクライバーの横のプロパティ ボタン ([...]) をクリックし、[ディストリビューション エージェント セキュリティ] ダイアログ ボックスにアクセスします。
[ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、以下の操作を行います。
[プロセス アカウント]、[パスワード]、および [パスワードの確認入力] フィールドで、ディストリビューション エージェントの実行、およびディストリビューターへのローカル接続に使用される Microsoft Windows アカウントおよびパスワードを入力します。
アカウントには、ディストリビューション データベースの固定データベース ロール db_owner のメンバーであること、パブリケーション アクセス リスト (PAL) のメンバーであること、スナップショット共有での読み取り権限、および OLE DB プロバイダーのインストール ディレクトリでの読み取り権限など、最小限の権限が必要です。 PAL の詳細については、「パブリッシャのセキュリティ確保」を参照してください。
[サブスクライバーに接続] の、[ログイン]、[パスワード]、および [パスワードの確認入力] フィールドで、サブスクライバーへの接続に使用するログインとパスワードを入力します。 このログインは、あらかじめ構成され、サブスクリプション データベースでオブジェクトを作成できる十分な権限を持っている必要があります。
[追加の接続オプション] フィールドで、接続文字列の形式でサブスクライバーの接続オプションを指定します (Oracle では追加オプションは必要ありません)。 各オプションは、セミコロンで区切る必要があります。 以下に、DB2 接続文字列の例を示します (読みやすいように改行しています)。
Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252; PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL; Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT; Persist Security Info=False;Connection Pooling=True;
文字列のほとんどのオプションは構成している DB2 サーバー固有の値になりますが、Process Binary as Character オプションは、常に False に設定する必要があります。 サブスクリプション データベースを識別するには、Initial Catalog オプションに値を入力する必要があります。
[同期スケジュール] ページで、[エージェント スケジュール] メニューからディストリビューション エージェントのスケジュールを選択します (スケジュールは通常、[連続実行する] です)。
[サブスクリプションの初期化] ページで、サブスクリプションを初期化するかどうか、および初期化する場合はいつ行うのかを指定します。
すべてのオブジェクトを作成し、サブスクリプション データベースに必要なすべてのデータを追加した場合にのみ、[初期化] チェック ボックスをオフにします。
このウィザードが完了した後に、ディストリビューション エージェントからサブスクライバーへスナップショット ファイルを転送するには、[次の場合に初期化] 列のドロップダウン リスト ボックスから [今すぐ] を選択します。 スケジュールされた次の実行時間に、エージェントからファイルを転送するには、[初回同期時] を選択します。
[ウィザードのアクション] ページで、必要に応じてサブスクリプションのスクリプトを作成します。 詳細については、「レプリケーションのスクリプト作成」を参照してください。
サブスクライバー側のテーブルを保持するには
- 既定では、SQL Server 以外のサブスクライバーに対してパブリケーションを有効にすると、pre_creation_cmd アーティクル プロパティが 'drop' に設定されます。 この設定では、アーティクルのテーブル名と一致するテーブルがサブスクライバーにある場合、レプリケーションによってそのテーブルが削除されます。 サブスクライバーにある既存のテーブルを保持するには、アーティクルごとに sp_changearticle ストアド プロシージャを使用し、次のように pre_creation_cmd の値に 'none' を指定します。 sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'
パブリケーションのスナップショットを生成するには
[レプリケーション] フォルダーを展開し、[ローカル パブリケーション] フォルダーを展開します。
パブリケーションを右クリックし、[スナップショット エージェントの状態の表示] をクリックします。
[スナップショット エージェントの状態の表示 - <Publication>] ダイアログ ボックスで [開始] をクリックします。
スナップショット エージェントによるスナップショットの生成が完了すると、"[100%] 17 個のアーティクルのスナップショットが生成されました。" などのメッセージが表示されます。