在VS2005下创建到SQL2005数据库的连接

By
WP札记

    今天在用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,但是并不附带这个工具。如果需要可点击下面链接下载(微软官方):

MSSM Microsoft SQL Server Management Studio Express

    在web.config就可以这样配置你的数据库连接了:

    之后便可以安全连接数据库进行操作了。

 

    另外一种方法就是把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中调试,访问的身份是不一样的。

1

Comments: 4

  1. 其实我还是很喜欢.NET的,在学校时无数次想学好,连接字符串这些问题都遇见过,实在不会的就去CSDN散分……毕业后就不了了之啦,真是悲哀

    2010年06月28日
    • @天天天蓝 这些东西我们是真的还给学校了。

      2010年06月28日
    • @阿修 说实话,学校的这些东西都过时了,我们居然还学VB.NET……还是自己看看C#,就像你说的毕业了还给学校了,不带走一片云彩……

      2010年06月28日
  2. 是不是css里面有index的设置啊?有些段落空格空多了。

    2010年12月24日

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

:razz: