Share via


方法 : SQL Server の変更の追跡を使用するようにデータ同期を構成する

更新 : 2008 年 7 月

Visual Studio 2008 SP1 では、SQL Server 2008 の変更追跡機能のサポートが追加されました。Synchronization Services の構成時に SQL Server の変更の追跡を有効にする機能が、[データ同期の構成] ダイアログ ボックスおよびデータ ソース構成ウィザードに追加されています。

Cc714038.alert_note(ja-jp,VS.90).gifメモ :

SQL Server の変更の追跡を有効にするオプションは、リモート データベース サーバーへの接続が SQL Server 2008 データベースに接続するように構成されている場合に限り、使用できます。

[データ同期の構成] ダイアログ ボックスを使用した SQL Server の変更の追跡の有効化

次の手順は、[データ同期の構成] ダイアログ ボックスを使用して Synchronization Services を構成するときに、データ同期を構成して SQL Server の変更の追跡を有効にするために必要な操作を示します。[データ同期の構成] ダイアログ ボックスで実際のデータを使用して同期の構成を行う例については、「チュートリアル : 接続の頻度があまり高くないアプリケーションの作成」を参照してください。

Cc714038.alert_note(ja-jp,VS.90).gifメモ :

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

[データ同期の構成] ダイアログ ボックスを使用してデータ同期を構成するには

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  2. [ローカル データベース キャッシュ] テンプレートをクリックします。

  3. 別の名前を指定するか、LocalDataCache1.sync という既定の名前を受け入れます。

  4. [追加] をクリックします。

    .sync ファイルがプロジェクトに追加され、[データ同期の構成] ダイアログ ボックスが開きます。

  5. [サーバー接続] を接続先のリモート SQL Server 2008 データベースに設定します。

  6. [クライアント接続] を、ローカルでデータを格納する SQL Server Compact 3.5 ローカル データベースに設定します。ローカル データベースがない場合は、"DatabaseName.sdf (新規)" という既定の設定を受け入れることで、プロジェクトに新しいデータベースを作成できます。新しいデータベースの名前は、サーバー上のデータベースの名前に基づいたものになります。

    Cc714038.alert_note(ja-jp,VS.90).gifメモ :

    既定では、[OK] ボタンは無効になっていますが、[キャッシュされたテーブル] 領域にテーブルを追加すると有効になります。

  7. [SQL Server の変更履歴を使用する] を選択します。既定では、[サーバー接続] が SQL Server 2008 データベースに設定されている場合、このオプションが選択されています。

  8. [追加] をクリックして [オフライン使用のためのテーブルの構成] ダイアログ ボックスを開きます。

  9. ローカル データベース キャッシュに追加するテーブルを選択し、同期モード (同期時にダウンロードするデータ) を構成します。

    [ダウンロードするデータ]

    • [初回同期後の新規および増分の変更]

      この設定では、前回のデータ同期以降に変更されたレコードがサーバーから取得されます。初めて同期が呼び出されたときは、テーブル全体がダウンロードされます。

    • [毎回テーブル全体]

      この設定では、ローカル テーブルは、現在サーバーにあるテーブルで置き換えられます。

      Cc714038.alert_note(ja-jp,VS.90).gifメモ :

      同期モードは、オフラインで使用するように構成するテーブルごとに設定します。無効になっているその他のオプションは、SQL Server の変更の追跡が有効になっていない場合に限り、使用できます。

  10. [開く] をクリックします。

  11. [コード スニペットの表示] をクリックして [コード例] ダイアログ ボックスを開きます。このダイアログ ボックスには、同期処理を開始するコード例が用意されています。このコードをクリップボードにコピーし、プログラムに貼り付けることができます。

  12. [詳細設定] の各オプションを設定することもできます。

    [データ同期の構成] ダイアログ ボックスの [詳細設定] のオプションには、テーブルを個別に同期するか、単一のトランザクションで同期するかを制御できる設定が用意されています。これらのオプションによって、n 層アプリケーション用にコード分離を有効にすることもできます。

    • [テーブルを単一トランザクションで同期する]。既定では、このオプションは選択されていないため、すべてのテーブルが個別に同期されます。エラーが発生した場合、エラーが発生したテーブルの変更のみがロールバックされます。このオプションを選択すると、すべてのテーブルが単一のトランザクションで同期されます。エラーが発生した場合、すべてのテーブルのすべての変更がロールバックされます。

    • [同期コンポーネントの作成]。既定では、クライアントとサーバーの両方に対して同期コンポーネントが生成されます。アプリケーションの要件を満たすように、このオプションを [クライアントのみ] または [サーバーのみ] に設定できます。

    • [サーバー プロジェクトの場所]。既定では、サーバーの同期コンポーネントは現在のプロジェクトに生成されます。このオプションを設定すると、ソリューション内の任意の Visual Basic プロジェクトまたは Visual C# プロジェクトにサーバーの同期コンポーネントを生成できます。

    • [クライアント プロジェクトの場所]。既定では、クライアントの同期コンポーネントは現在のプロジェクトに生成されます。このオプションを設定すると、ソリューション内の任意の Visual Basic プロジェクトまたは Visual C# プロジェクトにクライアントの同期コンポーネントを生成できます。

  13. [開く] をクリックします。

  14. ローカルにキャッシュされたいずれかのテーブルの同期モードが [初回同期後の新規および増分の変更] に設定されている場合、SQL Server データベースについて更新が必要となり、[SQL スクリプト生成] ダイアログ ボックスが開きます。既定では、このダイアログ ボックスの両方のオプションが選択されています。

    • [増分の変更のためにサーバーを更新する]。サーバーを自動的に更新して、このダイアログ ボックスを閉じた直後から増分の同期を有効にするには、このオプションを選択します。

    • [SQL スクリプトを後で使用するためプロジェクトに保存する]。生成された SQL スクリプトをプロジェクトへ追加して、後で SQL Server データベースで実行できるようにするには、このオプションを選択します。元に戻すスクリプトも生成されてプロジェクトに追加されます。

  15. [開く] をクリックします。

    Cc714038.alert_note(ja-jp,VS.90).gifメモ :

    SQL Server の変更の追跡は、サーバーが変更の追跡を有効にするように更新されるまでは、有効になりません。

    [OK] をクリックすると、データ ソース構成ウィザードが起動し、[データベース オブジェクトの選択] ページが表示されます (ローカル データベース ファイルがプロジェクトに追加されるたびに、データ ソース構成ウィザードが自動的に起動します)。

  16. 型指定されたデータセットに追加するテーブルを選択します。

  17. [終了] をクリックします。

[データ同期の構成] ダイアログ ボックスでデータ同期を構成した後、同期処理を開始するコードをアプリケーションに追加する必要があります。

Cc714038.alert_note(ja-jp,VS.90).gifメモ :

データを同期すると、データセット内のテーブルやアプリケーションの他のオブジェクトではなく、ローカル データベースが更新されます。必ず、アプリケーション データ ソースに、ローカル データベースから更新されたデータを再読み込みしてください。たとえば、TableAdapter.Fill メソッドを呼び出して、データセットのデータ テーブルにローカル データベースから更新されたデータを読み込みます。

同期処理を開始するコードを追加するには

  • 前の手順で [コード例] ダイアログ ボックスからコードをコピーした場合は、それをアプリケーションに貼り付けるだけで済みます。コピーしていない場合は、アプリケーションの同期処理を開始する任意の場所に次のコードを挿入します。

    ' Call SyncAgent.Synchronize() to initiate the synchronization process.
    ' Synchronization only updates the local database, not your project's data source.
    Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
    
    ' Add code here to refill your application's data source
    ' with the updated data from the local database.
    
    // Call SyncAgent.Synchronize() to initiate the synchronization process.
    // Synchronization only updates the local database, not your project's data source.
    LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats =
    syncAgent.Synchronize();
    
    // Add code to refill your application's data source
    // with the updated data from the local database.
    

データ ソース構成ウィザードを使用した SQL Server の変更の追跡の有効化

次の手順は、データ ソース構成ウィザードを使用して、型指定されたデータセットを構成するときに、データ同期を構成して SQL Server の変更の追跡を有効にするために必要な操作を示します。

データ ソース構成ウィザードで実際のデータを使用して、型指定されたデータセットの作成時に同期の構成を行う方法を示す例については、「チュートリアル : データ ソース構成ウィザードを使用した接続の頻度があまり高くないアプリケーションの作成」を参照してください。

データ ソース構成ウィザードを使用して SQL Server の変更の追跡を使用するようにデータの同期を構成するには

  1. [データ] メニューの [データ ソースの表示] をクリックします。

  2. [データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データ ソースの種類を選択] ページで、[データベース] を選択されている既定値のままにし、[次へ] をクリックします。

  4. [データ接続の選択] ページで、次のいずれかの操作を行います。

    • 目的の SQL Server 2008 データベースへのデータ接続がドロップダウン リストに表示されている場合は、これを選択します。

      または

    • [新しい接続] をクリックして [データ ソースの選択] ダイアログ ボックスまたは [接続の追加]/[接続の変更] ダイアログ ボックスを開き、SQL Server 2008 データベースへの新しい接続を作成します。詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。

  5. データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。

  6. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  7. [データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。

  8. ローカル データベース キャッシュに追加するテーブルを選択します。

  9. [ローカル データベース キャッシュを有効にする] をオンにします。

  10. [データベース オブジェクトの選択] ページで [次へ] をクリックします

  11. [キャッシュするテーブルの選択] ページでキャッシュするテーブルを選択します。

  12. [同期モード] を設定します。

    • [初回同期後の新規および増分の変更]

      この設定では、前回のデータ同期以降に変更されたレコードがサーバーから取得されます。初めて同期が呼び出されたときは、テーブル全体がダウンロードされます。

    • [毎回テーブル全体]

      この設定では、ローカル テーブルは、現在サーバーにあるテーブルで置き換えられます。

  13. [SQL Server の変更履歴を使用する] を選択します。既定では、[サーバー接続] が SQL Server 2008 データベースに設定されている場合、このオプションが選択されています。

  14. [終了] をクリックします。

  15. ローカルにキャッシュされたいずれかのテーブルの同期モードが [初回同期後の新規および増分の変更] に設定されている場合、SQL Server データベースについて更新が必要となり、[SQL スクリプト生成] ダイアログ ボックスが開きます。既定では、このダイアログ ボックスの両方のオプションが選択されています。

    • [増分の変更のためにサーバーを更新する]。サーバーを自動的に更新して、このダイアログ ボックスを閉じた直後から増分の同期を有効にするには、このオプションを選択します。

    • [SQL スクリプトを後で使用するためプロジェクトに保存する]。生成された SQL スクリプトをプロジェクトへ追加して、後で SQL Server データベースで実行できるようにするには、このオプションを選択します。元に戻すスクリプトも生成されてプロジェクトに追加されます。

  16. [開く] をクリックします。

    Cc714038.alert_note(ja-jp,VS.90).gifメモ :

    SQL Server の変更の追跡は、サーバーが変更の追跡を有効にするように更新されるまでは、有効になりません。

データ ソース構成ウィザードを完了した後、同期処理を開始するコードをアプリケーションに追加する必要があります。

Cc714038.alert_note(ja-jp,VS.90).gifメモ :

データを同期すると、データセット内のテーブルやアプリケーションの他のオブジェクトではなく、ローカル データベースが更新されます。必ず、アプリケーション データ ソースに、ローカル データベースから更新されたデータを再読み込みしてください。たとえば、TableAdapter.Fill メソッドを呼び出して、データセットのデータ テーブルにローカル データベースから更新されたデータを読み込みます。

同期処理を開始するコードを追加するには

  • アプリケーションの同期処理を開始する任意の場所に次のコードを挿入します。

    ' Call SyncAgent.Synchronize() to initiate the synchronization process.
    ' Synchronization only updates the local database, not your project's data source.
    Dim syncAgent As LocalDataCache1SyncAgent = New LocalDataCache1SyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize()
    
    ' Add code here to refill your application's data source
    ' with the updated data from the local database.
    
    // Call SyncAgent.Synchronize() to initiate the synchronization process.
    // Synchronization only updates the local database, not your project's data source.
    LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats =
    syncAgent.Synchronize();
    
    // Add code to refill your application's data source
    // with the updated data from the local database.
    

参照

処理手順

チュートリアル : 接続の頻度があまり高くないアプリケーションの作成

チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置

接続の頻度があまり高くないデータのサンプル

概念

接続の頻度があまり高くないアプリケーションの概要

その他の技術情報

接続の頻度があまり高くないアプリケーション

変更履歴

日付

履歴

原因

2008 年 7 月

トピックを追加

SP1 機能変更