SQL Server 2012无法使用计算机帐户登录


11

我们正在将IIS / SQL Server网站从2008年迁移到2012年,但身份验证存在问题。我们使用Windows身份验证将身份验证为DOMAIN\COMPUTER$,但这不起作用,并显示一条错误消息:

用户“ DOMAIN \ COMPUTER $”的登录失败。原因:找不到与提供的名称匹配的登录名。[客户:<本地计算机>]

我已经验证了该帐户的存在,甚至删除并重新创建了该帐户

create login "DOMAIN\COMPUTER$" from windows

如果再次执行此操作,则会收到响应:

消息15025,级别16,状态2,第1行
服务器主体“ DOMAIN \ COMPUTER $”已存在。

DOMAIN\COMPUTER用真实域名和计算机名代替)

因此,似乎该站点正在查询SQL Server,但是SQL Server并不是很努力地查看其登录名。

我错过了什么?

Answers:


6

它很可能根本不是DOMAIN \ computer $。已知此消息具有误导性。我认为它只需要授予“ NT AUTHORITY \ NETWORK SERVICE”服务器访问权限。打开SQL Server登录属性并添加此帐户。另外,检查IIS中使用哪个用户来模拟匿名用户,它应该类似于“ IUSR_ServerName”。也授予该用户访问权限


1
“ NT AUTHORITY \ NETWORK SERVICE”已具有服务器访问权限。IIS冒充为“ IUSR”(没有_ServerName)。据我所知,这不是真实帐户-由于这些帐户不存在,因此我无法授予对“ DOMAIN \ IUSR”或“ DOMAIN \ IUSR”的访问权限。
alt 2014年

这对我来说适用于Windows服务
user919426

在使用“复制数据库向导”和“ SQL导出导入向导”奋斗了一个漫长的早晨之后,这是唯一使之起作用的答案。谢谢!
Zalakain

6

@cha和@alt都有正确的线索-错误消息具有误导性并且Application Pool Identity涉及到错误消息(至少在我看来是这样)。

如果您的IIS应用程序的应用程序池使用Application Pool Identity,则您需要添加到SQL Server的用户帐户是IIS APPPOOL\your_app_pool_name。注意:请勿使用“ Search...登录属性”中的按钮来查找该用户-它会找到该用户,但将其替换为MACHINE_NAME\your_app_pool_name无效的用户-只需键入IIS APPPOOL\your_app_pool_name作为登录名即可。


1
仅当您的Web服务器和sql服务器位于同一框中时,它才有效。
maxisam

1
当然,应用程序池标识帐户是计算机AFAIK的本地帐户,因此您无法在其他计算机上使用它们。在这种情况下,只需使用SQL Server身份验证或在域帐户上运行Web应用程序即可。
Jakub Januszkiewicz

3

根据服务器设置,应该以不同的方式处理此问题。

  1. SQL和IIS服务器在同一台计算机上。

    一个。将应用程序池标识更改为Network Service

    b。将NT添加AUTHORITY\NETWORK SERVICE到您的SQL Server登录名

  2. SQL和IIS服务器位于不同的计算机上。

    一个。将计算机帐户添加DOMAIN\computer-name$到您的SQL Server登录名。

    b。应用程序池标识保留Application Pool Identity


1

我设法通过将IIS中的站点更改为使用Application Pool Identity,然后将“应用程序池标识”更改为来使其正常工作Network Service。随时对可能引起的任何安全问题发表评论。


为什么不使用域用户作为应用程序池,因为您已有AD甚至更好的管理服务帐户?
Spörri

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.