レプリケーションプログラミングの概念

適用対象:SQL ServerAzure SQL Managed Instance

レプリケーション機能を使用するアプリケーションを開発する前に、以下の一般的な計画ステップに従ってください。

  1. レプリケーション トポロジを定義します。

  2. アプリケーションの機能を定義します。

  3. セキュリティを計画します。

  4. 開発環境を選択します。

  5. 適切なレプリケーション プログラミング インターフェイスを選択します。

この記事の残りの部分では、これらのステップについてより詳しく説明しています。 計画過程を説明するために例を紹介します。

複製トポロジーの定義

レプリケーションのプログラミングの最初の手順は、アプリケーションのレプリケーション トポロジを定義することです。 既存のレプリケーショントポロジーを使うアプリケーション、例えばクライアントアプリケーションが既存のサブスクライバーでデータにアクセスする場合は、次のステップに進みましょう。

Note

場合によっては、レプリケーショントポロジーの展開がアプリケーションの唯一の目的となります。

レプリケーション トポロジの定義は、次のような多くの要因によって決まります。

  • 複製されたデータを更新する必要があるかどうか、そして誰によって更新されるべきか。

  • データ ディストリビューションでは、関連する一貫性、自律性、待機時間を必要とするか。

  • ビジネス ユーザー、技術的なインフラストラクチャ、ネットワークとセキュリティ、データ特性などのレプリケーション環境。

  • レプリケーションの種類とレプリケーション オプション。

  • レプリケーション トポロジと、そのレプリケーションの種類との対応。

Microsoft SQL Serverのレプリケーションが初めての方は、「レプリケーションの種類」をご覧ください。

アプリケーション機能の定義

レプリケーショントポロジーを定義した後、アプリケーションが提供する機能を決定してください。 サブスクリプションをアプリケーションに同期させるスクリプトから、レプリケーションを構成するためのユーザー インターフェイスを備えたアプリケーションまで、幅広い機能を定義できます。 レプリケーションでは次の一般的なプログラミング作業がサポートされます。

  • レプリケーションのセットアップ

  • サブスクライバーの同期

  • レプリケーション トポロジの保持

  • レプリケーション トポロジの監視

  • レプリケーションのトラブルシューティング

また、SQL Serverが提供する他の機能とレプリケーション機能を組み合わせてアプリケーションを拡張することも一般的です。 次の表に、レプリケーション アプリケーションで提供できる拡張機能の一部を示します。

機能
SQL Server 管理オブジェクト (SMO) を使用したサーバー管理 管理者がレプリケーション トポロジ内でデータベースをパブリッシャーとしてアタッチし、構成できるアプリケーション
ADO.NET を使用したデータ アクセス オフライン時にローカルのサブスクライバーデータベース内の複製された販売データにプログラム的にアクセス・変更できるアプリケーションで、ボタンを選択してプルサブスクリプションを接続・同期できます。

安全保障のための計画

どんなアプリケーションにおいてもセキュリティは重要であり、コードを書く前にセキュリティ対策を計画すべきです。 アプリケーションのセキュリティは、データベースのセキュリティ保護、レプリケーションのセキュリティ保護、安全なコードの作成の 3 つに大きく分類されます。

以下の記事はセキュリティに関する情報を提供しています。

開発環境の選択

レプリケーションアプリケーションを開発する際には、これら3つの基本的な開発環境を考慮してください。 どの開発環境からもほぼ同じレプリケーション機能を利用できますが、いくつか例外があります。 以下の環境でレプリケーションアプリケーションを開発できます。

  • マネージド コード

    .NETフレームワークプログラミングと.NET共通言語ランタイム(CLR)の利点を活用したオブジェクト指向開発環境。 マネージド コードは、.NET 開発アプリケーションと SQL Server アプリケーションの両方に推奨されるプログラミング環境です。 マネージドレプリケーションインターフェースにより、Transact-SQLを知らなくてもオブジェクト指向の方法でレプリケーション管理をプログラムできます。 また、スクリプトでは利用できないレプリケーションエージェントを実行する際にコールバック機能も提供しています。 マネージド コードは、再利用可能なコンポーネントおよびユーザー インターフェイス アプリケーションの開発に最適な環境です。

  • スクリプト

    Transact-SQL スクリプトのレプリケーション システム ストアド プロシージャまたはバッチ ファイル内のコマンドとして一連のコマンドを実行する単純なアプリケーション。 管理環境ではSQL Serverのインプロセス管理プロバイダーでスクリプトを実行できますが、管理されたレプリケーションインターフェースを使えば同じ機能を得ることができ、これらはコールバック機能も提供します。 スクリプトは、レプリケーションサーバーのインストールなどコールバック機能を必要としない数回の実行タスクを実行するのに最適な環境です。

  • ネイティブ コード

    システムやCOMオブジェクトに直接アクセスし、CLRによってコードが管理されないオブジェクト指向開発環境。 ネイティブ コード レプリケーション インターフェイスは、非推奨または廃止になりました。 詳細については、「SQL Server レプリケーションの非推奨の機能」または「レプリケーションの旧バージョンとの互換性」を参照してください。

適切なレプリケーションプログラミングインターフェースを選択してください

計画の最後の手順は、選択した開発環境で目的のレプリケーション機能を実装するためのレプリケーション プログラミング インターフェイスを適切に選択することです。 以下の表は利用可能なレプリケーションプログラミングインターフェースを示しています。

Interface 環境 使用
レプリケーション管理オブジェクトの概念 マネージド コード 管理、監視、同期
Microsoft.SqlServer.Replication マネージド コード 同期。
Microsoft.SqlServer.Replication.BusinessLogicSupport マネージド コード カスタム ロジックとマージ同期プロセスを統合するためのビジネス ロジック ハンドラーの作成
レプリケーション ストアド プロシージャ (Transact-SQL) スクリプト 管理と監視。
レプリケーションエージェント実行ファイルの概念 スクリプト 同期。

Adventure Works では、世界中の 200 人の営業担当者にデータを公開する必要があります。 営業担当者は頻繁に出張しており、顧客データの変更や新規注文の追加にはノートパソコンやパーソナルデジタルアシスタント(PDA)を使う必要があります。 営業担当者はノートパソコンをネットワークに接続する際に、変更をPublisherと同期させる必要があります。

このアプリケーションの場合、計画手順は次のようになります。

  1. このアプリケーションのレプリケーション トポロジは既に存在しています。 ただし、クライアント側で新しいプルサブスクリプションを作成する必要があります。 出版物内のパラメータ化されたフィルターを使い、各営業担当者に一意のデータセットを複製します。

  2. 販売アプリケーションに必要な一般的なデータ アクセスに加えて、このアプリケーションでは販売担当者が必要なときにボタンをクリックしてプル サブスクリプションを同期できるようにする必要があります。 営業担当者がアプリケーションのインストールと実行を行うため、サブスクリプションの設定やクライアント側での初期スナップショットの適用も必要です。 オプションとして、Windowsが提供する無線接続感知インフラを利用して、接続が検出された際に自動的にサブスクリプションを同期させます。

  3. Publisherに接続する際は、Windows認証や仮想プライベートネットワーク(VPN)の使用など、レプリケーションに関するすべてのセキュリティガイドラインを遵守してください。 Web同期を実装する場合は、トランスポート層セキュリティ(TLS)、以前はSSLとして知られていた接続を使用します。 詳しくは、「 Configure Web Synchronization」をご覧ください。

  4. .NETフレームワークの機能を活用するには、管理コード言語を用いてアプリケーションを開発してください。

  5. このような要件に基づき、このアプリケーションに必要なレプリケーション機能はレプリケーション管理オブジェクト (RMO) 管理インターフェイスによってすべて提供できます。

この例シナリオを実装したAdventureWorksのサンプルアプリケーションはSQL Serverからダウンロードできます。