5

我有一个网站的以下配置:

  • 两个 Web 前端(例如机器名称:WFE1 & WFE2) 1 SQ
  • 一个 SQL Server 数据库集群(例如机器名称:DBCluster)

所有机器都在同一个域(例如 MyDomain)中运行 Windows 2008 R2 Enterprise 和 SQL Server 2008 R2。

我正在部署一个使用应用程序池标识的 Web 应用程序。我已将池命名为 MyWebApp,它转换为名称 [IIS APPPOOL\MyWebApp]。当我尝试将此用户添加到 SQL Server 时,出现错误:

未找到 Windows NT 用户或组 'IIS APPPOOL\MyWebApp'。再次检查名称。

我用来在 SQL Server 中创建帐户的脚本是:

使用 DEFAULT_DATABASE=[MyDatabase], DEFAULT_LANGUAGE=[us_english] 从 WINDOWS 创建登录 [IIS APPPOOL\MyWebApp] GO

我想问题正在发生,因为 IIS 帐户是 SQL Server 框不可见的本地帐户。

有人可以说明如何解决这个问题吗?使用域帐户是我唯一的选择,还是我仍然可以让应用程序池帐户工作?

4

1 回答 1

4

我想问题正在发生,因为 IIS 帐户是 SQL Server 框不可见的本地帐户。

这正是问题所在。IIS AppPool 帐户仅存在于 Web 服务器上。如果您能够将此帐户添加到 SQL Server,则您将授权与 SQL Server在同一台计算机上运行的 IIS AppPool 。(我怀疑它可能仍然会失败。)

最安全的解决方案可能是按照您的说法 - 在域上创建一个帐户,为该帐户授予对数据库的适当权限,然后使用该帐户的凭据运行 AppPool。

但是,如果您仍然想这样做,您需要授权运行 AppPool 的计算机- 即DOMAINNAME\ComputerName$(注意$最后的)。

查看这篇文章以获取更多信息(特别是标题为“访问网络”的部分)。

然而,我认为这是一个坏主意,因为它授权作为 NetworkService 运行的任何程序访问数据库——而不仅仅是您的 Web 应用程序。

于 2013-03-16T03:38:38.333 回答