猿问

用户“ DOMAIN \ MACHINENAME $”的登录失败

我知道这几乎是重复的:错误“登录失败,用户NT AUTHORITY \ IUSR“”在ASP.NET和SQL Server 2008和用户登录失败“用户名” - System.Data.SqlClient.SqlException与LINQ中外部项目/类库,但是与我服务器上的其他应用程序相比,有些东西没有加起来,我不确定为什么。


使用的盒子:


Web框

SQL框

SQL测试框


我的应用程序:


我有一个ASP.NET Web应用程序,该应用程序引用了使用LINQ-to-SQL的类库。在类库中正确设置了连接字符串。由于用户“用户名”的登录失败-外部项目/类库中带有LINQ的System.Data.SqlClient.SqlException,我也将此连接字符串添加到了Web应用程序中。


连接字符串按原样使用SQL凭据(在Web应用程序和类库中):


 <add name="Namespace.My.MySettings.ConnectionStringProduction"

        connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"

        providerName="System.Data.SqlClient" />

通过将其添加到服务器资源管理器中,确认该连接正常。这是我的.dbml文件使用的连接字符串。


问题:


我收到以下错误:


System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

现在引用此错误在ASP.NET和SQL Server 2008中出现错误“用户'NT AUTHORITY \ IUSR'登录失败”,它表示这实际上是本地网络服务,使用任何其他非域名都将无效。


但是我很困惑,因为我已经选中了SQL Box和SQL Test Box SQL Management Studio,并且都NT AUTHORITY/NETWORK SERVICE在数据库级别的安全性->登录名下,未在安全性->用户下列出,但在数据库级安全性下->用户我在连接字符串中显示了用户。


在Web服务器上的NTFS级别,权限对NETWORK SERVICE具有完全控制权。


之所以感到困惑,是因为我的Web服务器上还有许多其他Web应用程序,它们同时引用SQL Box和SQL Test Box上的数据库,并且它们都可以工作。但是除了使用类库之外,我无法找到它们与当前应用程序之间的区别。那会重要吗?检查NTFS权限,在服务器和数据库级别设置安全性登录,连接字符串和连接方法(SQL Server凭据)以及IIS应用程序池和其他文件夹选项都是相同的。


为什么这些应用程序可以在不将machinename $添加到我的两个SQL框的权限的情况下工作?但这就是一个链接告诉我要解决此问题的方法。


扬帆大鱼
浏览 834回答 3
3回答

慕的地10843

NETWORK SERVICE和LocalSystem始终将自己作为本地对应的帐户(内置\网络服务和内置\系统)进行身份验证,但是两者都将作为远程计算机帐户进行身份验证。如果看到这样的故障Login failed for user 'DOMAIN\MACHINENAME$',则表明以NETWORK SERVICE或LocalSystem身份运行的进程已访问了远程资源,已将自身身份验证为计算机帐户,并被拒绝授权。典型示例是在应用程序池中运行的ASP应用程序,该应用程序池设置为使用NETWORK SERVICE凭据并连接到远程SQL Server:该应用程序池将通过运行该应用程序池的计算机进行身份验证,并且该计算机帐户需要被授予访问权限。如果拒绝对计算机帐户的访问,则必须将访问权限授予该计算机帐户。如果服务器拒绝登录“ DOMAIN \ MACHINE $”,那么您必须授予“ DOMAIN \ MACHINE $”登录权限,而不是“网络服务”。授予对NETWORK SERVICE的访问权限将允许以NETWORK SERVICE身份运行的本地进程连接,而不是远程进程,因为您猜到该远程进程将通过DOMAIN \ MACHINE $进行身份验证。如果您期望asp应用程序作为SQL登录名连接到远程SQL Server,并且获得有关DOMAIN \ MACHINE $的异常,则意味着您在连接字符串中使用Integrated Security。如果这是意外情况,则表示您已拧紧使用的连接字符串。

翻翻过去那场雪

当您使用IIS配置应用程序时,会发生此错误,并且IIS转到SQL Server并尝试使用没有适当权限的凭据登录。设置复制或镜像时,也会发生此错误。我将介绍一个始终有效且非常简单的解决方案。转到SQL Server >>安全>>登录,然后右键单击NT AUTHORITY \ NETWORK SERVICE,然后选择“属性”。在新打开的登录属性屏幕中,转到“用户映射”选项卡。然后,在“用户映射”选项卡上,选择所需的数据库,尤其是显示此错误消息的数据库。在下部屏幕上,检查角色db_owner。单击确定。
随时随地看视频慕课网APP
我要回答