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

作成者: Scott Mitchell

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

はじめに

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

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

更新された書籍レビュー Web アプリケーションを調べる

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

更新された 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- レビューごとに、 などのTitleGenreIdReviewDateReview列を含むレコードが含まれます。
  • Authors - レビューされた書籍に投稿した各著者に関する情報が含まれます。
  • BooksAuthors - 作成者が書いた書籍を指定する多対多結合テーブル。

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

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

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

以前のバージョンの書籍レビュー Web サイトには、書籍ごとに個別の ASP.NET ページがありました。 たとえば、24 時間で 3.5 ASP.NET 自分を教えるのレビューを含む という名前~/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 テクノロジ ジャンルの値であるため、ページ見出しには "Technology Reviews" と読み上げられます。箇条書きは、このジャンルに該当するサイト上のレビューを列挙します。

技術ジャンルページ

図 2: [テクノロジ のジャンル] ページ (フルサイズの画像を表示する 場合をクリック)

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

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

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

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

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

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

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

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

運用環境へのデータベースのデプロイ

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

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

幸せなプログラミング!

もっと読む

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