sql server 2008 用户'NT AUTHORITY\NETWORK SERVICE'的登录失败。

2 人关注

我试图将我的网站连接到我的sql server 2008 r2上,windows server 2003与.net framework 4。

这是连接字符串。

<add name="TestDbConnectionString" 
     connectionString="Data Source=(local);Initial Catalog=RESv5;integrated security=SSPI;"
     providerName="System.Data.SqlClient" />

我得到了一个异常,这就是。

用户'NT AUTHORITY/NETWORK SERVICE'登录失败。
说明。在执行当前的网络请求时发生了一个未处理的异常。请查看堆栈跟踪以了解更多关于错误的信息以及它在代码中的来源。

异常细节。System.Data.SqlClient.SqlException。用户'NT AUTHORITY/NETWORK SERVICE'的登录失败。

源头错误。

在执行当前网络请求的过程中产生了一个未处理的异常。关于异常的来源和位置的信息可以通过下面的异常堆栈跟踪来确定。

我看到这个问题用户'NT AUTHORITY\NETWORK SERVICE'的登录失败,我试着做了一个名为NT AUTHORITY\NETWORK SERVICE 的用户,但我仍然有这个问题。

我已经尝试使用了一个用户名和密码,这是连接字符串

<add name="TestDbConnectionString" 
     connectionString="Data Source=(local);Initial Catalog=RESv5;integrated security=SSPI;User Id=sa;Password=myPassword;"
     providerName="System.Data.SqlClient" />

但仍然有问题

23 个评论
为了简单起见,使用SQL服务器的用户名/密码认证。 这将为你节省几个小时的故障排除时间。
@Andomar 我真的非常喜欢这个解决方案,但是请问如何做呢? IIS的用户就是上面提到的那个人。
而不是 integrated security=SSPI; ,指定 User Id=myUsername; Password=myPassword;
@Andomar 我只是理解了你所说的。我试着用 sa 和密码,但还是有同样的问题。
@Andomar 我将向你展示该连接的连接字符串。
你是否收到错误信息 Login failed for user 'sa'.
@Andomar 请检查编辑过的问题,我在登录该用户时没有出错,这是在问题中提到的,不是sa。
@用户3432257 安多玛说的是代替综合安全--而不是 "另外"。
看起来你同时指定了 Integrated Security User ID 。 移除 integrated security=SSPI; 设置,以使用 SQL auth。
@Andomar 我会试着让你知道发生了什么。
@Andomar 我得到了这个错误 Cannot open database "RESv5" requested by the login. The login failed. Login failed for user 'sa'.
@Andomar 我检查了该数据库的用户,sa不存在于那里。
确保 sa 登录者具有服务器角色 sysadmin 。 如果是这样,它应该能够连接到每个数据库。 对于非管理员登录,请查看 User Mapping 标签。
@Andomar sa有sysadmin,但正如我告诉你的,sa不是我数据库的用户。
@Andomar 我试着用新用户创建一个新的登录,但我发现新用户登录失败了。
右键单击SQL服务器,进入安全选项卡,检查 "SQL服务器和Windows验证模式 "是否被选中。
@Andomar 混合模式被选中了,否则,我就不能创建一个登录,对吗?
你能用Management Studio进行连接吗? (例如,文件->连接对象浏览器)
@Andomar 是的,我可以。而且,我可以使用windows认证进行连接。请帮助我。我不知道该怎么做
@Andomar 是否有可能是连接字符串?
仔细检查数据库名称;你在SSMS中使用的名称是否与配置字符串中的完全相同? 你也可以浏览一下SQL Server的日志,看看为什么你的连接被拒绝。 请看MSDN的这篇文章
你的数据库是否与你的网络服务器位于同一台机器上?
@bhupendrapatel 是的,在同一台机器上。
asp.net
sql-server
sql-server-2008
connection-string
user3432257
user3432257
发布于 2014-03-22
3 个回答
Alejandro
Alejandro
发布于 2014-03-23
0 人赞同

你使用Windows认证进入服务器,所以它使用客户端的Windows账户访问来验证访问/权限。在开发中,"客户端 "实际上是VS开发服务器,但当你部署到真正的Web服务器时,"客户端 "以另一个账户运行,这个账户是用来启动其服务的,而不是你的。

通常SQL服务器在安装时被配置为允许你自己 sysadmin ,但几乎不允许其他用户访问,这就是你得到拒绝访问的原因。 一个选择是使用用户/密码的SQL认证。从安全角度讲,如果同一台网络服务器运行许多网站,这将是最好的选择(因为它们可能与彼此的数据隔离)。

如果你绝对想使用Windows认证,真正的解决方案是给SSMS的内置账户 NT AUTHORITY\NETWORK SERVICE

CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS WITH DEFAULT_DATABASE=[RESv5]
USE [RESv5]
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
ALTER ROLE [db_owner] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]
    
Milica Medic Kiralj
Milica Medic Kiralj
发布于 2014-03-23
0 人赞同

尝试从连接字符串中删除集成的security=SSPI,或将其设置为false。请看下面我用sa用户成功登录。

编辑:这里有一个详细的解释,也许能帮助你找到你的错误所在。

http://msdn.microsoft.com/en-us/library/ff648340.aspx

我已经猜到了。现在我的连接字符串是 <add name="TestDbConnectionString" connectionString="Data Source=(local);Initial Catalog=RESv5;User Id=William;Password=mypassword;" providerName="System.Data.SqlClient" /> ,但我得到的是william不能登录。我想用sa连接。这可能吗?或者我应该怎么做才能登录。请帮助。已经有7个小时没有解决这个问题了。
请看我的帖子的更新,这可能有助于你一步步的解释 :)
Iztoksson
Iztoksson
发布于 2014-03-23
0 人赞同
  • 你的网站在IIS的服务账户NETWORK_SERVICE下运行,这是一个计算机用户,不能访问你的SQL。为了解决这个问题,你应该在你的web.config中设置你的网站使用 "identity impersonate=true"。然而,如果你在服务器上运行这个,你可能会在所谓的 "双跳 "中失去认证的用户,即你的IIS服务器不能在另一个步骤(PC(1)->IIS(2)->SQL)中把你的认证用户转发给SQL服务器。

  • Milica Medic的回答是正确的,但是在你的回答中,你指定了一个用户 "william",这是一个SQL用户还是一个Windows用户?如果是Windows用户,那么这将无法工作,要将Windows用户转接到SQL,你需要在web.config中进行(见上面的1)。sql连接假定该用户是SQL用户而不是windows用户。

  • 你用用户名/密码的尝试很接近,但你仍然指定了Integrated Security=SSPI,它试图强制windows用户认证到SQL。

  •