次の SQL Server 以外のサブスクライバーは、プッシュ サブスクリプションを使用してスナップショット パブリケーションとトランザクション パブリケーションをサブスクライブできます。 サブスクリプションは、一覧表示されている OLE DB プロバイダーの最新バージョンを使用して、一覧表示されている各データベースの 2 つの最新バージョンでサポートされます。
SQL Server 以外のサブスクライバーへの異種レプリケーションは非推奨です。 Oracle パブリッシングは非推奨です。 データを移動するには、変更データ キャプチャと SSIS を使用してソリューションを作成します。
注意事項
この機能は、今後のバージョンの Microsoft SQL Server で削除される予定です。 新しい開発作業ではこの機能を使用しないでください。現在この機能を使用しているアプリケーションを変更することを計画してください。
| データベース | オペレーティング システム | プロバイダー |
|---|---|---|
| オラクル | Oracle がサポートするすべてのプラットフォーム | Oracle OLE DB プロバイダー (Oracle から提供) |
| IBM DB2 | MVS、AS400、Unix、Linux、Windows (9.x を除く) | Microsoft Host Integration Server (HIS) OLE DB プロバイダー |
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 以外のサブスクライバーに対してパブリケーションを有効にする必要があります。
既定では、SQL Server 以外のサブスクライバーのスナップショット エージェントによって生成されたスクリプトは、CREATE TABLE 構文で引用符を使用しない識別子を使用します。 そのため、'test' という名前のパブリッシュされたテーブルは 'TEST' としてレプリケートされます。 パブリケーション データベースのテーブルと同じケースを使用するには、ディストリビューション エージェントの -QuotedIdentifier パラメーターを使用します。 パブリッシュされたオブジェクト名 (テーブル、列、制約など) に、SQL Server 以外のサブスクライバーにあるデータベースのバージョンの予約語であるスペースまたは単語が含まれている場合は、 -QuotedIdentifier パラメーターも使用する必要があります。 このパラメーターの詳細については、「 レプリケーションディストリビューションエージェント」を参照してください。
ディストリビューション エージェントを実行するアカウントには、OLE DB プロバイダーのインストール ディレクトリへの読み取りアクセス権が必要です。
SQL Server 以外のサブスクライバーの既定では、ディストリビューション エージェントはサブスクリプション データベースに値 [(既定の宛先)] を使用します (ディストリビューション エージェントの -SubscriberDB パラメーター)。
Oracle の場合、サーバーには最大 1 つのデータベースがあるため、データベースを指定する必要はありません。
IBM DB2 の場合、データベースは DB2 接続文字列で指定されます。 詳細については、「 SQL Server 以外のサブスクライバーのサブスクリプションを作成する」を参照してください。
SQL Server ディストリビューターが 64 ビット プラットフォームで実行されている場合は、適切な OLE DB プロバイダーの 64 ビット バージョンを使用する必要があります。
レプリケーションは、パブリッシャーとサブスクライバーで使用される照合順序/コード ページに関係なく、Unicode 形式でデータを移動します。 パブリッシャーとサブスクライバーの間でレプリケートする場合は、互換性のある照合順序/コード ページを選択することをお勧めします。
パブリケーションにアーティクルを追加またはパブリケーションから削除する場合は、SQL Server 以外のサブスクライバーへのサブスクリプションを再初期化する必要があります。
SQL Server 以外のすべてのサブスクライバーでサポートされる制約は、NULL と NOT NULL のみです。 主キー制約は、一意のインデックスとしてレプリケートされます。
値 NULL は、異なるデータベースによって異なる方法で扱われます。これは、空白の値、空の文字列、および NULL の表現方法に影響します。 これは、一意の制約が定義された列に挿入される値の動作に影響します。 たとえば、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 以外のサブスクライバーは、バックアップから自動的に初期化することはできません。