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)] の値を使用します。
- Oracle の場合、1 つのサーバーに 1 つのデータベースしか作成できないため、データベースを指定する必要はありません。
- IBM DB2 の場合、DB2 接続文字列によってデータベースを指定します。詳細については、「SQL Server 以外のサブスクライバのサブスクリプションを作成する方法 (SQL Server Management Studio)」および「SQL Server 以外のサブスクライバに対するサブスクリプションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
- 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 以外のサブスクライバにレプリケートされたテーブルには、サブスクライバのデータベースのテーブル名前付け規則が採用されます。
- SQL Server 以外のサブスクライバでは、サブスクライバのデータベースの構文に準拠したスキーマ変更のみがサポートされます。スキーマ変更の詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。
レプリケーション機能のサポート
- SQL Server には、プッシュおよびプルの 2 種類のサブスクリプションが用意されています。SQL Server 以外のサブスクライバはプッシュ サブスクリプションを使用する必要があります。このサブスクリプションでは、SQL Server ディストリビュータでディストリビューション エージェントが実行されます。
- SQL Server には、ネイティブ bcp モードとキャラクタ モードの 2 種類のスナップショット形式が用意されています。SQL Server 以外のサブスクライバでは、キャラクタ モードのスナップショットを使用する必要があります。
- SQL Server 以外のサブスクライバは、即時更新サブスクリプションおよびキュー更新サブスクリプションを使用できません。また、ピア ツー ピア トポロジのノードになることもできません。
- SQL Server 以外のサブスクライバをバックアップから自動的に初期化することはできません。
参照
概念
異種データベース レプリケーション
パブリケーションのサブスクライブ