レプリケーションのプログラミング概念
適用対象: SQL Server Azure SQL Managed Instance
レプリケーション機能を利用するアプリケーションを開発する前に、次に示す一般的な計画手順を実行してください。
レプリケーション トポロジを定義します。
アプリケーションの機能を定義します。
セキュリティを計画します。
開発環境を選択します。
適切なレプリケーション プログラミング インターフェイスを選択します。
以下に、この手順の詳細を説明します。 計画のプロセスについてわかりやすく説明するために、例も示します。
レプリケーション トポロジの定義
レプリケーションのプログラミングの最初の手順は、アプリケーションのレプリケーション トポロジを定義することです。 既存のサブスクライバー上のデータにアクセスするクライアント アプリケーションなど、既存のレプリケーション トポロジを使用するアプリケーションを作成する場合は、次の手順に進んでください。
Note
レプリケーション トポロジの配置だけがアプリケーションの目的である場合もあります。
レプリケーション トポロジの定義は、次のような多くの要因によって決まります。
レプリケートされたデータの更新が必要か、まただれが更新するか。
データ ディストリビューションでは、関連する一貫性、自律性、待機時間を必要とするか。
ビジネス ユーザー、技術的なインフラストラクチャ、ネットワークとセキュリティ、データ特性などのレプリケーション環境。
レプリケーションの種類とレプリケーション オプション。
レプリケーション トポロジと、そのレプリケーションの種類との対応。
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 レプリケーションの非推奨の機能」または「レプリケーションの旧バージョンとの互換性」を参照してください。
適切なレプリケーション プログラミング インターフェイスの選択
計画の最後の手順は、選択した開発環境で目的のレプリケーション機能を実装するためのレプリケーション プログラミング インターフェイスを適切に選択することです。 次の表に、使用できるレプリケーション プログラミング インターフェイスを示します。
Interface | Environment | 使用 |
---|---|---|
Replication Management Objects Concepts | マネージド コード | 管理、監視、同期 |
Microsoft.SqlServer.Replication | マネージド コード | 同期。 |
Microsoft.SqlServer.Replication.BusinessLogicSupport | マネージド コード | カスタム ロジックとマージ同期プロセスを統合するためのビジネス ロジック ハンドラーの作成 |
レプリケーション ストアド プロシージャ (Transact-SQL) | スクリプト | 管理と監視。 |
Replication Agent Executables Concepts | スクリプト | 同期。 |
例
Adventure Works では、世界中の 200 人の営業担当者にデータを公開する必要があります。 販売担当者は頻繁に出張するため、ラップトップ コンピューターや携帯情報端末 (PDA) を使用して顧客データを変更したり、新しい発注を追加したりする必要があります。 販売担当者がラップトップ コンピューターをネットワークに接続したときに、このような変更をパブリッシャーと同期する必要があります。
このアプリケーションの場合、計画手順は次のようになります。
このアプリケーションのレプリケーション トポロジは既に存在しています。 しかし、クライアントで新しいプル サブスクリプションを作成する必要があります。 パブリケーションではパラメーター化されたフィルターを使用して、一意なデータのセットを各販売担当者にレプリケートする必要があります。
販売アプリケーションに必要な一般的なデータ アクセスに加えて、このアプリケーションでは販売担当者が必要なときにボタンをクリックしてプル サブスクリプションを同期できるようにする必要があります。 さらに、販売担当者がこのアプリケーションをインストールして実行するため、クライアント側でサブスクリプションを構成し、初期スナップショットを適用できる必要があります。 場合によっては、このアプリケーションは Windows で提供されているインフラストラクチャを利用してワイヤレス接続を探し、接続が検出された場合はサブスクリプションを自動的に同期します。
パブリッシャーに接続するときには、Windows 認証と仮想プライベート ネットワークの使用を含む、レプリケーションのセキュリティ ガイドラインすべてに従います。 Web 同期を実行する場合は、トランスポート層セキュリティ (TLS) (旧称 Secure Sockets Layer (SSL)) 接続を使用します。 詳しくは、「 Configure Web Synchronization」をご覧ください。
.NET Framework の機能を利用するために、アプリケーションはマネージド コード言語を使用して開発されます。
このような要件に基づき、このアプリケーションに必要なレプリケーション機能はレプリケーション管理オブジェクト (RMO) 管理インターフェイスによってすべて提供できます。
このシナリオ例は、SQL Server 用にダウンロードできる AdventureWorks サンプル アプリケーションに実装されています。