WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

ASPNETDB.mdf の作り方

by WebSurfer 4. July 2012 23:20

ASP.NET フォーム認証用のユーザー情報のストアとして SQL Server を用いる場合、サーバーでのデータベースの作り方を備忘録として書いておきます。

開発環境では、開発マシンに Visual Studio と SQL Server がインストールされていれば、Visual Studio の「ASP.NET Webサイト管理ツール」が、フォーム認証用のデータベースファイル ASPNETDB.MDF をアプリケーションルート直下の App_Data フォルダに自動生成してくれます。

自分がサーバーの管理者であれば、開発マシンの ASPNETDB.MDF ファイルをサーバーにコピーして使うことができます。(もしくは、下に述べるデータベース作成用のスクリプトを SQL Server Management Studio を使って実行する手もあります)

しかしながら、ホスティングサービス(レンタルサーバー)を利用している場合は上記のようなことはできません。ホスティングサービス会社に、自分が作った ASPNETDB.MDF を送って SQL Server にアタッチしてもらうのも望み薄です。

では、どうするかと言えば、通常、ホスティングサービス会社が SQL Server の管理ツールを提供しているはずなので、そのツールからスクリプトを走らせることができれば、遠隔地にあるサーバーにデータベースを作成することができるはずです。

以下に、自分が使っているホスティングサービス(ActiveWeb)の場合の例を書きます。ActiveWeb の管理ツールは Plesk と myLittleAdmin です。ExpressWeb の場合も、同じ会社がサービスしているので、手順は大筋で同じです。(他のホスティングサービスの場合は不明です。無責任モードですみません)

  1. まず、ホスティングサービス会社が提供しているツールを使って SQL Server にデータベースを作成し、ユーザーの設定をします。その時点で、データベース名、ユーザー名、パスワードが決まるはずですが、それらは、それぞれ、接続文字列の Initial Catalog、User ID、Password に設定するので覚えておいてください。(接続文字列の Server に設定するサーバー名は、別にホスティングサービス会社より通知されていると思います)
  2. 次に、自分の開発マシンで、aspnet_regsql.exe を利用して、必要な機能(テーブル、ストアドプロシージャ、トリガ)を上記 (1) で作ったデーターベースに追加するための SQL スクリプトファイルを生成します。以下のようにコマンドラインから入力します。この例で、FormsAuth は上記 1 で指定したデータベース名、script.sql は生成する SQL スクリプトファイルの名前です。

コマンドラインから aspnet_regsql を実行

  1. ホスティングサービス会社が提供している SQL Server の管理ツールを使用して、上記 2 で作ったスクリプトを走らせ、データベースにテーブル、ストアドプロシージャ、トリガを作成します。ActiveWeb、ExpressWeb の場合は myLittleAdmin を利用します。下の画像を参照してください。「新しいクエリ」という文字の下にある myLittleAdmin 上のファイルを開くボタン 印のボタンをクリックすると、ファイルを選択するダイアログが開きますので、それでステップ 2 で作ったスクリプトを指定します。

myLitleAdmin でスクリプトの実行

  1. 接続文字列を実環境に合わせて修正します。開発環境は、開発マシンの SQL Server Express に Windows 認証でユーザーインスタンスを利用して接続しているのを、レンタルサーバーでは Express 版でない SQL Server の既定のインスタンスに SQL Server 認証で接続するのが普通だと思います。その場合、接続文字列は以下のようになるはずです。不明な点はレンタルサーバー会社に確認してください。

開発環境(Visual Studio が自動生成)

<connectionStrings>
  <add name="ApplicationServices"
    connectionString=
     "data source=.\SQLEXPRESS;
      Integrated Security=SSPI;
      AttachDBFilename=|DataDirectory|\aspnetdb.mdf;
      User Instance=true"
    providerName="System.Data.SqlClient" />
</connectionStrings>

運用環境

<connectionStrings>
  <add name="ApplicationServices"
    connectionString=
     "Server=サーバー名;
      User ID=ユーザー名;
      Password=パスワード;
      Initial Catalog=データベース名"
    providerName="System.Data.SqlClient" />
</connectionStrings>
  1. ここまでで ASPNETDB.mdf 相当のデータベースが生成され、Web アプリから接続できるようになっているはずです。ただし、データベースのテーブルの中身は空なので、自分でユーザー登録とロールの設定が必要です。

管理用のページを作るなりしないとユーザー登録やロールの設定はできないので、そこが少々面倒かも知れません。参考に、指定されたユーザーを指定されたロールに追加するサンプルコードのある MSDN ライブラリのページ Roles.AddUserToRole メソッド を紹介しておきます。

それが問題であれば、開発環境で作ったユーザー登録やロールが設定済みの ASPNETDB.mdf から、Database Publishing Wizard を利用してスクリプトを生成すれば、上記 5 の手順は不要になるはずです。

Tags:

認証・承認

About this blog

2010年5月に BlogEngine.NET 1.6.1 を入手して自分のホームページの中にこのブログを立ち上げました。その後、ブログ2 を追加し、ここブログ1は ASP.NET 関係のトピックス、ブログ2はそれ以外の日常一般のトピックスに分けました。

Calendar

<<  October 2014  >>
MoTuWeThFrSaSu
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar