alt*_*alt 11 authentication sql-server sql-server-2012
我们正在将 IIS/SQL Server 站点从 2008 年迁移到 2012 年,但我遇到了身份验证问题。我们使用 Windows 身份验证作为 进行身份验证DOMAIN\COMPUTER$,但这不起作用,并给出错误消息:
用户 'DOMAIN\COMPUTER$' 登录失败。原因:找不到与提供的名称匹配的登录名。[客户端:<本地机器>]
我已经验证该帐户存在,甚至删除并重新创建它
create login "DOMAIN\COMPUTER$" from windows
Run Code Online (Sandbox Code Playgroud)
如果我再做一次,我得到的回应是:
消息 15025,级别 16,状态 2,第 1 行
服务器主体 'DOMAIN\COMPUTER$' 已经存在。
(DOMAIN\COMPUTER替换为真实的域和计算机名)
所以看起来该站点正在查询 SQL Server,但 SQL Server 并没有非常努力地查看其登录信息。
我错过了什么?
小智 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登录名即可。
小智 5
根据服务器设置,应以不同方式处理此问题。
SQL 和 IIS 服务器位于同一台计算机上。
A。将应用程序池标识更改为Network Service
b. 将 NT 添加AUTHORITY\NETWORK SERVICE到您的 SQL Server 登录名
SQL 和 IIS 服务器位于不同的计算机上。
A。将计算机帐户 , 添加DOMAIN\computer-name$到您的 SQL Server 登录名。
b. 应用程序池标识仍然存在Application Pool Identity
我设法通过将 IIS 中的站点更改为使用Application Pool Identity,然后将应用程序池标识更改为 来使其正常工作Network Service。请随意评论这可能引发的任何安全问题。