SQL Server 以外のサブスクライバのサブスクリプションを作成する方法 (SQL Server Management Studio)
更新 : 2006 年 12 月 12 日
トランザクション レプリケーションおよびスナップショット レプリケーションでは、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 個のアーティクルのスナップショットが生成されました。" などのメッセージが表示されます。
参照
概念
その他の技術情報
SQL Server 以外のサブスクライバに対するサブスクリプションを作成する方法 (レプリケーション Transact-SQL プログラミング)