2013-05-07 3 views
20

I, имеющий следующее сообщение об ошибке:Войти Сбой пользователя «IIS AppPool myAppPool

Cannot open database "SmallBakery" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\MyAppPool'

Как исправить это? Я использую Windows 7 Enterprise Edition и Sql server 2012.

+0

У этого пользователя есть доступ к серверу sql? –

+0

Можете ли вы разместить строку подключения к БД? – JackLock

ответ

21

Если вы не изменитесь, каждое приложение бассейн имеет собственную идентичность. В вашем случае просто добавьте нового пользователя в свою базу данных SmallBakery с именем IIS APPPOOL\MyAppPool с помощью SQL Management Studio. Вы найдете список пользователей в поддиапазоне «Безопасность/Пользователи» вашей базы данных. Это должно выглядеть примерно так:

enter image description here

Для тестирования позволяет пользователю быть членом db_owner роли. Если это сработает, удалите эту роль и просто оставьте ее членом db_datareader и db_datawriter.

Таким образом, каждый пул приложений (возможно, каждый веб-сайт, если все они используют собственный пул приложений), имеет доступ только к соответствующей базе данных.

+1

Спасибо! это было очень полезно !! – Freddy

+1

Работал для меня! Благодарю. – RobHurd

+2

Дополнительная информация в следующем ответе помогла мне решить ту же ошибку: http: // stackoverflow.com/a/1973895/704808 – weir

1

Это зависит от того, как вы хотите аутентифицироваться в своем приложении. Вы пытаетесь использовать олицетворение в своем приложении?

Что происходит прямо сейчас, тождественность вашего пула приложений в IIS проходит, когда вы пытаетесь получить доступ к базе данных. Вы можете изменить личность своего пула приложений на то, что имеет доступ к базе данных, или вы можете изменить строку подключения, чтобы использовать конкретный логин вместо интегрированной безопасности.

+0

Я использую следующую строку соединения: ConnectionString = "Data Source = HAIDRWHP5005160 \ SQLEXPRESS; Initial Catalog = SmallBakery; Integrated Security = True" В IIS App Бассейн у меня есть: Idendity: ApplicationPoolIdentity – Freddy

+0

Right. Так, как я уже сказал, вам нужно будет изменить Identity пула приложений на то, что имеет доступ к базе данных или изменить строку подключения. – squillman

+1

... или добавить идентификатор пула приложений в качестве пользователя в вашу базу данных. –

0

Отметьте это сообщение. Ваша проблема звучит похоже на ту, с которой я столкнулся, с тем же точным сообщением об ошибке.

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

+0

Я видел что-то подобное в http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0 – Freddy

+0

@Freddy, Как комментарий к ответу, ссылаясь на: «Если вас беспокоит безопасность, не делайте этого». –

0

Как и другие пользователи, вам необходимо взять пользователя системы приложений (IIS AppPool \ myapppool) и добавить его в качестве пользователя базы данных для этой базы данных с соответствующими разрешениями.

Обратите внимание, что это будет работать только на вашем IIS/сервере, но если вы планируете переносить приложение на другой сервер IIS/Sql, ему потребуются изменения как в SQL Server, так и в IIS. Я бы посоветовал вам также рассмотреть возможность аутентификации в sql-сервере - это может быть более удобно для вашего конкретного случая.

Смежные вопросы