IIS APPPOOL\MyAppPool 无法登录到我的 SQL Server 数据库

Posted

技术标签:

【中文标题】IIS APPPOOL\\MyAppPool 无法登录到我的 SQL Server 数据库【英文标题】:IIS APPPOOL\MyAppPool unable to log in to my SQL Server databaseIIS APPPOOL\MyAppPool 无法登录到我的 SQL Server 数据库 【发布时间】:2012-02-25 12:35:22 【问题描述】:

我有一个本地 WCF Web 服务项目,我正在尝试访问我的数据库。这是我的设置:

SQLServer 2008 R2 Express IIS 7.5 使用IIS APPPOOL\MyAppPool 应用程序池

AppPool 设置为面向 .Net 4.0,其标识设置为 ApplicationPoolIdentity。 AppPool 用户被添加到数据库中,并被分配了 dataReader 和 dataWriter 权限。我尝试将用户作为 Security\Logins 下的“登录”和 MyDatabase\Security\Users 下的用户添加到数据库中。

由于我最终会切换到 sql server 身份验证,因此我还尝试使用我在数据库中分配了读取/写入权限的真实 Windows 用户。 然后我尝试将 ApplicationPool 的身份转换为 NetworkService 并将 NT AUTHORITY\NETWORK SERVICE 用户也添加到数据库中,但同样没有成功。

这是我当前正在使用的连接字符串(具有集成安全性):

Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=true"

当我尝试在我的 Web 服务代码中与数据库交互时,我会收到以下错误:

System.Data.SqlClient.SqlException:无法打开登录请求的数据库“MyDatabase”。登录失败。登录失败 对于用户 'IIS APPPOOL\MyAppPool'。

当使用ApplicationPool 以外的其他用户时,将显示他们的用户名而不是 IIS APPPOOL 用户名。 有谁知道我可能错过了什么?

更新:

在 Oded 和 Tomek 的帮助下,我现在很确定它与 SQL Server 有关。使用 SQL Server 身份验证时出现此错误(在 Windows 事件日志中)

原因:尝试使用 SQL 身份验证登录失败。服务器配置为仅用于 Windows 身份验证。>

使用集成安全性(IIS APPPOOL\MyAppPool 用户)我在事件日志中收到此错误

原因:无法打开明确指定的数据库。

服务器配置为使用“SQL Server 和 Windows 身份验证模式”,但这让我感到困惑。似乎第二条消息只是意味着凭据错误,这也很奇怪,因为 AppPool 用户没有密码。使用 guptam 在帖子 6 中发布的脚本:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=121202 不会显示我的 IISAPPPOOL 用户,也不会显示为 SQLServer 身份验证创建的用户。用户确实存在于 Login 和 Users 下,并且分配了正确的权限。

【问题讨论】:

【参考方案1】:

连接字符串应该是:

"Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=SSPI;"

Integrated Security 的值是 SSPI,而不是 True

还有另一种语法:

"Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;"

这里的关键是Trusted_Connection,而不是Integrated Security

我建议看看connectionstrings.com - 一个正确连接字符串的好资源。

【讨论】:

没有运气,同样的错误:(。你链接的那个页面非常好。 @HenrikSonesson - 你确定你有一个为用户IIS APPPOOL\MyAppPool 工作的Login?您是否尝试以该用户身份登录? 我确定该用户存在于数据库中,但它不是一个完整的帐户,只是一个服务/虚拟用户。不幸的是,我无法找到有关如何测试该用户是否可以访问数据库的任何线索。 (除了从 Web 服务调用数据库之外,这就是我要解决的问题) @HenrikSonesson - userlogin 之间存在差异。即使你两者都有,它们也需要相互关联。至于测试——打开Management Studio,连接数据库只需要从信任连接更改设置并指定登录。 是的,我通过用户映射将它们相互映射。使用 SQL Server 身份验证而不是 Windows 身份验证连接到 SSMS 并使用 IISAPPPOOL\MyAppPool 会导致(win 事件日志):“服务器配置为仅用于 Windows 身份验证”。我已经检查并仔细检查了服务器确实处于接受 Windows 身份验证和 SQL Server 身份验证的模式。【参考方案2】:

转到您的 IIS 管理器 -> 应用程序池。右键单击您的网站 ApplicationPool 并选择高级设置。并将 Identity 更改为 LocalSystem。

Reference

【讨论】:

此版本的 IIS 以 AppPool Identity 作为帐户来建立登录权限。这是 IIS 中的安全改进。将其设置为再次使用本地系统允许此 IIS 增强旨在修复的安全漏洞。 谢谢阿里!它对我有用。有没有办法保持安全并访问它?【参考方案3】:

你能试试这些步骤吗(你描述的一些步骤有点不清楚)。让我们尝试使用“sql server authentication”

    创建登录安全->登录,标记“sql server authentication”,提供密码,取消勾选“user mast change password at next login” 选择“默认数据库”到您使用的那个 转到“用户映射”页面并选择您的数据库

    将下面的连接字符串与您刚刚配置的用户一起使用

    connectionString="Data Source=YourDbServerName;Initial Catalog=YourDbName;User ID=YourLogin;Password=YourPass"

【讨论】:

对不起,有点不清楚,我将编辑原始帖子以更好地描述。我确实尝试了这些步骤,但没有成功。我错过了“用户必须更改密码”的勾选,但不幸的是,这也没有帮助。 @HenrikSonesson:你有同样的例外吗?您可以使用连接字符串中的登录名从 SSMS 连接到该数据库吗? 是的,我得到了同样的例外。无论我是连接 vie webservice 还是 SSMS,尝试 SQL Server 身份验证登录都会呈现相同的“服务器仅配置为 win 身份验证”。问题是它不是......它设置为同时使用:(。我倾向于尽快重新安装 SSMS。【参考方案4】:

我最终决定重新安装 SSMS 并从头开始重新创建我的数据库。它现在已按应有的方式启动并运行。在某些基本设置中,我一定有一些根本性的错误。为所有的困惑道歉,感谢所有的帮助!

【讨论】:

以上是关于IIS APPPOOL\MyAppPool 无法登录到我的 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章

iis。关于js调用并打开服务器上的word文档

登录失败。用户 'IIS APPPOOL\ASP.NET v4.0' 登录失败

OpenSSL解决ArcGIS软件部署的证书问题(三)--ArcGIS绑定证书

深度论坛怎么了 怎么登不上去啊? 被H X 了吗?(天啊 ,有 H X 俩字就无法提交,无语。。。。)

iis配置了php环境,发布网站无法访问

iis无法启动