关于c#:IIS APPPOOLMyAppPool无法登录我的SQL Server数据库

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'.

当使用除ApplicationPool以外的其他用户时,将显示其用户名而不是IIS应用程序池名称。有人知道我会错过什么吗?

更新:

在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;"

Integrated Security的值是SSPI,不是True

还有另一种语法:

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

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

我建议您看看connection strings.com,它是正确连接字符串的好资源。


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

参考文献


我最终决定重新安装SSMS,重新创建我的数据库。现在一切正常。我一定是在一些基本环境中出了什么根本性的问题。为所有的混乱和THX为所有的帮助!


你能试试这些步骤吗(你描述的一些步骤有点不清楚)。让我们尝试使用"SQL Server身份验证"

  • 创建登录安全性->登录,标记"SQL Server身份验证",提供密码,取消勾选"用户下次登录时更改密码"
  • 选择您使用的"默认数据库"
  • 转到"用户映射"页并选择数据库
  • 对刚配置的用户使用下面的连接字符串

    connectionString="数据源=您的服务器名;初始目录=您的用户名;用户ID=您的登录名;密码=您的密码"