我正在尝试使用 .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 请求期间生成未处理的异常。有关异常来源和位置的信息可以使用下面的异常堆栈跟踪来识别。
我看到这个问题用户“NT AUTHORITY\NETWORK SERVICE”登录失败 https://stackoverflow.com/questions/2251839/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" />
但仍然有问题
您使用 Windows 身份验证进入服务器,因此它使用客户端的 Windows 帐户访问来验证访问/权限。在开发时,“客户端”实际上是 VS 开发服务器,但是当您部署到真正的 Web 服务器时,“客户端”作为另一个帐户运行,该帐户用于启动其服务,而不是您的帐户。
SQL Server 通常在安装时进行配置,以允许您sysadmin
访问,但对其他用户几乎没有任何其他限制,这就是您访问被拒绝的原因。
一种选择是使用带有用户/密码的 SQL 身份验证。从安全角度来看,如果同一个 Web 服务器运行许多网站(因为它们可能与彼此的数据隔离),这将是最佳选择。
如果您绝对想使用 Windows 身份验证,真正的解决方案是向内置帐户授予权限NT AUTHORITY\NETWORK SERVICE
在SSMS:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)