SQL Server 以外のサブスクライバーのサブスクリプションの作成
このトピックでは、SQL Server 2012 で SQL Server Management Studio または Transact-SQL を使用して、SQL Server 以外のサブスクライバーのサブスクリプションを作成する方法について説明します。 トランザクション レプリケーションとスナップショット レプリケーションでは、SQL Server 以外のサブスクライバーに対するデータのパブリッシュがサポートされています。 サポートされるサブスクライバー プラットフォームの詳細については、「SQL Server 以外のサブスクライバー」を参照してください。
このトピックの内容
SQL Server 以外のサブスクライバーのサブスクリプションを作成するために使用するもの:
SQL Server Management Studio
Transact-SQL
SQL Server Management Studio の使用
SQL Server 以外のサブスクライバーのサブスクリプションを作成するには、以下の操作を実行します。
SQL Server ディストリビューターに、適切なクライアント ソフトウェアおよび OLE DB プロバイダーをインストールし、これらを構成します。 詳細については、「Oracle サブスクライバー」および「IBM DB2 サブスクライバー」を参照してください。
パブリケーションの新規作成ウィザードを使用して、パブリケーションを作成します。 パブリケーションの作成の詳細については、「パブリケーションの作成」および「Oracle データベースからのパブリケーションの作成」を参照してください。 パブリケーションの新規作成ウィザードで、以下のオプションを指定します。
[パブリケーションの種類] ページで、[スナップショット パブリケーション] または [トランザクション パブリケーション] を選択します。
[スナップショット エージェント] ページで、[スナップショットをすぐに作成する] チェック ボックスをオフにします。
SQL Server 以外のサブスクライバーに対してパブリケーションが有効になったら、スナップショットを作成し、スナップショット エージェントが SQL Server 以外のサブスクライバーに適したスナップショットおよび初期化スクリプトを生成することを確認します。
[パブリケーションのプロパティ - <PublicationName>] ダイアログ ボックスを使用して、SQL Server 以外のサブスクライバーのパブリケーションを有効にします。 この手順の詳細については、「[パブリケーションのプロパティ]、[サブスクリプション オプション]」を参照してください。
サブスクリプションの新規作成ウィザードを使用して、サブスクリプションを作成します。 この手順の詳細については、このトピック内で説明します。
(省略可能) サブスクライバー側のテーブルを保持するには、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 サブスクライバー」および「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 個のアーティクルのスナップショットが生成されました。" などのメッセージが表示されます。
[Top]
Transact-SQL の使用
レプリケーション ストアド プロシージャを使用して、SQL Server 以外のサブスクライバーに対するプッシュ サブスクリプションをプログラムから作成できます。
セキュリティに関する注意 |
---|
可能ならば、実行時にセキュリティ資格情報の入力を求めるメッセージをユーザーに対して表示します。 スクリプト ファイルに資格情報を格納する必要がある場合、不正なアクセスを防ぐために、ファイルをセキュリティ保護する必要があります。 |
SQL Server 以外のサブスクライバーに対する、トランザクション パブリケーションまたはスナップショット パブリケーションのプッシュ サブスクリプションを作成するには
パブリッシャーとディストリビューターの両方に、SQL Server 以外のサブスクライバーの最新の OLE DB プロバイダーをインストールします。 OLE DB プロバイダーのレプリケーションの要件については、「SQL Server 以外のサブスクライバー」、Oracle サブスクライバー」、「IBM DB2 サブスクライバー」を参照してください。
パブリッシャー側のパブリケーション データベースに対して sp_helppublication (Transact-SQL) を実行し、そのパブリケーションで SQL Server 以外のサブスクライバーがサポートされるかどうかを確認します。
enabled_for_het_sub の値が 1 の場合、SQL Server 以外のサブスクライバーがサポートされます。
enabled_for_het_sub の値が 0 の場合、@property に enabled_for_het_sub を指定し、@value に true を指定して、sp_changepublication (Transact-SQL) を実行します。
注 enabled_for_het_sub を true に変更する前に、そのパブリケーションに対する既存のサブスクリプションをすべて削除する必要があります。 パブリケーションで更新サブスクリプションもサポートされる場合、enabled_for_het_sub を true に設定することはできません。 enabled_for_het_sub を変更すると、他のパブリケーション プロパティにも影響します。 詳細については、「SQL Server 以外のサブスクライバー」を参照してください。
パブリッシャー側のパブリケーション データベースに対して、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 以外のデータ ソースのプロパティ。
ディストリビューターで実行するディストリビューション エージェントが使用する Microsoft Windows 資格情報。@job_login および @job_password に指定します。
注 Windows 統合認証を使用して行われる接続では、常に @job_login および @job_password で指定された Windows 資格情報が使用されます。 ディストリビューション エージェントは、常に Windows 統合認証を使用してディストリビューターにローカル接続します。 既定では、エージェントは Windows 統合認証を使用してサブスクライバーに接続します。
@subscriber_security_mode に 0 を指定し、@subscriber_login および @subscriber_password に OLE DB プロバイダーのログイン情報を指定します。
このサブスクリプションでのディストリビューション エージェント ジョブのスケジュール。 詳細については、「同期スケジュールの指定」を参照してください。
セキュリティに関する注意 リモート ディストリビューターを使用するパブリッシャー側でプッシュ サブスクリプションを作成する場合は、job_login および job_password を含むすべてのパラメーターに指定された値がディストリビューターにプレーン テキストとして送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「データベース エンジンへの暗号化接続の有効化 (SQL Server 構成マネージャー)」を参照してください。
[Top]