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

レプリケーション機能を利用するアプリケーションを開発する前に、次に示す一般的な計画手順を実行してください。

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

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

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

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

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

以下に、この手順の詳細を説明します。 計画のプロセスについてわかりやすく説明するために、例も示します。

レプリケーション トポロジの定義

レプリケーションのプログラミングの最初の手順は、アプリケーションのレプリケーション トポロジを定義することです。 既存のサブスクライバー上のデータにアクセスするクライアント アプリケーションなど、既存のレプリケーション トポロジを使用するアプリケーションを作成する場合は、次の手順に進んでください。

注意

レプリケーション トポロジの配置だけがアプリケーションの目的である場合もあります。

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

  • レプリケートされたデータの更新が必要か、まただれが更新するか。

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

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

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

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

Microsoft SQL Server レプリケーションを初めて使用する場合は、「レプリケーションの種類」を参照してください。

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

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

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

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

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

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

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

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

機能

SQL Server 管理オブジェクト (SMO) を使用したサーバー管理

管理者がレプリケーション トポロジ内でデータベースをパブリッシャーとしてアタッチし、構成できるアプリケーション

ADO.NET を使用したデータ アクセス

ユーザーがオフライン時にローカル サブスクライバー データベース内のレプリケート済み販売データにプログラムからアクセスして変更でき、さらにボタンをクリックすることでプル サブスクリプションに接続して同期できるアプリケーション

セキュリティの計画

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

セキュリティの詳細については、次のトピックで解説します。

開発環境の選択

レプリケーション アプリケーションの開発時に検討する基本開発環境は、3 種類あります。 どの開発環境からもほぼ同じレプリケーション機能を利用できますが、いくつか例外があります。 レプリケーション アプリケーションは、次の環境で開発できます。

  • マネージ コード

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

  • スクリプト

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

  • ネイティブ コード

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

適切なレプリケーション プログラミング インターフェイスの選択

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

インターフェイス

環境

使用法

レプリケーション管理オブジェクトの概念

マネージ コード

管理、監視、同期

Microsoft.SqlServer.Replication

マネージ コード

同期

Microsoft.SqlServer.Replication.BusinessLogicSupport

マネージ コード

カスタム ロジックとマージ同期プロセスを統合するためのビジネス ロジック ハンドラーの作成

レプリケーション ストアド プロシージャ (Transact-SQL)

スクリプト

管理と監視

レプリケーション エージェント実行可能ファイルの概念

スクリプト

同期

Adventure Works では、データを世界中の 200 人の販売担当者にパブリッシュする必要があります。 販売担当者は頻繁に出張するため、ラップトップ コンピューターや携帯情報端末 (PDA) を使用して顧客データを変更したり、新しい発注を追加したりする必要があります。 販売担当者がラップトップ コンピューターをネットワークに接続したときに、このような変更をパブリッシャーと同期する必要があります。

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

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

  2. 販売アプリケーションに必要な一般的なデータ アクセスに加えて、このアプリケーションでは販売担当者が必要なときにボタンをクリックしてプル サブスクリプションを同期できるようにする必要があります。 さらに、販売担当者がこのアプリケーションをインストールして実行するため、クライアント側でサブスクリプションを構成し、初期スナップショットを適用できる必要があります。 場合によっては、このアプリケーションは Windows で提供されているインフラストラクチャを利用してワイヤレス接続を探し、接続が検出された場合はサブスクリプションを自動的に同期します。

  3. パブリッシャーに接続するときには、Windows 認証と仮想プライベート ネットワークの使用を含む、レプリケーションのセキュリティ ガイドラインすべてに従います。 Web 同期を実行する場合は、SSL (Secure Sockets Layer) 接続を使用します。 詳細については、「Web 同期の構成」を参照してください。

  4. .NET Framework の機能を利用するには、マネージ コード言語を使用してアプリケーションを開発します。

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

次の例は、SQL Server に付属するサンプル アプリケーションに実装されています。