IIS APPPOOLMyAppPool unable to log in to my SQL Server database
我有一个本地的WCF Web服务项目,我正试图访问我的数据库。这是我的设置:
- SQLServer 2008 R2 Express
- IIS 7.5
- 使用
IIS APPPOOL\MyAppPool 应用程序池
AppPool设置为目标.NET 4.0,其标识设置为ApplicationPoolIdentity。AppPool用户已添加到数据库中,并已被分配DataReader和DataWriter权限。我尝试将用户添加到数据库中,无论是作为安全登录下的"登录"还是作为mydatabase 安全用户下的用户。
因为我最终会切换到SQL Server身份验证,所以我还尝试使用一个真正的Windows用户,我在数据库中分配了读写器权限。然后,我尝试将应用程序池的标识转换为NetworkService,并将NT AUTHORITYetwork Service用户添加到数据库中,但同样没有成功。
这是我当前使用的连接字符串(具有集成安全性):
1 | Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=true" |
一旦我尝试在我的Web服务代码中与数据库进行交互,就会出现以下错误:
System.Data.SqlClient.SqlException: Cannot open database"MyDatabase" requested by the login. The login failed. Login failed
for user 'IIS APPPOOL\MyAppPool'.
当使用除
更新:
在Ode和Tomek的帮助下,我现在非常确定这与SQL服务器有关。使用SQL Server身份验证时,我会得到此错误(在Windows事件日志中)
Reason: An attempt to login using SQL authentication failed. Server is configured for Windows authentication only.>
使用集成安全性(IIS AppPoolMyAppPool用户)我在事件日志中得到此错误
Reason: Failed to open the explicitly specified database.
服务器被配置为使用"SQL Server和Windows身份验证模式",尽管这让我很困惑。似乎第二条消息仅仅意味着凭证是错误的,这看起来也很奇怪,因为AppPool用户没有密码。使用Guptam在第6篇文章中发布的脚本:http://www.sqlteam.com/forums/topic.asp?topic_id=121202不显示我的iisAppPool用户,也不显示为SQLServer身份验证创建的用户。用户在登录名和用户下都存在,并且他们拥有分配的正确权限。
连接字符串应为:
1 | "Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=SSPI;" |
还有另一种语法:
1 | "Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" |
这里的关键是
我建议您看看connection strings.com,它是正确连接字符串的好资源。
转到您的IIS管理器->应用程序池。右键单击网站应用程序池并选择高级设置。并将标识更改为localsystem。
参考文献
我最终决定重新安装SSMS,重新创建我的数据库。现在一切正常。我一定是在一些基本环境中出了什么根本性的问题。为所有的混乱和THX为所有的帮助!
你能试试这些步骤吗(你描述的一些步骤有点不清楚)。让我们尝试使用"SQL Server身份验证"
对刚配置的用户使用下面的连接字符串
connectionString="数据源=您的服务器名;初始目录=您的用户名;用户ID=您的登录名;密码=您的密码"