次の方法で共有


データベースを配置する (C#)

作成者: Scott Mitchell

ASP.NET Web アプリケーションをデプロイするには、開発環境から運用環境に必要なファイルとリソースを取得する必要があります。 データ ドリブン Web アプリケーションの場合、これにはデータベース スキーマとデータが含まれます。 このチュートリアルは、開発環境から運用環境にデータベースを正常にデプロイするために必要な手順について説明するシリーズの最初のチュートリアルです。

はじめに

ASP.NET Web アプリケーションをデプロイするには、開発環境から運用環境に必要なファイルとリソースを取得する必要があります。 過去 6 回のチュートリアルでは、簡単なブック レビュー Web アプリケーションのデプロイについて説明しました。 このデモ サイトは、多数のサーバー側リソース (ASP.NET ページ、構成ファイル、 Web.sitemap ファイルなど) と、イメージや CSS ファイルなどのクライアント側リソースで構成されていました。 しかし、データ ドリブン Web アプリケーションはどうでしょうか。 データベースを使用する Web アプリケーションをデプロイするには、追加の手順を実行する必要がありますか?

次のいくつかのチュートリアルでは、データドリブン Web アプリケーションをデプロイするために必要な手順に対処します。 このチュートリアルではまず、開発環境から運用環境にデータベースのスキーマと内容を取得する方法を確認しますが、後続のチュートリアルでは必要な構成の変更を確認します。 その後、Application Services (メンバーシップ、ロール、プロファイルなど) を使用するデータベースをデプロイする際の課題について説明します。

更新された書籍レビュー Web アプリケーションの確認

データドリブン Web アプリケーションのデプロイを示すために、ブック レビュー Web アプリケーションを単純な静的 Web サイトからデータドリブン Web サイトに更新しました。 前と同様に、このチュートリアルのダウンロードには 2 つのバージョンのアプリケーションがあります。1 つは Web アプリケーション プロジェクト モデルを使用し、1 つは Web サイト プロジェクト モデルを使用します。

更新された Book Reviews Web アプリケーションでは、サイトApp_Dataのフォルダー (~/App_Data/Reviews.mdf) に格納されている SQL Server 2008 Express Edition データベースが使用されます。 SQL Server 2008 がコンピューターにインストールされている場合、デモはエラーなしで実行されます。 古いバージョンのSQL Serverを使用している場合は、無料のSQL Server 2008 Express Edition をインストールするか、このチュートリアルのダウンロードで利用可能なデータベース スクリプトを使用してデータベースを自分で作成できます。

データベースには Reviews.mdf 、次の 4 つのテーブルが含まれています。

  • Genres - テクノロジ、小説、ビジネスなど、各ジャンルのレコードが含まれます。
  • Books- 各レビューのレコードが含まれており、中には 、 GenreIdReviewDateReviewなどのTitle列があります。
  • Authors - レビューされた書籍に投稿した各著者に関する情報が含まれます。
  • BooksAuthors - 作成者がどの書籍を書いたかを指定する多対多結合テーブル。

図 1 に、これら 4 つのテーブルの ER 図を示します。

書籍レビュー Web アプリケーションのデータベースは、4 つのテーブルで構成されています

図 1: ブック レビュー Web アプリケーションのデータベースは 4 つのテーブルで構成されています (フルサイズの画像を表示する をクリックします)

以前のバージョンの書籍レビュー Web サイトには、書籍ごとに個別の ASP.NET ページがありました。 たとえば、24 時間以内に Teach Yourself ASP.NET 3.5 のレビューを含む という名前~/Tech/TYASP35.aspxのページがありました。 この新しいデータ ドリブン バージョンの Web サイトには、データベースに保存されたレビューと、指定した書籍のレビューを表示する 1 つの ASP.NET ページ Review.aspx?ID=bookId があります。 同様に、指定したジャンルのレビューされた書籍を一覧表示する Genre.aspx?ID=genreId ページがあります。

図 2 と 3 は、動作中の Genre.aspx ページと Review.aspx ページを示しています。 各ページのアドレス バーの URL をメモします。 図 2 では、Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e です。 85d164ba-1123-4c47-82a0-c8ec75de7e0e はテクノロジ ジャンルの値であるため、ページの見出しは GenreId "テクノロジ レビュー" と読み上げられます。箇条書きは、このジャンルに該当するサイト上のレビューを列挙します。

テクノロジのジャンル ページ

図 2: [テクノロジ のジャンル] ページ (クリックするとフルサイズの画像が表示されます)

自ら教えるレビュー ASP.NET 3.5 in 24 時間

図 3: 24 時間 ASP.NET 3.5 の学習レビュー (フルサイズの画像を表示する をクリックします)

ブック レビュー Web アプリケーションには、管理者がジャンル、レビュー、および作成者情報を追加、編集、削除できる管理セクションも含まれています。 現在、すべての訪問者は管理セクションにアクセスできます。 今後のチュートリアルでは、ユーザー アカウントのサポートを追加し、承認されたユーザーのみを管理ページに許可します。

Book Reviews アプリケーションをダウンロードする場合、その目的はデータ ドリブン アプリケーションのデプロイを示す点に注意してください。 アプリケーション設計に関するベスト プラクティスは示されていません。 たとえば、個別のデータ アクセス層 (DAL) はありません。ASP.NET ページは、SqlDataSource コントロールまたは分離コード クラスのコードを ADO.NET して、データベースと直接通信します。 階層化アーキテクチャを使用したデータドリブン アプリケーションの作成の詳細については、データの操作に関するチュートリアルを参照してください。

開発と運用に関するデータベース

データ ドリブン Web アプリケーションで開発を開始するときは、データベース 接続文字列を指定する必要があります。これにより、データベースへの接続方法に関するアプリケーションの詳細が提供されます。 この接続文字列では、特にデータベース サーバー、データベース名、およびセキュリティ情報を指定します。 ほとんどの場合、開発中にアプリケーションによって使用されるデータベースは、運用環境で使用されるデータベースとは異なります。 開発用と運用環境用に異なるデータベースを使用する利点は多数あります。 開発中にデータベースが異なっていても、ライブ データを誤って変更または削除する心配は不要です。 また、運用環境のアプリケーションに対する影響を気にすることなく、ダミー テスト データを配置したり、データ モデルに破壊的変更を加えたりすることもできます。 開発環境と運用環境で異なるデータベースを使用することの欠点は、アプリケーションをデプロイするときにデータベースのスキーマまたはデータに関連する変更もデプロイする必要があることです。

最初のデプロイの前に、データベースのインスタンスは 1 つだけあり、そのインスタンスは開発環境にあります。 アプリケーションを初めて運用環境にデプロイするときは、必要なサーバー側ファイルとクライアント側ファイルをコピーするだけでなく、開発環境から運用環境にデータベースをコピーする必要があります。 ここでは、Book Reviews Web アプリケーションを使用しています。データベースは開発環境のフォルダーに App_Data 存在しますが、運用環境にまだプッシュされていません。

アプリケーションがデプロイされると、データベースのコピーが 2 つあります。 アプリケーションが成熟すると、新しい機能が追加され、データ モデルを変更する必要があります (既存のテーブルに新しい列を追加する、既存の列に変更を加える、新しいテーブルを追加するなど)。 Web アプリケーションが次にデプロイされるときに、最後のデプロイ以降に開発環境のデータベースに適用された変更を運用データベースに適用する必要があります。 このプロセスを管理するためのいくつかの戦略については、今後のチュートリアルで説明します。 このチュートリアルでは、開発環境から運用環境にデータベース全体をデプロイすることに重点を置いています。

データベースを運用環境にデプロイする

このチュートリアルの残りの部分では、開発環境から運用環境にデータベースをデプロイする方法について説明します。 フォローしている場合は、Web ホスト プロバイダーのアカウントに Microsoft SQL Server データベースのサポートが含まれていることを確認する必要があります。 また、データベース サーバー名、データベース名、データベースへの接続に使用されるユーザー名とパスワードなど、手元に情報が必要です。

このチュートリアルで前述したように、ブック レビュー Web サイトのデータベースは、フォルダーに格納されている App_Data SQL Server 2008 Express Edition データベースです。 このようなデータベースのデプロイは、開発環境から運用環境にフォルダーを App_Data コピーするのと同じくらい簡単です。 ただし、ほとんどの Web ホスト プロバイダーは、セキュリティ上の理由から、 App_Data フォルダー内のデータベースのホスティングをサポートしていません。 代わりに、Web ホストは環境内のSQL Server データベース サーバーにアカウントを提供します。 開発環境から運用環境にデータベースをデプロイするには、Web ホストのデータベース サーバーにデータベースを登録する必要があります。

では、開発環境から運用環境にデータベースを取得するにはどうすればよいでしょうか。 Web ホストが提供するサービスに応じて、これを実現するにはいくつかの方法があります。 DiscountASP.NET などの一部のホストでは、データベースまたは実際.mdfのファイルのバックアップを Web サイトに FTP 送信し、コントロール パネルからバックアップ ファイルを復元するか、ファイルをSQL Serverデータベース サーバーにアタッチ.mdfできます。 このようなツールを使用すると、データベースを運用環境にコピーApp_Dataし、コントロール パネル経由でアタッチするのと同じくらい簡単です。 これは、データベースを初めて発行する最も簡単で迅速な方法である可能性があります。

もう 1 つの方法は、データベース発行ウィザードを使用することです。 データベース発行ウィザードは、データベースのスキーマ (テーブル、ストアド プロシージャ、ビュー、ユーザー定義関数など) を作成するための SQL コマンドを生成し、必要に応じてそのテーブル内のデータを生成する Windows デスクトップ アプリケーションです。 その後、SQL Server Management Studioを介して Web ホスト プロバイダーのデータベース サーバーに接続し、このスクリプトを実行して運用環境でデータベースを複製できます。 さらに、Web ホスト プロバイダーが Microsoft のデータベース発行サービスをサポートしている場合は、データベース発行ウィザードによって生成されたスクリプトを、ユーザーに代わってデータベース サーバー上で自動的に実行させることができます。 データベース発行ウィザードは、データベースのスキーマとデータを作成するスクリプトを生成するため、Web ホスト プロバイダーがアップロードされた .mdf ファイルの添付などの機能を提供しているかどうかに関係なく機能します。

データベース発行ウィザードを使用してデータベース スキーマとデータを作成する SQL コマンドの生成

データベース発行ウィザードを使用して、Book Reviews データベースを運用環境に展開する方法について説明します。 Visual Studio 2008 以降を使用している場合は、データベース発行ウィザードが既にインストールされています。

Visual Studio を開き、データベースに移動します Reviews.mdf 。 Visual Web Developer を使用している場合は、データベース エクスプローラーに移動します。Visual Studio を使用している場合は、サーバー エクスプローラーを使用します。 図 4 は、Reviews.mdfVisual Web Developer のデータベース エクスプローラーのデータベースを示しています。 図 4 に示すように、 Reviews.mdf データベースは 4 つのテーブル、3 つのストアド プロシージャ、およびユーザー定義関数で構成されています。

データベース エクスプローラーまたはサーバー エクスプローラーでデータベースを見つける

図 4: データベース エクスプローラーまたはサーバー エクスプローラーでデータベースを見つける (フルサイズの画像を表示する をクリックします)

データベース名を右クリックし、コンテキスト メニューから [プロバイダーに発行] オプションを選択します。 これにより、データベース発行ウィザードが起動します (図 5 を参照)。 [次へ] をクリックして、スプラッシュスクリーンを越えて進みます。

[データベース発行ウィザード] ウィンドウのスクリーンショット。このウィンドウには、ウィザードを進めるためのスプラッシュ画面と [次へ] ボタンが表示されています。

図 5: データベース発行ウィザードのスプラッシュ スクリーン (フルサイズの画像を表示する をクリックします)

ウィザードの 2 番目の画面には、データベース発行ウィザードからアクセスできるデータベースが一覧表示され、選択したデータベース内のすべてのオブジェクトをスクリプト化するか、スクリプト化するオブジェクトを選択するかを選択できます。 適切なデータベースを選択し、[選択したデータベース内のすべてのオブジェクトをスクリプト化する] オプションをオンのままにします。

注意

図 6 に示す画面で [次へ] をクリックすると、"データベース データベース 内にオブジェクトがありません。このウィザードでスクリプト可能な種類のオブジェクトがありません" というエラーが表示される場合は、データベース ファイルへのパスが過度に長くないことを確認してください。 データベース ファイルへのパスが長すぎると、このエラーが発生する可能性があります。

データベースの一覧で強調表示されているデータベースと、[すべてのオブジェクトをスクリプト化する] チェック ボックスが表示されている [データベースの発行ウィザード] ウィンドウのスクリーンショット。

図 6: データベース発行ウィザードのスプラッシュ スクリーン (フルサイズの画像を表示するをクリックします)

次の画面からスクリプト ファイルを生成するか、Web ホストでサポートされている場合は、データベースを Web ホスト プロバイダーのデータベース サーバーに直接発行できます。 図 7 に示すように、スクリプトを ファイル C:\REVIEWS.MDF.sqlに書き込みます。

データベースをファイルにスクリプト化するか、Web ホスト プロバイダーに直接発行する

図 7: データベースをファイルにスクリプト化するか、Web ホスト プロバイダーに直接発行する (フルサイズの画像を表示するにはクリックします)

後続の画面では、さまざまなスクリプト作成オプションの入力を求められます。 これらの既存のオブジェクトを削除するために、スクリプトに drop ステートメントを含めるかどうかを指定できます。 これは既定で True に設定されます。これは、初めてデータベースをデプロイするときに問題ありません。 また、ターゲット データベースが 2000 SQL Server、SQL Server 2005、または SQL Server 2008 のいずれであるかを指定することもできます。 最後に、スキーマとデータ、データ、またはスキーマのみをスクリプト化するかどうかを指定できます。 スキーマは、データベース オブジェクト、テーブル、ストアド プロシージャ、ビューなどのコレクションです。 データは、テーブルに存在する情報です。

図 8 に示すように、既存のデータベース オブジェクトを削除し、SQL Server 2008 データベースのスクリプトを生成し、スキーマとデータの両方を発行するようにウィザードを構成しました。

発行オプションを指定する

図 8: 発行オプションを指定する (フルサイズの画像を表示する] をクリックします)

最後の 2 つの画面は、実行されようとしているアクションを要約し、スクリプトの状態を表示します。 ウィザードを実行した結果、運用環境でデータベースを作成し、開発時と同じデータを設定するために必要な SQL コマンドを含むスクリプト ファイルが作成されます。

運用環境データベースでの SQL コマンドの実行

これで、データベースを作成するための SQL コマンドとそのデータを含むスクリプトが作成されました。残っているのは、実稼働データベースでスクリプトを実行することです。 一部の Web ホスト プロバイダーでは、データベースで実行する SQL コマンドを入力できるテキスト ボックスがコントロール パネルに用意されています。 非常に大きなスクリプト ファイルがある場合、このオプションは機能しない可能性があります ( REVIEWS.MDF.sql たとえば、スクリプト ファイルのサイズが 425 KB を超えています)。

より優れた方法は、SQL Server Management Studio (SSMS) を使用して運用データベース サーバーに直接接続することです。 Express Edition 以外のSQL Serverがコンピューターにインストールされている場合は、SSMS が既にインストールされている可能性があります。 それ以外の場合は、SQL Server Management Studio Express Edition の無料コピーをダウンロードしてインストールできます。

SSMS を起動し、Web ホスト プロバイダーから提供された情報を使用して Web ホストのデータベース サーバーに接続します。

[サーバーへの接続] ダイアログ ボックスのスクリーンショット。テキスト フィールドに Web ホストのデータ サーバー情報が表示されています。

図 9: Web ホスト プロバイダーのデータベース サーバーに接続する (フルサイズの画像を表示するにはクリックします)

[データベース] タブを展開し、データベースを見つけます。 ツール バーの左上隅にある [新しいクエリ] ボタンをクリックし、データベース発行ウィザードによって作成されたスクリプト ファイルから SQL コマンドを貼り付け、[実行] ボタンをクリックして運用データベース サーバーでこれらのコマンドを実行します。 スクリプト ファイルが特に大きい場合は、コマンドの実行に数分かかる場合があります。

スクリプト ファイルのコマンドが運用サーバーで実行されていることを示す Microsoft SQL Server Management Studio ウィンドウのスクリーンショット。

図 10: Web ホスト プロバイダーのデータベース サーバーに接続する (フルサイズの画像を表示する をクリックします)

それがすべてです! この時点で、開発データベースは運用環境に複製されています。 SSMS でデータベースを更新すると、新しいデータベース オブジェクトが表示されます。 図 11 は、運用データベースのテーブル、ストアド プロシージャ、およびユーザー定義関数を示しています。この関数は、開発データベース上のテーブルをミラーしています。 また、データベース発行ウィザードでデータを発行するように指示したため、運用データベースのテーブルには、ウィザードの実行時の開発データベースのテーブルと同じデータがあります。 図 12 は、実稼働データベースの Books テーブル内のデータを示しています。

実稼働データベースでデータベース オブジェクトが複製されている

図 11: 実稼働データベースでデータベース オブジェクトが複製されている (フルサイズの画像を表示する をクリックします)

運用データベースには、開発データベースと同じデータが含まれています

図 12: 運用データベースには、開発データベースと同じデータが含まれています (フルサイズの画像を表示する をクリックします)

この時点で、開発データベースは運用環境にのみデプロイされています。 Web アプリケーション自体のデプロイについてまだ調べたり、運用環境のアプリケーションで運用データベースを使用するために必要な構成変更を調べたりしていません。 これらの問題については、次のチュートリアルで説明します。

まとめ

データ ドリブン Web アプリケーションをデプロイするには、開発中に使用されるデータベースを運用環境にコピーする必要があります。 多くの Web ホスト プロバイダーは、データベースをデプロイするプロセスを簡略化するためのツールを提供しています。 たとえば、DiscountASP.NET を使用すると、データベース .mdf ファイル (またはバックアップ) を FTP してから、コントロール パネルからデータベース サーバーにデータベースをアタッチできます。 Web ホスト プロバイダーが提供する機能に関係なく機能するもう 1 つのオプションは、開発データベースのスキーマとデータを作成するための SQL コマンドのスクリプトを生成する Microsoft のデータベース発行ウィザード ツールです。 このスクリプトが生成されたら、運用データベースで実行できます。

Book Reviews Web アプリケーションのデータベースが運用環境に入ったので、アプリケーションをデプロイできます。 ただし、Web アプリケーションの構成情報は、データベースへの接続文字列を指定し、その接続文字列が開発データベースを参照します。 サイトを運用環境に展開するときに、この接続文字列情報を更新する必要があります。 次のチュートリアルでは、これらの構成の違いを確認し、データドリブンの書籍レビュー サイトを運用環境に発行するために必要な手順について説明します。

プログラミングに満足!

もっと読む

このチュートリアルで説明するトピックの詳細については、次のリソースを参照してください。