SQL Server 以外のサブスクライバーのサブスクリプションの作成
このトピックでは、SQL Server Management Studioまたは Transact-SQL を使用して、SQL Server 2014 でSQL Server以外のサブスクライバーのサブスクリプションを作成する方法について説明します。 トランザクション レプリケーションとスナップショット レプリケーションでは、SQL Server以外のサブスクライバーへのデータの発行がサポートされます。 サポートされるサブスクライバー プラットフォームの詳細については、「 Non-SQL Server Subscribersを使用して、SQL Server 以外のサブスクライバーのサブスクリプションを作成する方法について説明します。
このトピックの内容
SQL Server 以外のサブスクライバーのサブスクリプションを作成するために使用するもの:
SQL Server Management Studio を使用する
SQL Server以外のサブスクライバーのサブスクリプションを作成するには:
SQL Server ディストリビューターに、適切なクライアント ソフトウェアおよび OLE DB プロバイダーをインストールし、これらを構成します。 詳細については、「 Oracle Subscribers 」および「 IBM DB2 Subscribers」を参照してください。
パブリケーションの新規作成ウィザードを使用して、パブリケーションを作成します。 Oracle データベースからパブリケーションを作成する方法については、「Publisher で文書を作成するには」および「Create a Publication from an Oracle Database」(Oracle データベースからパブリケーションを作成する) を参照してください。 パブリケーションの新規作成ウィザードで、以下のオプションを指定します。
[パブリケーションの種類] ページで、 [スナップショット パブリケーション] または [トランザクション パブリケーション] を選択します。
[スナップショット エージェント] ページで、 [スナップショットをすぐに作成する] チェック ボックスをオフにします。
SQL Server 以外のサブスクライバーに対してパブリケーションが有効になったら、スナップショットを作成し、スナップショット エージェントがSQL Server 以外のサブスクライバーに適したスナップショットおよび初期化スクリプトを生成することを確認します。
[パブリケーションのプロパティ - <PublicationName] ダイアログ ボックスを使用して、SQL Server以外のサブスクライバーのパブリケーションを>有効にします。 この手順の詳細については、「 Publication Properties, Subscription Options 」を参照してください。
サブスクリプションの新規作成ウィザードを使用して、サブスクリプションを作成します。 この手順の詳細については、このトピック内で説明します。
(省略可能) サブスクライバー側のテーブルを保持するには、 pre_creation_cmd アーティクル プロパティを変更します。 この手順の詳細については、このトピック内で説明します。
パブリケーションのスナップショットを生成します。 この手順の詳細については、このトピック内で説明します。
サブスクリプションを同期します。 詳細については、「 プッシュ サブスクリプションの同期」をご覧ください。
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 Subscribers 」および「 IBM DB2 Subscribers」を参照してください。
[OK] をクリックします。 これで、ウィザードの [サブスクライバー] ページで、サブスクライバーが [サブスクライバー] 列に表示され、読み取り専用の [(既定の転送先)] が [サブスクリプション データベース] 列に表示されます。
Oracle の場合、1 つのサーバーに 1 つのデータベースしか作成できないため、データベースを指定する必要はありません。
IBM DB2 の場合、データベースは DB2 接続文字列の Initial Catalog プロパティで指定されます。DB2 接続文字列は、後述する [追加の接続オプション] フィールドに入力できます。
[セキュリティのディストリビューション エージェント] ページで、サブスクライバーの横にある [プロパティ] ボタン (...) をクリックして、[ディストリビューション エージェント セキュリティ] ダイアログ ボックスにアクセスします。
[ディストリビューション エージェント セキュリティ] ダイアログ ボックスで、以下の操作を行います。
[プロセス アカウント] 、 [パスワード] 、および [パスワードの確認入力] フィールドで、ディストリビューション エージェントの実行、およびディストリビューターへのローカル接続に使用される Microsoft Windows アカウントおよびパスワードを入力します。
アカウントには、ディストリビューション データベースの固定データベース ロール db_owner のメンバーであること、パブリケーション アクセス リスト (PAL) のメンバーであること、スナップショット共有での読み取り権限、および OLE DB プロバイダーのインストール ディレクトリでの読み取り権限など、最小限の権限が必要です。 PAL の詳細については、「Secure the Publisher (パブリッシャーのセキュリティ保護)」を参照してください。
[サブスクライバーに接続] の、 [ログイン] 、 [パスワード] 、および [パスワードの確認入力] フィールドで、サブスクライバーへの接続に使用するログインとパスワードを入力します。 このログインは、あらかじめ構成され、サブスクリプション データベースでオブジェクトを作成できる十分な権限を持っている必要があります。
[追加の接続オプション] フィールドで、接続文字列の形式でサブスクライバーの接続オプションを指定します (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'
.
パブリケーションのスナップショットを生成するには
[レプリケーション] フォルダーを展開し、 [ローカル パブリケーション] フォルダーを展開します。
パブリケーションを右クリックし、 [スナップショット エージェントの状態の表示] をクリックします。
[表示スナップショット エージェント状態 - <パブリケーション>] ダイアログ ボックスで、[開始] をクリックします。
スナップショット エージェントによるスナップショットの生成が完了すると、"[100%] 17 個のアーティクルのスナップショットが生成されました。" などのメッセージが表示されます。
Transact-SQL の使用
レプリケーション ストアド プロシージャを使用して、SQL Server以外のサブスクライバーに対するプッシュ サブスクリプションをプログラムで作成できます。
重要
可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。
SQL Server 以外のサブスクライバーに対する、トランザクション パブリケーションまたはスナップショット パブリケーションのプッシュ サブスクリプションを作成するには
パブリッシャーとディストリビューターの両方に、SQL Server 以外のサブスクライバーの最新の OLE DB プロバイダーをインストールします。 OLE DB プロバイダーのレプリケーションの要件については、「 Non-SQL Server Subscribers」、 Oracle Subscribers」、「 IBM DB2 Subscribers」を参照してください。
パブリッシャー側のパブリケーション データベースで、sp_helppublication (Transact-SQL) を実行して、パブリケーションでSQL Server以外のサブスクライバーがサポートされていることを確認します。
の値が 1 の
enabled_for_het_sub
場合、SQL Server以外のサブスクライバーがサポートされます。の値が 0 の
enabled_for_het_sub
場合は、@property とtrue
@value を指定してenabled_for_het_sub
、sp_changepublication(Transact-SQL)を実行します。注意
enabled_for_het_sub
をtrue
に変更する前に、そのパブリケーションに対する既存のサブスクリプションをすべて削除する必要があります。 パブリケーションで更新サブスクリプションもサポートされる場合、enabled_for_het_sub
をtrue
に設定することはできません。enabled_for_het_sub
を変更すると、他のパブリケーション プロパティにも影響します。 詳細については、「 Non-SQL Server Subscribers」を参照してください。
パブリッシャー側のパブリケーション データベースで、 sp_addsubscription (Transact-SQL) を実行します。 @publication、 @subscriber、 @destination_db に (既定の転送先)の値、 @subscription_type に pushの値、および @subscriber_type に 3 の値 (OLE DB プロバイダーを指定) を指定します。
パブリッシャー側のパブリケーション データベースで、 sp_addpushsubscription_agent (Transact-SQL) を実行します。 次の指定を行います。
@subscriberパラメーターおよび @publication パラメーター。
@subscriber_db に対する (既定の転送先)の値。
@subscriber_provider、@subscriber_datasrc、@subscriber_location、@subscriber_provider_string、@subscriber_catalogのSQL Server以外のデータ ソースのプロパティ。
ディストリビューターのディストリビューション エージェントが@job_loginと@job_passwordに対して実行される Microsoft Windows 資格情報。
注意
Windows 統合認証を使用して行われた接続では、常に @job_login および @job_password で指定された Windows 資格情報が使用されます。 ディストリビューション エージェントは、常に Windows 統合認証を使用してディストリビューターにローカル接続します。 既定では、エージェントは Windows 統合認証を使用してサブスクライバーに接続します。
@subscriber_security_mode に 0 を指定し、 @subscriber_login および @subscriber_passwordに OLE DB プロバイダーのログイン情報を指定します。
このサブスクリプションでのディストリビューション エージェント ジョブのスケジュール。 詳細については、「 Specify Synchronization Schedules」を参照してください。
重要
リモート ディストリビューターを使用するパブリッシャー側でプッシュ サブスクリプションを作成する場合は、 job_login および job_passwordを含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
参照
IBM DB2 Subscribers
Oracle Subscribers
その他の SQL Server 以外のサブスクライバー
Replication System Stored Procedures Concepts
レプリケーション セキュリティの推奨事項