对对象 'aaa'、数据库 'bbb'、架构 'dbo' 的 SELECT 权限被拒绝

The SELECT permission was denied on the object 'aaa', database 'bbb', schema 'dbo'

我有一个 .net 核心应用程序,它托管在 Window Server 2012 IIS 生产环境中。屏幕之一是显示 select 语句的结果。

但是我得到了错误

`对象 'aaa'、数据库 'bbb'、架构 'dbo' 的 SELECT 权限被拒绝。

问题是我可以 运行 来自 Microsoft SQL Server Management Studio 的 select 查询成功。

我代码中的连接字符串是

"Server=MyServer, Database=MyDatabase;Integrated Security=True"

我在连接字符串上没有用户帐户,所以请不要建议我右键单击数据库上的 security\Users 节点以授予用户读写权限等

我认为它是在 Windows 服务器中设置的吗?

更新: 在我们的测试 QA 站点中,我们有另一个 Windows Server 2012。相同的代码,但是测试网站只是 运行 没问题。所以我认为有区别,但我无法弄清楚。应用程序文件夹安全设置相同。

在您的本地计算机上测试时,该应用程序在您的用户帐户的上下文中运行。这是用于使用 Integrated Security 连接到数据库的帐户。

在 IIS 中部署时,应用程序在映射到 IIS 应用程序池 的网站或虚拟目录的上下文中运行。您可以在 IIS 管理器中看到这些应用程序池。应用程序池在特定用户帐户的上下文中运行,这是用于集成安全性的帐户:

您需要找到此帐户并授予它访问您的数据库的权限。某些常见的帐户类型,例如 Network ServiceApplicationPoolIdentity,不能很好地与开箱即用的集成安全一起使用。您可能需要采取额外的步骤,甚至需要在 Active Directory 中创建或申请一个您可以使用的特殊服务帐户。