SQL Server 以外のサブスクライバー
以下の SQL Server 以外のサブスクライバーでは、プッシュ サブスクリプションを使用することで、スナップショット パブリケーションおよびトランザクション パブリケーションにサブスクライブできます。 以下に示す 2 つのデータベースの最新バージョンでは、OLE DB プロバイダーを使用したサブスクリプションがサポートされています。
SQL Server 以外のサブスクライバーへの異種レプリケーションは推奨されません。 Oracle パブリッシングは推奨されません。 データを移動するには、変更データ キャプチャと SSIS を使用してソリューションを作成します。
注意 |
---|
この機能は、将来のバージョンの Microsoft 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 および 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 ディストリビューターが 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 以外のサブスクライバーをバックアップから自動的に初期化することはできません。