SQL Server 以外のサブスクライバー

適用対象: SQL Server

以下の SQL Server 以外のサブスクライバーでは、プッシュ サブスクリプションを使用することで、スナップショット パブリケーションおよびトランザクション パブリケーションにサブスクライブできます。 以下に示す 2 つのデータベースの最新バージョンでは、OLE DB プロバイダーを使用したサブスクリプションがサポートされています。

SQL Server 以外のサブスクライバーへの異種レプリケーションは非推奨とされます。 Oracle パブリッシングは非推奨とされます。 データを移動するには、変更データ キャプチャと SSIS を使用してソリューションを作成します。

注意事項

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。

データベース オペレーティング システム プロバイダー
Oracle Oracle がサポートするすべてのプラットフォーム Oracle OLE DB プロバイダー (Oracle によって提供されます)
IBM Db2 MVS、AS400、Unix、Linux、Windows (9.x を除く) Microsoft Host Integration Server (HIS) OLE DB プロバイダー

Oracle バージョン情報:
SQL Server は、トランザクション レプリケーションとスナップショット レプリケーションに対する次の異種シナリオをサポートします。

  • SQL Server 以外のサブスクライバーへの SQL Server からのデータのパブリッシュ

  • Oracle に対するデータのパブリッシュには次の制限があります。

レプリケーション 2016 以前 2017 以降
Oracle からのレプリケーション Oracle 10g 以前のみをサポート Oracle 10g 以前のみをサポート
Oracle へのレプリケーション Oracle 12c まで サポートされていません

SQL Server 以外のサブスクライバーへの異種レプリケーションは非推奨とされます。 Oracle パブリッシングは非推奨とされます。 データを移動するには、変更データ キャプチャと SSIS を使用してソリューションを作成します。

Oracle および IBM Db2 にサブスクリプションを作成する方法の詳細については、「Oracle サブスクライバー」および「IBM Db2 サブスクライバー」を参照してください。

SQL Server 以外のサブスクライバーに関する注意点

SQL Server 以外のサブスクライバーにレプリケートする場合は、以下の点に留意してください。

一般的な考慮事項

  • レプリケーションでは、テーブルとインデックス付きビューをテーブルとしてSQL Server 以外のサブスクライバーにパブリッシュする処理をサポートしています (インデックス付きビューは、インデックス付きビューとしてレプリケートすることはできません)。

  • 出版物の新規作成ウィザードでパブリケーションを作成し、[パブリケーションのプロパティ] ダイアログ ドロップダウン リストを使用して、これを SQL Server 以外のサブスクライバーに対して有効化する場合、SQL Server 以外のサブスクライバーに、サブスクリプション データベース内の全オブジェクトの所有者は指定されません。一方、 Microsoft SQL Server サブスクライバーには、パブリケーション データベース内の対応するオブジェクトの所有者が設定されます。

  • 出版物に SQL Server サブスクライバーと SQL Server 以外のサブスクライバーが含まれる場合、 サブスクライバーのサブスクリプションを作成する前に、SQL Server 以外のサブスクライバーに対してパブリケーションを有効化する必要があります。

  • 既定では、スナップショット エージェントが SQL Server 以外のサブスクライバーに対して生成したスクリプトには、CREATE TABLE 構文に引用符なしの識別子が使用されます。 したがって、「test」という名前でパブリッシュされたテーブルは「TEST」としてレプリケートされます。 大文字/小文字の指定をパブリケーション データベース内のテーブルと同一にするには、ディストリビューション エージェントの -QuotedIdentifier パラメーターを使用します。 パブリッシュされたオブジェクトの名前 (テーブル、列、制約など) に、スペースや、SQL Server 以外のサブスクライバーのデータベースのバージョンでの予約語が含まれている場合は、 -QuotedIdentifier パラメーターも使用する必要があります。 このパラメーターの詳細については、 レプリケーション ディストリビューション エージェント を参照してください。

  • ディストリビューション エージェントを実行するアカウントには、OLE DB プロバイダーのインストール ディレクトリに対する読み取りアクセス権が必要です。

  • 既定では、SQL Server 以外のサブスクライバーの場合、ディストリビューション エージェントは、サブスクリプション データベースに対して -SubscriberDB パラメーターで [(default destination)] の値を使用します。

  • SQL Server ディストリビューターが 64 ビット プラットフォームで実行されている場合、該当する OLE DB プロバイダーの 64 ビット バージョンを使用する必要があります。

  • レプリケーションでは、パブリッシャーおよびサブスクライバーで使用される照合順序やコード ページにかかわらず、データが Unicode 形式に変換されます。 パブリッシャーとサブスクライバーの間でレプリケートを行う場合は、互換性のある照合順序やコード ページを使用することをお勧めします。

  • アーティクルを出版物に追加または削除する場合、SQL Server 以外のサブスクライバーのサブスクリプションは再初期化する必要があります。

  • すべての SQL Server 以外のサブスクライバーでサポートされる制約は、NULL および NOT NULL のみです。 主キーの制約は一意なインデックスとしてレプリケートされます。

  • NULL 値の扱いはデータベースによって異なり、空白値、空の文字列、および NULL の表示方法に影響します。 また、UNIQUE 制約が定義されている列に値を挿入する際の動作にも影響します。 たとえば、Oracle では一意な列に複数の NULL 値を挿入できますが、 SQL Server では一意な列に 1 つの NULL 値しか挿入できません。

    他にも注意が必要なのは、列に対して NOT NULL が定義されている場合、NULL 値、空の文字列、および空白値がどのように扱われるかという点です。 Oracle サブスクライバーでのこの問題の対処方法の詳細については、「 Oracle サブスクライバー」を参照してください。

  • SQL Server 以外のサブスクライバーからサブスクリプションが削除されても、レプリケーション関連のメタデータ (トランザクション シーケンス テーブル) は削除されません。

サブスクライバー データベースの要件への準拠

  • パブリッシュされたスキーマおよびデータは、サブスクライバーのデータベース要件に準拠する必要があります。 たとえば、SQL Server 以外のデータベースの最大行サイズが SQL Server よりも小さい場合、パブリッシュされるスキーマおよびデータがこのサイズを超えないようにする必要があります。

  • SQL Server 以外のサブスクライバーにレプリケートされたテーブルには、サブスクライバーのデータベースのテーブル名前付け規則が採用されます。

  • DDL は、SQL Server 以外のサブスクライバーに対してはサポートされていません。 スキーマ変更の詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。

レプリケーション機能のサポート

  • SQL Server では、プッシュおよびプルの 2 種類のサブスクリプションが提示されています。 SQL Server 以外のサブスクライバーはプッシュ サブスクリプションを使用する必要があります。このサブスクリプションでは、 SQL Server ディストリビューターでディストリビューション エージェントが実行されます。

  • SQL Server には、ネイティブ bcp モードと文字モードの 2 種類のスナップショット形式が用意されています。 SQL Server 以外のサブスクライバーでは、文字モードのスナップショットを使用する必要があります。

  • SQL Server 以外のサブスクライバーは、即時更新サブスクリプションおよびキュー更新サブスクリプションを使用できません。また、ピア ツー ピア トポロジのノードになることもできません。

  • SQL Server 以外のサブスクライバーをバックアップから自動的に初期化することはできません。