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

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

データベース

オペレーティング システム

プロバイダー

Oracle

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 パラメーターで [(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 Management Studio では、SQL Server 以外のサブスクライバーの SQL Server 2000 パブリケーションは有効にできません。SQL Server 以外のサブスクライバーの SQL Server 2000 パブリケーションを有効にするには、SQL Server 2000 Enterprise Manager のパブリケーション作成ウィザードを使用します。パブリケーション作成ウィザードの [サブスクライバーの種類の指定] ページで、[Oracle または Microsoft Access などの異種データ ソース] を選択します。

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

  • パブリッシュされたスキーマおよびデータは、サブスクライバーのデータベース要件に準拠する必要があります。たとえば、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 以外のサブスクライバーをバックアップから自動的に初期化することはできません。

  • SQL Server 以外のサブスクリプションが削除されても、レプリケーション メタデータはサブスクライバーから削除されません。レプリケーション メタデータは、サブスクライバーにレプリケートされるトランザクションのシーケンスを追跡するために使用されるテーブルで構成されます。

変更履歴

変更内容

「レプリケーション機能のサポート」セクションを更新して、サブスクリプションの削除時に異種サブスクライバーからレプリケーション メタデータが削除されないことを示しました。