sql server 2008登录失败,用户“NT AUTHORITY \ NETWORK SERVICE'

时间:2014-03-22 14:09:11

标签: asp.net sql-server sql-server-2008 connection-string

我正在尝试将我的网站连接到带有.net framework 4的Windows Server 2003上的sql server 2008 r2

这是连接字符串:

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

我有一个例外,即:

  

用户'NT AUTHORITY \ NETWORK SERVICE'登录失败   描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:用户'NT AUTHORITY \ NETWORK SERVICE'登录失败。

     

来源错误:

     

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

我看到了这个问题Login failed for user 'NT AUTHORITY\NETWORK SERVICE',我尝试将用户命名为NT AUTHORITY\NETWORK SERVICE,但我仍然遇到问题,

EDIT1

我已经尝试过使用用户名和密码。这是连接字符串

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

但仍有问题

3 个答案:

答案 0 :(得分:7)

您正在使用Windows身份验证进入服务器,因此它使用来自客户端的Windows帐户访问来验证访问/权限。在开发中,“客户端”实际上是VS开发服务器,但是当您部署到真实的Web服务器时,“客户端”作为另一个帐户运行,用于启动其服务的帐户,而不是您的。

通常在安装时配置SQL Server以允许自己sysadmin访问,但对其他用户几乎没有其他任何东西,这就是您拒绝访问的原因。 一种选择是使用带有用户/密码的SQL身份验证。安全方面,如果同一个Web服务器运行许多网站(因为它们可能与其他数据隔离),这将是最佳选择。

如果您绝对想要使用Windows身份验证,真正的解决方案是在SSMS上为内置帐户NT AUTHORITY\NETWORK SERVICE授予权限:

CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS WITH DEFAULT_DATABASE=[RESv5]
GO
USE [RESv5]
GO
CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]
GO
ALTER ROLE [db_owner] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]
GO

答案 1 :(得分:2)

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

enter image description here

编辑:这是一个详细的解释,也许它可以帮助你找到你错在哪里:

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

答案 2 :(得分:1)

  1. 您的网站在IIS中的服务帐户NETWORK_SERVICE下运行,这是一个计算机用户,无法访问您的SQL。要解决此问题,您应该将您的网站设置为在web.config中使用“identity impersonate = true”。但是,如果您在服务器上运行此命令,则可能会丢失经过身份验证的用户所谓的“双跃点”,其中您的IIS服务器无法在另一个步骤中将经过身份验证的用户中继到SQL服务器(PC(1) - &gt; IIS( 2) - &gt; SQL)。

  2. Milica Medic在她的回答中是正确的,但在你的回复中你指定了一个用户“william”这是一个SQL用户还是一个windows用户?如果Windows用户然后这将无法工作,要将Windows用户转发到SQL,您需要在web.config中执行此操作(请参阅上面的1.)。 sql连接假定用户是SQL用户而不是Windows用户。

  3. 您的用户名/密码尝试已关闭但您仍在指定Integrated Security = SSPI,它会尝试强制对SQL进行Windows用户身份验证。

  4. 尝试创建一个像这样的连接字符串:

    connectionString="Data Source=SQLSERVERINSTANCE;Initial Catalog=myDB;Persist Security Info=True;User ID=sa;Password=myPassword"