tonyqus.cn

休养中..
随笔 - 202, 文章 - 1, 评论 - 1202, 引用 - 57
数据加载中……

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] 的窗口:

                                                                    图1

按"Next >"按钮,进入图2

                                                    图2

在图2中,我们会发现除了有配置数据库外,还有删除数据库的功能,以后说不定可以派上用场,现在自然选Configure SQL Server for application services,按"Next >"按钮,进入图3。

                                                                    图3
现在进入数据库选择界面,如果SQLSERVER就安装在本地的话,可以不用改任何东西,直接按"Next >"。这里的Database显示为<default>,表示默认数据库名为aspnetdb,你也可以根据自己的需要更改名称。

                                                                图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

posted on 2005-12-02 01:26 Tony Qu 阅读(10429) 评论(20)  编辑 收藏 所属分类: .NET 2.0 技术SQL Server

评论

#1楼    回复  引用    

呵呵呵,本来就是啊!

通过上门办法生成的数据库就是一般的MsSql数据库,所以连接字符窜就是标准的SqlSever连接字符串。。。
2005-12-02 10:32 | Luna [未注册用户]

#2楼 [楼主]   回复  引用  查看    

默认值设的太定制化了,专门为SQLSERVER EXPRESS准备的,把我搞糊涂了……
2005-12-02 11:24 | Tony Qu      

#3楼    回复  引用    

不错,这回省事了:)
2005-12-07 07:31 | mjzhao [未注册用户]

#4楼    回复  引用    

添加新项,加入数据库,还是不行,需要sql express文件引导程序
2006-04-22 17:42 | rc [未注册用户]

#5楼    回复  引用    

OK!解决了,谢谢!
2006-07-03 01:34 | ch_v [未注册用户]

#6楼    回复  引用  查看    

我的Web.config里没有这个标准配制,我就手工添加了一个,
一运行, 出现错误:
The entry 'LocalSqlServer' has already been added

说已经添加了,真奇怪,在哪里添加的?
2006-09-06 16:18 | 数据绑定者      

#7楼 [楼主]   回复  引用  查看    

在machine.config里面有一个默认值,可以在web.config中这么写
<configuration>
<connectionStrings>
<clear/>
<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|aspnetdb.mdf;User Instance=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
2006-09-06 22:18 | Tony Qu      

#8楼    回复  引用    

如果SQLServer没有指定的实例名,该怎么填这项
Data Source=[Instance Name];

另外,如果改Web.config方法该怎么改呢?
2006-10-24 11:04 | Alfee [未注册用户]

#9楼    回复  引用    

如果SQLServer没有指定的实例名,该怎么填这项
Data Source=[Instance Name];

另外,如果改Web.config方法该怎么改呢?
2006-10-24 11:04 | Alfee [未注册用户]

#10楼 [楼主]   回复  引用  查看    

怎么会没有实例名呢?任何一个SQLServer安装好后都应该有一个默认的实例名
2006-10-24 22:50 | Tony Qu      

#11楼    回复  引用    

安装好后,默认的实例名是mssqlserver
一般打.就可以
2006-11-15 15:12 | 乱说 [未注册用户]

#12楼    回复  引用    

1、安装
SQLEXPR_ADV_CHS.EXE
包含高级服务的SQL Server 2005 Express版本
SQLServer2005_SSMSEE.msi
SQL Server 2005 Expresss 管理工具

2、配置
开始菜单——〉Microsoft SQL Server 2005
——〉配置工具
——〉SQLEXPRESS -> Database Engina -> 远程服务
更改为:本地连接和远程连接,同时使用TCP/IP和named pipes

开始菜单——〉Microsoft SQL Server 2005
——〉SQL Server Managerment Stodio Express
身份验证选择 -> Windows身份验证,登录
在 对象资源管理器 中的 SQLEXPRESS 服务名称上点鼠标右键 -> 属性
安全性 -> 服务器身份验证 改为:SQL Server 和 Windows 身份验证模式
数据库设置 -> 数据库默认位置 改为:D:\Database
确定返回 对象资源管理器
安全性 -> 登录名 设置 sa 密码,登录改为:Sql Server 身份验证
状态 改为:授予、启用、确定
创建数据库ASPNETDB.MDF(不建表),复制aspnetdb.mdf到数据库目录(先停止SQLEXPRESS服务,复制后再启动SQLEXPRESS服务):
选择 aspnetdb.mdf 数据库,点击鼠标右键进入属性选择页:
文件 -> 所有者改为 sa 确定。 至此数据库配置完成。
3、连接
Web.config:

<connectionStrings>
<!-- 定义 SQLExpres 数据库连接 -->
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Server=(local)\SQLEXPRESS;
Initial Catalog=aspnetdb;User=sa;Password=zxh6540;" />

<!-- 定义 AccessConn 数据库连接 -->
<add name="AccessConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Inetpub\wwwroot\anli\App_Data\anli.mdb;"
providerName="System.Data.OleDb"/>
</connectionStrings>
2007-03-22 15:36 | Dopoes [未注册用户]

#13楼    回复  引用    

1、安装
SQLEXPR_ADV_CHS.EXE
包含高级服务的SQL Server 2005 Express版本
SQLServer2005_SSMSEE.msi
SQL Server 2005 Expresss 管理工具

2、配置
开始菜单——〉Microsoft SQL Server 2005
——〉配置工具
——〉SQLEXPRESS -> Database Engina -> 远程服务
更改为:本地连接和远程连接,同时使用TCP/IP和named pipes

开始菜单——〉Microsoft SQL Server 2005
——〉SQL Server Managerment Stodio Express
身份验证选择 -> Windows身份验证,登录
在 对象资源管理器 中的 SQLEXPRESS 服务名称上点鼠标右键 -> 属性
安全性 -> 服务器身份验证 改为:SQL Server 和 Windows 身份验证模式
数据库设置 -> 数据库默认位置 改为:D:\Database
确定返回 对象资源管理器
安全性 -> 登录名 设置 sa 密码,登录改为:Sql Server 身份验证
状态 改为:授予、启用、确定
创建数据库ASPNETDB.MDF(不建表),复制aspnetdb.mdf到数据库目录(先停止SQLEXPRESS服务,复制后再启动SQLEXPRESS服务):
选择 aspnetdb.mdf 数据库,点击鼠标右键进入属性选择页:
文件 -> 所有者改为 sa 确定。 至此数据库配置完成。
3、连接
Web.config:

<connectionStrings>
<!-- 定义 SQLExpres 数据库连接 -->
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="Server=(local)\SQLEXPRESS;
Initial Catalog=aspnetdb;User=sa;Password=xxxxxx;" />

</connectionStrings>
2007-03-22 15:41 | Dopoes [未注册用户]

#14楼    回复  引用    

谢谢Dopoes,问题已解决!

我用的是SQLExpress版,网站做好后,以为放在服务器上就可以了(只将所有文件复制过去),虽然也装了SQLExpress,却无法登录,connectionString配置始终不对。现在将ASPNETDB.mdf添加到数据库服务器里,问题就解决了!非常感谢Dopoes!谢谢!
2007-03-27 13:06 | Jerry.L [未注册用户]

#15楼    回复  引用    

我支持!!!!
2007-06-08 17:34 | sunzhixiang [未注册用户]

#16楼    回复  引用    

谢谢!解决了我的大问题
2007-08-28 23:55 | 厅 [未注册用户]

#17楼    回复  引用  查看    

哈哈,我装的SQLSERVER EXPRESS,在部署user profile时也有aspnetdb.mdf无法连接的问题,借你的思路,改字符串,再开权限等等,终于弄好了,历时9个小时!
2008-02-17 21:59 | BlackPhoenix      

#18楼    回复  引用    

各位大哥我的是:xp系统
Sql server 2000
Visual studio 2005怎么解决这个问题啊
期待你的恢复
2008-03-13 09:04 | 630098588 [未注册用户]

#19楼    回复  引用    

Data Source=[Instance Name];

改为:Data Source=(local);

2008-03-28 16:18 | 000 [未注册用户]

#20楼    回复  引用  查看    

留个记号!
2008-08-18 16:35 | 天堂的狼