在VS2005下创建到SQL2005数据库的连接
今天在用Asp.Net2.0做网站的时候遇到一个问题,就是在实验室做实验用的数据库在本地无法打开了。在使用.Net2.0建立数据库的时候,默认的是使用Windows验证的方式去连接到数据库服务器。这样做的好处是可以提高安全性,因为不需要在连接字符串中编写用户名和密码了。但是同时也不适合像我这样换机器用的同学。因此我想到的一个办法就是启用“sql server 和windows 身份验证模式。”过程大致如下:
(以SQL2005,VS2005为例)
1、首先用windows身份验证模式登陆到服务器,打开对象资源管理器,选择服务器属性,安全性选项中选择“sql server 和windows 身份验证模式(s)”。
2、之后回到对象资源管理器,选择安全性,登陆名,在sa帐号上点右键,属性,常规,之后更改sa登陆帐号的密码。然后在状态里的“登陆”选择“启用”。再重启服务器,这样就可以使用sa+密码登陆了。
以上步骤的前提是安装了Microsoft SQL Server Management Studio Express(也可选择其他版本)。因为VS2005虽然默认安装了SQL2005,但是并不附带这个工具。如果需要可点击下面链接下载(微软官方):
Microsoft SQL Server Management Studio Express
在web.config就可以这样配置你的数据库连接了:
<connectionStrings> <add name="LocalSqlServer" connectionString="Data Source= .SQLEXPRESS;Initial Catalog=XXXXXX; User ID=sa;Password=XXXXXX" providerName="System.Data.SqlClient"/> </connectionStrings>
之后便可以安全连接数据库进行操作了。
另外一种方法就是把asp.net的这个账户添加到SQL服务器的登录名里面,当然同样需要完成步骤1。
阿修在做这个的时候出现的最大问题就是忘记设置为“sql server 和windows 身份验证模式(s)”,这样出现的问题就是
用户 ‘sa’ 登录失败。原因: 未与信任 SQL Server 连接相关联。
最后就是关于integrated security=true的问题了。这一点在陈希章的博客里这样描述的:
(以下资料来自http://www.cnblogs.com/chenxizhang/archive/2009/05/12/1454723.html)
Integrated Security=True 的意思是集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码,从一定程度上说提高了安全性。
那么到底是用哪一个Windows身份呢?很多朋友说,使用当前用户的身份吧?这个回答不能算错,至少在Windows应用程序中是这样的。但如果换成是ASP.NET应用程序,则就不是了。
如果是ASP.NET应用程序(网站或者服务),那么根据其运行宿主环境的不一样,可能会有差异
1. Windows XP :ASPNET帐号
2. Windows 2003或者以后的版本:NetWork Service帐号
知道这个原理之后,那么如果你准备用Integrated security=true,则需要授予这两个帐号对于数据库的访问权限。
但要注意一个问题(也是很多朋友疑惑的),就是在Visual Studio里面调试的时候,貌似又不是使用ASPNET这个帐号的。这是因为Visual Studio总是使用当前开发环境中,用户的Windows身份来发起请求的。
从下面的图可以看到这个差别。在VS里面调试,与在IIS中调试,访问的身份是不一样的。
其实我还是很喜欢.NET的,在学校时无数次想学好,连接字符串这些问题都遇见过,实在不会的就去CSDN散分……毕业后就不了了之啦,真是悲哀
@天天天蓝 这些东西我们是真的还给学校了。
@阿修 说实话,学校的这些东西都过时了,我们居然还学VB.NET……还是自己看看C#,就像你说的毕业了还给学校了,不带走一片云彩……
是不是css里面有index的设置啊?有些段落空格空多了。