C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: SQLserverの環境変更について


(過去ログ 19 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■7668 / inTopicNo.1)  SQLserverの環境変更について
  
□投稿者/ mint (1回)-(2007/09/12(Wed) 20:25:40)

分類:[.NET 全般] 

開発環境
WindowsXPPro
.NET2.0
Microsoft Visual Web Developer 2005 Express Edition(c#)
Microsoft SQL Server 2005 Express Edition

運用環境
Windows2003server
.NET2.0
Microsoft IIS6.0
Microsoft SQL Server 2005 Workgroup Edition


上記の環境で開発を行っているのですが、運用環境に移したときに、
フォーム認証プロバイダを利用してのユーザー認証が、
「SQL Server への接続に失敗しました」
となってしまいます。

また、運用用のサーバーに
Microsoft Visual Web Developer 2005 Express Edition
をインストールして確認をしたところ、「SQL Server Expressのファイルを
開くアプリケーションがありません」となってしまい編集もできません。


Microsoft SQL Server 2005 Express Edition以外をつかってフォーム認証
プロバイダを利用するには特別な設定が必要なのでしょうか?

文章がわかりにくく申し訳ございません。
初歩的な質問で大変お手数ですが、ご指導ください。
引用返信 編集キー/
■7677 / inTopicNo.2)  Re[1]: SQLserverの環境変更について
□投稿者/ 七曜 (12回)-(2007/09/12(Wed) 23:23:19)
もしかしてメンバシップを使用していませんか?
メンバシップを使用していない場合は以下の内容は的外れなので無視して下さい。

メンバシップを利用している場合、SQL Serverにaspnetdbという名前のDatabaseを使用しているかと思います。
当該アプリケーションのWeb.configに記述がない場合、.configファイルの継承によって上位アプリケーションのweb.configあるいは
machine.configの設定が継承されて使用されます。

で、machine.configではメンバシッププロバイダは
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership>
の様に設定されていて、connectionStringNameで指定されているLocalSqlServerは
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
の様に設定されています。
したがって、ローカルサーバーのSQLEXPRESSというインスタンスを使用してaspnetdb.mdfにアタッチを試みます。

この結果、運用環境にはSQLEXPRESSというインスタンスは無いでしょうし、mdbファイルへのアタッチ機能はSQL Server 2005 Express Editionの機能なのでエラーになっているのではないかと考えられます。
対処方法としては、
(1)運用環境のSQL Serverインスタンスにaspnetdbを作成する。
(2)メンバシッププロバイダ自体は標準のSqlMembershipProviderを使用するのであれば、connectionStringsのLocalSqlServerに指定されている接続文字列を運用環境に合わせて設定する
の2点が必要になるかと思います。
具体的には、
System Drive:\Windows\Microsoft.NET\Framework\v2.0.50727にあるaspnet_regsql.exeを使用してaspnetdbを作成し、
対象アプリケーションのweb.configに
<connectionStrings>
<add name="LocalSqlServer" connectionString="server=.; database=aspnetdb; Trusted_Connection=True" providerName="System.Data.SqlClient" />
</connectionStrings>
といった感じで正しいデータベースへの接続を行うような設定をすれば良いということになります。
接続文字列のSQL Serverへの認証は例ではWindows認証を使用していますので、SQL Server側で
IISのワーカプロセスのアカウントがログインやaspnetdbにアクセスできる権限があることが前提となります。

SQL Serverの接続文字列については、
[SqlConnection.ConnectionString プロパティ (System.Data.SqlClient)]
http://msdn2.microsoft.com/ja-jp/library/system.data.sqlclient.sqlconnection.connectionstring(VS.80).aspx
が参考になるかと思います。

Aspnet_regsql.exeについては以下の情報を参考に。
[ASP.NET SQL Server 登録ツール (Aspnet_regsql.exe)]
http://msdn2.microsoft.com/ja-jp/library/ms229862(VS.80).aspx

メンバシップ全般については
[メンバシップを使用したユーザーの管理]
http://msdn2.microsoft.com/ja-jp/library/tw292whz(VS.80).aspx
を起点に一通り読んで頂くと良いかと思います。

引用返信 編集キー/
■7680 / inTopicNo.3)  Re[2]: SQLserverの環境変更について
□投稿者/ mint (2回)-(2007/09/13(Thu) 01:21:24)
早速のご指導ありがとうございます。

先方のサーバーを触れるのが限られているので、まだ確かめることはできないのですが、
メンバーシップのを使用していまして、aspnetdbにアクセスできていないのでご指導い
ただいた内容で解決できそうです。

確認後また書き込ませていただきます。本当にありがとうございます。
引用返信 編集キー/
■7998 / inTopicNo.4)  Re[3]: SQLserverの環境変更について
□投稿者/ mint (3回)-(2007/09/21(Fri) 01:45:07)
昨日、先方のサーバーを触れまして、設定確認したところ
うまくいきました。
本当にありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -