チュートリアル : データ ソース構成ウィザードを使用した接続の頻度があまり高くないアプリケーションの作成
このチュートリアルでは、データ ソース構成ウィザードの実行時に Synchronization Services を組み込むことによって、接続の頻度があまり高くないアプリケーションを開発する詳細な手順について説明します。
接続の頻度があまり高くないアプリケーションとは、リモート データに常にアクセスできるとは限らないアプリケーションのことです。 これらのアプリケーションは常にアクセスできるとは限らないため、クライアントに存在するローカル データベースのデータを使用し、リモート データベースとローカル データベースの間でデータを定期的に同期します。 ローカル データベースとリモート データベースの間のデータの同期は、Microsoft Synchronization Services for ADO.NET (Microsoft.Synchronization.Data 名前空間) によって行います。 この同期を新規に作成するには、[新しい項目の追加] ダイアログ ボックスでローカル データベース キャッシュをアプリケーションに追加する方法と、データ ソース構成ウィザードを実行する方法があります。 このチュートリアルでは、後者について説明します。
このチュートリアルでは次のタスクを行います。
新しい Windows フォームアプリケーションを作成します。
データ ソース構成ウィザードを実行して、ローカル データベース キャッシュを持つ型指定されたデータセットの作成と構成を行います。
データの表示および同期の確認を行う Windows フォームを作成します。
データベース間の同期を開始するコードを追加します。
同期されたレコードの数に関する情報を表示するメッセージ ボックスを追加します。
必須コンポーネント
このチュートリアルを実行するための要件は次のとおりです。
Northwind サンプル データベースの SQL Server バージョンにアクセスします。 詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
SQL Server Visual Studio を実行しているコンピューターを最適化します。
Windows フォーム アプリケーションの作成
Windows フォームにデータを表示するので (同期が成功したことを検証するため)、このチュートリアルでは最初に新しい Windows フォーム アプリケーションを作成します。
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
新しい Windows フォーム アプリケーションを作成するには
[ファイル] メニューで新しいプロジェクトを作成します。
プロジェクトに「OCSWalkthrough2」という名前を付けます。
[Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。 詳細については、「クライアント アプリケーションの開発」を参照してください。
OCSWalkthrough2 プロジェクトが作成され、ソリューション エクスプローラーに追加されます。
ローカル データベース キャッシュが含まれるデータ ソースの作成
このチュートリアルでは、データ ソース構成ウィザードを使用してアプリケーションに Synchronization Services を組み込むので、次の手順はウィザードの起動です。 この手順では、ウィザードを起動し、Northwind サンプル データベース内の Customers テーブルに基づくデータセットを作成します。 データセットに追加するデータベース テーブルを選択するときに、ローカル データ キャッシュを有効にするオプションを選択します。
ローカル データベース キャッシュが含まれるデータ ソースを作成するには
[データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データ ソースの種類を選択] ページで、[データベース] を選択されている既定値のままにし、[次へ] をクリックします。
[データ接続の選択] ページで、次のいずれかの操作を行います。
SQL Server バージョンの Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は、これを選択します。
または
[新しい接続] をクリックして [データ ソースの選択] ダイアログ ボックスまたは [接続の追加]/[接続の変更] ダイアログ ボックスを開き、SQL Server バージョンの Northwind データベースへの新しい接続を作成します。 詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。
Customers テーブルを選択します。
[ローカル データベース キャッシュを有効にする] をオンにします。
[データベース オブジェクトの選択] ページで [次へ] をクリックします
[キャッシュするテーブルの選択] ページで Customers テーブルを選択します。
注意
[同期モード] は既定値の増分のままにします。増分モードでは、最後の同期以降に行われた変更のみを同期します。スナップショット モードでは、ローカルにキャッシュされたテーブル全体が、サーバーにある現在のテーブルで置き換えられます。どちらを選択しても、初回時はテーブル全体がローカル データベース キャッシュに読み込まれ、必ず現在のデータ一式から開始することになります。
[完了] をクリックします。
ローカルにキャッシュされたいずれかのテーブルの同期モードが [初回同期後の新規および増分の変更] に設定されている場合、SQL Server データベースについて更新が必要となり、[SQL スクリプト生成] ダイアログ ボックスが開きます。 既定では、このダイアログ ボックスの両方のオプションが選択されています。
[増分の変更のためにサーバーを更新する]。 サーバーを自動的に更新して、このダイアログ ボックスを閉じた直後から増分の同期を有効にするには、このオプションを選択します。
[SQL スクリプトを後で使用するためプロジェクトに保存する]。 生成された SQL スクリプトをプロジェクトへ追加して、後で SQL Server データベースで実行できるようにするには、このオプションを選択します。 元に戻すスクリプトも生成されてプロジェクトに追加されます。
[OK] をクリックします。
アプリケーションでの同期の有効化
前の手順でデータ ソース構成ウィザードの実行を完了すると、データ同期が構成されます。 これで、アプリケーションに次のものが含まれました。
Northwind データベースのローカル バージョン (Northwind.sdf)。
データ同期設定情報ファイル (NorthwindCache.sync)。
データ ソース構成ウィザードによって生成された、型指定されたデータセット NorthwindDataSet.xsd。 これには、ローカル データベースからデータが読み込まれた Customers テーブルが含まれます。
初回の同期が実行されると、ローカル データベース キャッシュ内の Customers テーブルがサーバー データベースと同期されます。 つまり、サーバー上のデータベースの [得意先] テーブルに現在のデータで [得意先] テーブルで、ローカルの SQL Server コンパクト データベース (Northwind.sdf) が表示されます。
SQLScripts フォルダー。トラッキング列、削除された項目テーブル、サーバーでの変更を追跡する必要なトリガーの作成に使用されるスクリプトが含まれています。
SQLUndoScripts フォルダー。トラッキング列、削除された項目テーブル、サーバーに追加された必要なトリガーを削除するスクリプトが含まれています。
注意
SQL スクリプトは、サーバーで変更を加える必要がある場合にのみ作成されます。削除された項目テーブルとトラッキング列が既にサーバーにある場合は、スクリプトは作成されません。
次の Microsoft Synchronization Services for ADO.NET DLL への参照。
Microsoft.Synchronization.Data
Microsoft.Synchronization.Data.Server
Microsoft.Synchronization.Data.SqlServerCe
アプリケーションへの同期機能の追加
データ同期を構成した後も、アプリケーションに同期機能を追加する必要があります。 具体的には、同期処理を開始するコードを追加する必要があります。 さらに、データを表示し、同期処理を開始するコントロールもフォームに追加します。
まず、[データ ソース] ウィンドウから [Customers] ノードをフォームにドラッグして、DataGridView コントロールを追加します。 DataGridView には、ローカル データベース キャッシュ (プロジェクトに置かれている Northwind.sdf データベース) から Customers テーブルが表示されるので、ローカル データベースとリモート データベースの間でデータが同期されていることを検証できます。 同期処理を開始するボタンを追加することもできます。
データ バインド フォームを作成してデータ同期を開始および検証するには
[データ ソース] ウィンドウから Form1 に [Customers] ノードをドラッグします。
ツールボックスから Form1 に Button コントロールをドラッグします。 Name プロパティを「SynchronizeButton」に設定し、Text プロパティを「Synchronize Now」に変更します。
[Synchronize Now] をダブルクリックし、ダブルクリック イベント ハンドラーを作成して、コード エディターでフォームを開きます。
同期処理を開始するコードを追加し、データセットで Customers テーブルを再入力します。 イベント ハンドラーのコードは次のようになります。
注意
syncStats 変数を宣言するコードの行については、このドキュメントで後に説明します。
' Call the Synchronize method to synchronize ' data between local and remote databases. Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent() Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _ syncAgent.Synchronize() ' After synchronizing the data, refill the ' table in the dataset. Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
// Call the Synchronize method to synchronize // data between local and remote databases. NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent(); Microsoft.Synchronization.Data.SyncStatistics syncStats; syncStats = syncAgent.Synchronize(); // After synchronizing the data, refill the // table in the dataset. this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
アプリケーションのテスト
アプリケーションをテストするには
F5 キーを押します。
アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。
サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。
Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。
1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。
フォームに戻り、[Synchronize Now] をクリックします。
リモート データベースへの変更がローカル データベースと同期され、フォームに表示されることを検証します。
フォームを閉じます (デバッグを停止します)。
同期からの情報の取得
Synchronize メソッドの呼び出しは、同期処理を開始するだけではありません。 Synchronize メソッドは、同期に関する情報にアクセス可能な SyncStatistics オブジェクトも返します。
同期の統計にアクセスするには
コード エディターで Form1 を開き、前の手順で追加したコードの下にある SynchronizeButton_Click イベント ハンドラーの末尾に次のコードを追加します。
MessageBox.Show("Changes downloaded: " & _ syncStats.TotalChangesDownloaded.ToString)
MessageBox.Show("Changes downloaded: " + syncStats.TotalChangesDownloaded.ToString());
アプリケーションのテスト
アプリケーションをテストするには
F5 キーを押します。
アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。
サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。
Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。
1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。
フォームに戻り、[Synchronize Now] をクリックします。
同期されたレコードに関する情報が含まれるメッセージ ボックスが表示されます。
リモート データベースへの変更がローカル データベースと同期され、フォームに表示されることを検証します。
次の手順
アプリケーションの要件によっては、アプリケーションにローカル データベース キャッシュを構成した後で、さらに操作を追加する必要があります。 たとえば、このアプリケーションに対して次のような拡張を行うことができます。
双方向同期を実装して、ローカル データベース キャッシュでの変更をサーバーにアップロードできるようにします。 詳細については、「方法 : ローカル データベースとリモート データベースで双方向同期を構成する」を参照してください。
クライアント アプリケーションを、ローカル データベース キャッシュと共に配置します。 詳細については、「チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置」を参照してください。
参照
処理手順
チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置