21

我有以下错误消息:

无法打开登录请求的数据库“SmallBakery”。登录失败。用户 'IIS APPPOOL\MyAppPool' 登录失败

如何纠正这个?我正在使用 Windows 7 企业版和 Sql server 2012。

4

5 回答 5

21

如果您不更改,则每个应用程序池都有自己的身份。在您的情况下,只需使用 SQL Management StudioSmallBakery将名称添加到数据库中即可。IIS APPPOOL\MyAppPool您可以在数据库的“安全/用户”子节点中找到用户列表。这应该看起来像这样:

在此处输入图像描述

为了测试,让用户成为db_owner角色的成员。如果可行,请删除此角色并让它成为db_datareaderand的成员db_datawriter

这样,每个应用程序池(可能是每个网站,如果它们都使用自己的应用程序池)只能访问相应的数据库。

于 2013-05-07T20:16:49.700 回答
1

这取决于您希望如何在您的应用程序中进行身份验证。您是否尝试在您的应用程序中使用模拟?

现在发生的情况是,当您尝试访问数据库时,您在 IIS 中的应用程序池的身份正在通过。您可以将应用程序池的身份更改为可以访问数据库的身份,或者您可以更改连接字符串以使用特定登录名而不是集成安全性。

于 2013-05-07T19:55:07.027 回答
0

看看这个帖子。您的问题听起来与我遇到的问题相似,但错误消息完全相同。

http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-2-instance-ownership.aspx

于 2013-05-07T19:55:21.163 回答
0

就像到目前为止其他人所说的那样,您需要获取您的应用程序池系统用户(IIS AppPool\myapppool)并将其添加为具有适当权限的该数据库的数据库用户。

请注意,这只会在您的 IIS/Server 上找到,但如果您计划将应用程序迁移到不同的 IIS/Sql 服务器,则需要同时更改 SQL Server 和 IIS。我建议您也考虑使用 sql server 身份验证 - 对于您的特定情况,它可能更方便。

于 2013-05-08T09:23:01.357 回答
0

就我而言,这些步骤使我成功处理了此错误。希望它也对您有所帮助

在此处输入图像描述

于 2019-05-31T05:16:21.277 回答