次の方法で共有


Sales Orders サンプル (マージ レプリケーション用)

更新 : 2006 年 4 月 14 日

この Readme ファイルでは、Sales Orders サンプルのインストールと実行方法について詳しく説明します。また、サンプルに関連した既知の問題についても説明します。

シナリオ

このサンプルは、モバイル ユーザーにデータを配信するマージ レプリケーション トポロジに焦点をあて、SQL Server 2005 のマージ レプリケーションのプログラミング機能についても示します。このサンプルは、標準的な Microsoft のデータ アクセス テクノロジとマージ レプリケーションを使用する Windows フォーム ベース アプリケーションであり、本社と定期的に同期をとりながら各自のローカル データのメンテナンスを販売員が行えるようにします。このサンプルは、SQL Server 2005 のすべてのエディションを実行するサブスクライバでサポートされます。パブリケーションでは SQL Server Compact Edition サブスクライバもサポートされます。このサンプル シナリオの詳細については、「Sales Orders サンプル シナリオ」を参照してください。

言語

  • C#
  • Transact-SQL

機能

Sales Orders サンプルは、次のマージ レプリケーション機能を示します。

  • レプリケーション管理オブジェクト (RMO: Replication Management Objects)
  • パラメータ化された行フィルタ
  • 事前計算済みパーティション
  • クライアント要求のパーティション スナップショット
  • アーティクルの種類に基づくパフォーマンス最適化
  • SQL Server Compact Edition と Express Edition のサブスクライバ
  • 自動 ID 範囲管理
  • ビジネス ロジック ハンドラ
  • Web 同期 (オプション)

サンプルで示されている、これらのレプリケーション機能の使用方法の詳細については、「Sales Orders サンプルの実装の詳細」を参照してください。

前提条件

このサンプルを実行する前に、次のソフトウェアがインストールされていることを確認してください。

  • SQL Server 2005 Service Pack 1 (SP1) (オプションでインストールされる次のコンポーネントを含む)
    • SQL Server データベース サービス (レプリケーションを含む)
    • クライアント接続コンポーネント
    • プログラミング モデル
    • 開発ツール (SDK を含む)
    • AdventureWorks サンプル OLTP データベース。このサンプル データベースは SQL Server 2005 に含まれており、SQL Server デベロッパー センターから入手することもできます。
    • SQL Server 2005 のサンプル。これらのサンプルは SQL Server 2005 に含まれており、SQL Server デベロッパー センターから入手することもできます。詳細については、「サンプルのインストール」を参照してください。
  • .NET Framework SDK 2.0 または Microsoft Visual Studio 2005 (.NET Framework SDK は無償で入手できます。詳細については、「.NET Framework SDK のインストール」を参照してください。
    ms160955.note(ja-jp,SQL.90).gifメモ :
    初期スナップショットを生成するには、パブリッシャで SQL Server 2005 SP1 を適用しておく必要があります。SP1 を適用していない SQL Server 2005 パブリッシャでこのサンプルを使用するには、SalesOrderHeader テーブルの FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID FOREIGN KEY 制約を削除してから、ON DELETE CASCADE 句を使用せずに再作成する必要があります。

必要な権限

Sales Orders サンプルの構成と実行を行うために必要な権限は、次のように、レプリケーション セキュリティ要件に基づいています。

  • レプリケーションの構成、AdvWorksSalesOrders InstallSales パブリケーションの作成、および初期スナップショットの生成を行う InstallSalesOrdersSample.bat を実行するには、Windows アカウントはパブリッシャで固定サーバー ロール sysadmin のメンバである必要があります。
  • Sales Orders サンプルでは、AdventureWorksLocal データベースの作成、ローカル サブスクリプションの作成、およびマージ エージェントの実行によるサブスクリプションの初期化、再初期化、同期など、さまざまなデータベース エンジン タスクやレプリケーション タスクを実行します。サブスクライバでサンプルの実行可能ファイル (SalesOrders.exe) を正常に実行するためには、Windows アカウントは少なくとも、サブスクライバでの CREATE DATABASE 権限を持つ必要があります。
    ms160955.note(ja-jp,SQL.90).gifメモ :
    ローカル データベースとサブスクリプションが存在する場合、Windows アカウントは少なくとも、アプリケーションを実行するサブスクライバの AdventureWorksLocal データベース上で、固定データベース ロール db_owner のメンバである必要があります。
  • サブスクリプションを初期化してパブリッシャ側と同期するには、パブリッシャ (Web 同期を使用する場合は Web サーバー) への接続に使用する Windows アカウントが次の要件を満たしている必要があります。
    • パブリッシャ側に、パブリケーション データベースのユーザーに関連付けられた有効なログインを持っている。
    • ディストリビュータ側に、ディストリビューション データベースのユーザー (guest ユーザー) に関連付けられた有効なログインを持っている。
    • AdvWorksSalesOrders パブリケーションのパブリケーション アクセス リスト (PAL) のメンバである。

サンプルのビルドと構成

サンプル プロジェクトのビルドとレプリケーション トポロジの構成を行うには、次の手順を行う必要があります。

  • パブリッシャでレプリケーション インストール スクリプトを実行する。
  • (省略可) インターネット インフォメーション サービス (IIS) サーバーを構成して、マージ レプリケーションの Web 同期をサポートする。これが行われていない場合、サンプルの Web 同期機能は使用できません。
  • サブスクライバでサンプルの app.config ファイルの構成設定を変更する。
  • サブスクライバで Visual Studio 2005 または .NET Framework 2.0 SDK を使用してサンプルをビルドする。
  • サブスクライバで C:\Program Files\Microsoft SQL Server\90\COM ディレクトリに BusinessLogic.dll アセンブリのコピーを配置する。Web 同期を使用する場合は、Web サーバーの C:\Program Files\Microsoft SQL Server\90\COM ディレクトリに BusinessLogic.dll のコピーを配置する必要もあります。

パブリッシャで Sales Orders サンプルを構成するには

  1. AdventureWorks サンプル データベースがインストールされ、データベースがアタッチされていることを確認します。データベースがアタッチされていない場合は、SQL Server Books Online の「AdventureWorks のサンプル データベースとサンプルのインストール」を参照してください。

  2. SQL Server データベース エンジン サンプルがインストールされていることを確認します。

    詳細については、「サンプルのインストール」を参照してください。

  3. SQL Server エージェントが実行されていることを確認します。SQL Server Management Studio のオブジェクト エクスプローラで、ステータスの表示とサービスの開始を行うことができます。

  4. Sales Order サンプル スクリプトのインストール場所へ移動します。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts です。

  5. (省略可) パブリッシャ、または Web 同期で使用するサーバーで、SSL (Secure Sockets Layer) を構成します。SSL は、IIS サーバーとすべてのサブスクライバ間の通信に必要です。SSL を構成するには、使用する IIS サーバーのサーバー証明書を指定します。

  6. InstallSalesOrdersSample.bat を実行し、要求された場合に、スナップショット エージェント ジョブを実行する Windows アカウントのログイン名 (大文字小文字を区別した "DOMAIN\login" の形式) とパスワードを入力します。これによって sqlcmd.exe が呼び出されて CreateAdvWorksSalesOrdersPublication.sql が実行され、次のように動作します。

    • ローカル サーバーでレプリケーションが構成されていることを確認し、構成されていない場合は、ディストリビューション データベースを使用するローカル ディストリビュータをパブリッシャとして構成する。
    • クライアントでデータ アクセスに使用されるストアド プロシージャとユーザー定義関数を削除し、再作成する。
    • AdvWorksSalesOrders パブリケーションを削除し、再作成する。
    • パブリケーションにアーティクルを追加する。
    • ディストリビュータでビジネス ロジック ハンドラを登録する。
    • スナップショット エージェント ジョブを開始し、初期スナップショットを生成する。

    バッチ ファイルを使用してパブリッシャに仮想ディレクトリを自動的に構成し、Web 同期をサポートすることもできます。インストール時にパブリッシャで仮想ディレクトリを構成しない場合、または別の Web サーバーを使用する予定の場合、サンプルの Web 同期機能を使用する前に Web 同期の構成ウィザードを実行する必要があります。

  7. (省略可) Web 同期の構成ウィザードを実行し、Web 同期をサポートするように IIS サーバーを構成します。InstallSalesOrdersSample.bat によって仮想ディレクトリが正常に作成された場合、または Web 同期を使用しない場合は、この手順をスキップします。このウィザードの使用方法の詳細については、「Web 同期用に IIS を構成する方法」を参照してください。

  8. 続行する前に、AdvWorksSalesOrders パブリケーションのスナップショット エージェント ジョブが正常に終了していることを確認します。このジョブのステータスは、レプリケーション モニタを使用して表示することができます。レプリケーション モニタを使用してスナップショット エージェント ジョブのステータスを表示する方法の詳細については、SQL Server Books Online のトピック「パブリケーションに関連付けられているエージェントの情報を表示したりタスクを実行する方法 (レプリケーション モニタ)」を参照してください。

サブスクライバで Sales Orders サンプルのビルドと構成を行うには

  1. コマンド プロンプトで、SQL Server 2005 サンプルのインストール ディレクトリに移動します。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples です。

  2. .NET Framework または Microsoft Visual Studio 2005 のコマンド プロンプトで、次のコマンドを実行します。

    sn -k SampleKey.snk

    ms160955.note(ja-jp,SQL.90).gifメモ :
    このキーを別のサンプルで使用するために既に作成してある場合は、この手順を省略します。
  3. Microsoft Visual C# で、Sales Orders サンプル ソリューションのインストール場所に移動します。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\CS です。

  4. Visual Studio 2005 で SalesOrders.sln ソリューション ファイルを開きます。

  5. プロジェクトをビルドします。

  6. プロジェクトの出力フォルダで、SalesOrders.exe.config ファイルを編集し、次のように変更します。

    • サブスクライバ キーの値をローカル サーバー名で置き換える。
    • パブリッシャ キーの値をパブリッシャで以前に構成したサーバー名で置き換える。
    • (省略可) Web 同期を使用してパブリッシャへ接続する場合、WebSynchronizationUrl キーの値を置き換える。これは実行時にも行うことができます。
    • (省略可) 接続時に同期する機能を使用する場合、SyncWhenConnectedInterval キーを使用して同期間隔を秒単位で設定します。
    ms160955.note(ja-jp,SQL.90).gifメモ :
    レプリケーションは、サーバー名に localhost をサポートしていません。
  7. C:\Program Files\Microsoft SQL Server\90\COM ディレクトリに BusinessLogic.dll アセンブリのコピーを配置します。

  8. (省略可) Web 同期を使用する場合は、Web サーバーの C:\Program Files\Microsoft SQL Server\90\COM ディレクトリに BusinessLogic.dll アセンブリのコピーを配置します。

サンプルの実行

Sales Orders サンプルを実行してデータを同期するには

  1. リモート接続がパブリッシャとサブスクライバで有効になっており (TCP/IP または名前付きパイプ)、SQL Server エージェント サービスが実行されていることを確認します。

  2. (省略可) サブスクライバで、「マージ レプリケーションの Web 同期を構成する方法 (レプリケーション Transact-SQL プログラミング)」の「Web 同期を使用するようにサブスクリプションを構成するには」の手順に従って、診断モードで Web サーバーに接続して Web 同期接続をテストします。

    ms160955.note(ja-jp,SQL.90).gifメモ :
    Web 同期の使用時に HTTP エラーが発生する場合は、Internet Explorer を開き、[ツール] メニューの [インターネット オプション] をクリックし、[接続] をクリックして、[LAN の設定] をクリックします。[設定を自動的に検出する] チェック ボックスがオフになっていることを確認します。
  3. Visual Studio 2005 またはコマンド プロンプトから SalesOrders.exe を開始します。初めてアプリケーションを実行する場合、サブスクリプション データベースとサブスクリプションが作成され、マージ エージェントが開始されてサブスクリプションを初期化します。

  4. サブスクリプション データが初期化されると、[Sales Orders] フォームを読み込み、販売員 "adventure-works\garrett1" に属する既存の注文が一覧表示されます。

  5. [Sales Orders] フォームを使用して、売上データに次のような変更を行うことができます。

    • 販売注文情報の編集
    • 販売注文への新しいアイテムの追加
    • 販売注文からのアイテムの削除
    • 販売注文でのアイテムの注文数の変更
  6. [Synchronize] メニューから同期メソッドを選択し、サブスクリプションを同期します。

  7. (省略可) [Synchronize When Connected] をチェックし、サブスクリプションを自動的に同期します。app.config ファイルの SyncWhenConnectedInterval キーを使用して、バックグラウンドでの同期のための同期間隔を設定します。

    ms160955.note(ja-jp,SQL.90).gifメモ :
    [Synchronize When Connected] 機能は、Microsoft プラットフォームでは使用できません。詳細については、「Sales Orders サンプルの実装の詳細」を参照してください。

Sales Orders サンプルの同期の詳細設定オプションを使用するには

  1. [Synchronize] メニューの [Advanced] から、次のオプションの 1 つを選択します。

    • (省略可) 再初期化オプションを選択して、サブスクリプションを再初期化する。
    • (省略可) [Web Synchronization Options] を選択して、セキュリティで保護されている HTTPS 接続経由で Web サーバーにアクセスするために使用する、インターネット URL と Windows 認証資格情報を指定する。このオプションを使用するには、Web 同期のために IIS サーバーが既に構成されている必要があります。
      ms160955.note(ja-jp,SQL.90).gifメモ :
      アップロードやダウンロードのみの同期は、Web 同期ではサポートされません。Web 同期を有効にすると、[Only Upload Data] メニュー項目は無効になります。
    • (省略可) [Get Subscription Status] を選択し、最新のマージ エージェント セッションの結果を表示する。

サンプルの削除

次の手順に従って、Sales Orders サンプルを削除します。

サブスクリプションのみを削除するには

  1. サブスクライバで、次の Transact-SQL スクリプトを実行し、プル サブスクリプションを削除します。

    -- This batch is executed at the Subscriber to remove 
    -- the Sales Orders sample subscription.
    DECLARE @publisher AS sysname;
    
    -- change this value to the name of the Publisher server.
    SET @publisher = N'PUBSERVER'; 
    
    USE [AdventureWorksLocal]
    EXEC sp_dropmergepullsubscription 
      @publisher = @publisher, 
      @publisher_db = N'AdventureWorks',
      @publication = N'AdvWorksSalesOrders';
    GO
    
  2. パブリッシャで、次の Transact-SQL スクリプトを実行し、プル サブスクリプションを登録解除します。

    -- This batch is executed at the Publisher to remove 
    -- the Sales Orders sample subscription.
    DECLARE @subscriber AS sysname;
    
    -- change this value to the name of the Subscriber server.
    SET @subscriber = N'SUBSERVER'; 
    
    USE [AdventureWorks]
    EXEC sp_dropmergesubscription 
      @publication = N'AdvWorksSalesOrders', 
      @subscriber = @subscriber, 
      @subscriber_db = N'AdventureWorksLocal';
    GO
    

Sales Orders サンプルを削除するには

  1. パブリッシャで、Sales Orders サンプル スクリプトのインストール場所へ移動します。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts です。

  2. バッチ ファイル RemoveSalesOrdersSample.bat を実行します。

  3. 要求された場合、「Y」と入力して Enter キーを押し、パブリッシャのレプリケーション オブジェクトのすべてと、サブスクリプション データベースのレプリケーション オブジェクトのすべてを削除し、パブリッシャでパブリッシングとディストリビューションをアンインストールします。

    ms160955.note(ja-jp,SQL.90).gif重要 :
    このスクリプトを使用する場合、レプリケーション インフラストラクチャはすべて削除されます。このパブリッシャまたはディストリビュータを使用する他のパブリケーションを作成済みの場合は、DropAdvWorksSalesOrdersPublication.sql を実行しないでください。その代わりに、AdvWorksSalesOrders パブリケーションを手動で削除します。詳細については、SQL Server Books Online の「パブリケーションを削除する方法 (SQL Server Management Studio)」または「パブリケーションを削除する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
  4. AdventureWorksLocal データベースのサブスクライバで、sp_removedbreplication (Transact-SQL) を実行します。

  5. データベース コンテキストを master データベースに変更し、DROP DATABASE AdventureWorksLocal を実行します。

コメント

サンプルは、学習に使用することのみを目的に提供されています。これらは、運用環境での使用を目的としたものではなく、運用環境でのテストも実施されていません。Microsoft からは、これらのサンプルについてのテクニカル サポートは提供されません。サンプル アプリケーションおよびサンプル アセンブリは、システム管理者の許可なしに、運用中の SQL Server データベースやレポート サーバーに接続しないようにしてください。

参照

概念

レプリケーション サンプル

その他の技術情報

レプリケーションのプログラミング計画
レプリケーション開発者向けの情報

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

変更内容 :
  • 前提条件を SQL Server 2005 SP1 に更新しました。
  • SQL Server 2005 パブリッシャでのサンプルの実行方法に関する注意事項を追加しました。

2005 年 12 月 5 日

変更内容 :
  • 配置手順を更新しました。
  • サンプルの更新を反映して、キーの作成や配置に関する情報を更新しました。