
Я столкнулся со следующей ошибкой:
Cannot open database "testbase" requested by the login. The login failed.
Login failed for user 'IIS APPPOOL\Web2'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Cannot open database "testbase" requested by the login. The login failed.
Login failed for user 'IIS APPPOOL\Web2'.
Итак, где я могу дать этому пользователю разрешение Web2? (Кстати, на сервере такого пользователя нет Web2
, но есть папка с именем, Web2
расположенная в папке wwwroot.)
Я ищу ответы, но все они безуспешны:
[1] Добавьте пользователя IUSR
в папку и предоставьте ему разрешение на чтение.
[2]http://www.codekicks.com/2008/11/cannot-open-database-northwind.html
решение1
Вам необходимо добавить пользователя на ваш SQL Server с именем пользователя "IIS APPPOOL\Web2" и предоставить этому пользователю доступ к базе данных. Обратите внимание, что вы будетенетвидите это имя пользователя в поиске, но вымощьесли нажать «проверить имена», он изменится на подчеркнутый.
Пользователь фактически не существует на машине, за исключением управления разрешениями пула приложений.
В качестве альтернативы вы можете настроить пул приложений на запуск от имени другого пользователя.
Для получения более подробной информации см.http://blogs.iis.net/webdevelopertips/archive/2009/10/02/tip-98-did-you-know-the-default-application-pool-identity-in-iis-7-5-windows-7-changed-from-networkservice-to-apppoolidentity.aspxиhttp://learn.iis.net/page.aspx/624/application-pool-identities/
Вот пример списка логинов SQL Server:
Вот пример списка логинов базы данных:
Вот данные пользователя базы данных: (Обратите внимание, что в обоих полях указано одно и то же имя. Второе поле должно совпадать с именем входа из списка имен входа SQL Server.)
Вы также можете попробовать использовать код вместо графического интерфейса:
USE [master]
GO
CREATE LOGIN [IIS APPPOOL\Web2] FROM WINDOWS WITH DEFAULT_DATABASE=[testbase]
GO
USE [testbase]
GO
CREATE USER [IIS APPPOOL\Web2] FOR LOGIN [IIS APPPOOL\Web2]
GO
EXEC sp_addrolemember N'db_owner', N'IIS APPPOOL\Web2'
GO
Я назначил разрешения владельца, но ваше приложение может обойтись и более низкими разрешениями. Обычно считается хорошей практикой давать самые низкие разрешения, которые только можно себе позволить.