我正在尝试将我的网站连接到带有.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
,但我仍然遇到问题,
我已经尝试过使用用户名和密码。这是连接字符串
<add name="TestDbConnectionString"
connectionString="Data Source=(local);Initial Catalog=RESv5;integrated security=SSPI;User Id=sa;Password=myPassword;"
providerName="System.Data.SqlClient" />
但仍有问题
答案 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用户成功登录:
编辑:这是一个详细的解释,也许它可以帮助你找到你错在哪里:
答案 2 :(得分:1)
您的网站在IIS中的服务帐户NETWORK_SERVICE下运行,这是一个计算机用户,无法访问您的SQL。要解决此问题,您应该将您的网站设置为在web.config中使用“identity impersonate = true”。但是,如果您在服务器上运行此命令,则可能会丢失经过身份验证的用户所谓的“双跃点”,其中您的IIS服务器无法在另一个步骤中将经过身份验证的用户中继到SQL服务器(PC(1) - &gt; IIS( 2) - &gt; SQL)。
Milica Medic在她的回答中是正确的,但在你的回复中你指定了一个用户“william”这是一个SQL用户还是一个windows用户?如果Windows用户然后这将无法工作,要将Windows用户转发到SQL,您需要在web.config中执行此操作(请参阅上面的1.)。 sql连接假定用户是SQL用户而不是Windows用户。
您的用户名/密码尝试已关闭但您仍在指定Integrated Security = SSPI,它会尝试强制对SQL进行Windows用户身份验证。
尝试创建一个像这样的连接字符串:
connectionString="Data Source=SQLSERVERINSTANCE;Initial Catalog=myDB;Persist Security Info=True;User ID=sa;Password=myPassword"