ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署

由于本人机器上仅安装SQLSERVER2005,而没有装SQLSERVER  EXPRESS,于是在部署user profile时遇到了aspnetdb.mdf无法连接的问题,经过一番折腾 ,总算解决了,下面把经验写下来与大家分享。

由于没有aspnetdb.mdf数据库,因此得先建立一个,这个可以通过aspnet_regsql.exe完成,该程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\下。运行它之后会弹出 [图1] 的窗口:
ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署
                                                                    图1

按"Next >"按钮,进入图2
ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署
                                                    图2

在图2中,我们会发现除了有配置数据库外,还有删除数据库的功能,以后说不定可以派上用场,现在自然选Configure SQL Server for application services,按"Next >"按钮,进入图3。
ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署
                                                                    图3
现在进入数据库选择界面,如果SQLSERVER就安装在本地的话,可以不用改任何东西,直接按"Next >"。这里的Database显示为<default>,表示默认数据库名为aspnetdb,你也可以根据自己的需要更改名称。
ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署
                                                                图4
最后进入图4,现在按"Next >"就可以开始安装数据库了,当Finish按钮亮起时,表明数据库安装成功,一切顺利!

接下来是设置数据库连接字符串。
 默认情况下,web.config中的LocalSqlServer属性是这样配置的:
< connectionStrings >
   
< add  name ="LocalSqlServer"  connectionString ="Data Source=./SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|aspnetdb.mdf;User Instance=True"
providerName
="System.Data.SqlClient" />
</ connectionStrings >
该连接字符串是专门为SQLSERVER EXPRESS准备的,如果没有安装SQLSERVER EXPRESS就会出现以下错误

An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

这表明连接根本无法建立。为此,我试图把DataSource改为./本地sqlserver instance名,结果还是报错:
Login Failed for User MachineName\ASPNET

又试图把User Instance设为false,再次报错:

Invalid value for key 'attachdbfilename'.

其实出错原因很简单,因为App_Data目录下没有aspnetdb.mdf这个文件。在网上查了一下,终于找到了解决方法,重新设置连接字符串为
< add  name ="LocalSqlServer"  connectionString ="Data Source=[Instance Name];Initial Catalog=aspnetdb;Integrated Security=false;UID=sa;PWD=xxxxxx"

其实就是标准SqlServer连接字符串,郁闷……

参考资料:
http://weblogs.asp.net/bsimser/archive/2005/11/20/431029.aspx?Pending=true

你可能感兴趣的:(sqlserver)