適用対象:SQL Server
以下の非SQL Serverサブスクライバーは、プッシュサブスクリプションを利用してスナップショットおよびトランザクション出版物を購読できます。 各データベースの最新バージョン2つは、記載されているOLE DBプロバイダーの最新バージョンを使用してサブスクリプションをサポートしています。
非SQL Serverサブスクライバーへの異種レプリケーションは推奨されていません。 Oracle Publishingは廃止されています。 データを移動するには、Change Data Captureや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 Publishingは廃止されています。 データを移動するには、Change Data CaptureやSSISを使ってソリューションを作成しましょう。
Oracle および IBM Db2 にサブスクリプションを作成する方法の詳細については、「Oracle サブスクライバー」および「IBM Db2 サブスクライバー」を参照してください。
SQL Serverを使わない購読者への考慮事項
SQL Server 以外のサブスクライバーにレプリケートする場合は、次の考慮事項に注意してください。
一般的な考慮事項
レプリケーションは、SQL Serverのサブスクライバーでない人に対してテーブルやインデックスビューをテーブルとして公開することをサポートしています(インデックスビューはインデックスビューとして複製できません)。
新しい公開ウィザードで公開を作成し、非SQL Serverのサブスクライバーに対して「Publication Properties」ダイアログボックスで有効化する場合、SQL Server非加入者のサブスクリプションデータベース内のすべてのオブジェクトの所有者を指定する必要はありません。 Microsoft SQL Server Subscribersの場合、所有者は公開データベース内の対応するオブジェクトの所有者です。
出版物にSQL Server Subscriberと非SQL Server Subscribersの両方がある場合、SQL Server Subscribersのサブスクリプションを作成する前に、非SQL Server Subscribersのためにその公開を有効にしなければなりません。
デフォルトでは、スナップショット エージェントが非SQL Serverサブスクライバー向けに生成するスクリプトは、
CREATE TABLE構文に引用符なしの識別子を使用します。 したがって、公開されたtestと名付けられたテーブルはTESTとして複製されます。 パブリケーション データベース内のテーブル名と大文字/小文字の表記を同じにするには、ディストリビューション エージェントの -QuotedIdentifier パラメーターを使用します。 また、非SQL Serverサブスクライバーのデータベースバージョンに公開されたオブジェクト名(テーブル、列、制約など)にスペースや保留語が含まれている場合は、-QuotedIdentifierパラメータを使用しなければなりません。 このパラメーターの詳細については、 レプリケーション ディストリビューション エージェント を参照してください。ディストリビューション エージェントを実行するアカウントには、OLE DB プロバイダーのインストール ディレクトリに対する読み取りアクセス権が必要です。
SQL Server非サブスクライバーの場合、ディストリビューション エージェントはサブスクリプションデータベースに
[(default destination)]の値を使用します(ディストリビューション エージェントの-SubscriberDBパラメータ)。Oracleの場合、サーバーは最大でも1つのデータベースしか持たないので、そのデータベースを指定する必要はありません。
IBM Db2の場合は、DB2の接続文字列でデータベースを指定します。 詳細については、「 SQL Server 以外のサブスクライバーのサブスクリプションの作成」を参照してください。
SQL Server ディストリビューターが 64 ビット プラットフォームで実行されている場合、該当する OLE DB プロバイダーの 64 ビット バージョンを使用する必要があります。
レプリケーションは、PublisherやSubscriberで使用されるコレーションやコードページに関わらず、Unicode形式でデータを移動させます。 パブリッシャーとサブスクライバー間で複製する際は、互換性のあるコレーションやコードページを選択します。
出版物から記事を追加または削除した場合、非SQL Server購読者の購読を再初期化しなければなりません。
すべての非SQL Server加入者に対してサポートされる制約は、
NULLとNOT NULLのみです。 主キーの制約は一意なインデックスとしてレプリケートされます。データベースによって
NULLの扱い方が異なります。 この違いは、空欄の値、空文字列、NULLの表現方法に影響を与えます。 この違いは、一意な制約が定義された列に挿入される値の挙動に影響を与えます。 例えば、Oracleは一意とみなされる列に複数のNULL値を許可しますが、SQL Serverは一意な列に単一の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サブスクライバーはバックアップから自動的に初期化することはできません。