ASP.NET 2.0で追加された便利な機能にMemberShipに関する一連のコントロール群があります。
-
Login コントロール
-
LoginName コントロール
-
LoginStatus コントロール
-
CreateUserWizard コントロール
-
ChangePassword コントロール
これらのコントロールを利用する際、デフォルトではSQL Server 2005 Express上でASPNETDB.MDFファイルを利用するようになっています。
運用サーバにSQL Expressがインストールされている場合はApp_Dataフォルダに作られるASPNETDB.MDFファイルを利用することが可能です。ただし、この場合はMDFファイルおよびldfファイルのアクセス権に注意する必要があります。具体的にはASP.NETの実行ユーザがMDFファイルとldfファイルに変更/書き込み権限を持つ必要があります。
運用サーバにSQL Expressがインストールされていない場合、aspnet_regsql.exeツールを利用します。
サーバにSQL Server 2005またはSQL Server 2000がインストールされていれば、このツールを使ってウィザード形式で必要なデータベースを作成することができます。
この場合、どのデータベースに接続するかの接続設定をきちんとしてあげる必要があります。具体的にはweb.configにconnectionStrings設定を追加します。
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer"
connectionString="Data Source=サーバ名;Initial Catalog=データベース名;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
LocalSqlServerという設定はmachine.configに記述されているので、一度設定を解除(remove)し、あらためて設定を追加(add)する必要があります。
と、ここまではマイクロソフトのサイト等でも紹介されている話です。
運用サーバの管理権限をもっていればaspnet_regsql.exeツールからウィザードを実行することも可能ですが、レンタルサーバを利用したいときにはどうすればいいでしょうか?
要はMemberShipの機能を実行するのに必要なテーブルがレンタルサーバ上から使えるデータベース上に作れればいいんですが、そのためにはどうすれば。。。
答えとしては、aspnet_regsql.exeからデータベース、テーブル、ストアドプロシージャを生成するSQLスクリプトを作成することができます!
ただし、レンタルサーバ上でSQLスクリプトを実行してテーブルやストアドプロシージャを生成できることが前提になります。
cervi.jpのレンタルサーバならこれが可能なので、具体的なやり方をみてみましょう。
aspnet_regsql.exe -sqlexportonly ファイル名 -A all -d データベース名
cervi.jp上で利用できるデータベース名を指定して上記のようにコマンドラインから実行すると、指定したファイルにSQLスクリプトが作成されます。このSQLスクリプトをクエリアナライザから実行し、connectionStringに指定されているデータベースを設定すれば利用でき、、、、、、るはずです。
実はこのスクリプトで作成されるテーブルとCommunity Serverが利用しているテーブルの名前がバッティングするため実際に実行して確認できていません。
そのうち機会があったらきちんと確認して、そのときは記事としてまとめたいと思います。