■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 を起点に一通り読んで頂くと良いかと思います。
|
|