У меня есть проект локального веб-сервиса WCF, который я пытаюсь получить, чтобы получить доступ к моей базе данных. Это моя установка:
- SQLServer 2008 R2 Express
- IIS 7,5
- Использование
IIS APPPOOL\MyAppPool
пула приложений
AppPool настроен на целевой .Net 4.0, а его идентификатор установлен на ApplicationPoolIdentity.
Пользователь AppPool добавлен в базу данных, и ему были назначены права dataReader и dataWriter. Я попытался добавить пользователя в базу данных как в качестве «Логин» в Security \ Logins и как пользователь в MyDatabase \ Security \ Users.
Поскольку в конечном итоге я переключусь на аутентификацию сервера sql, я также попытался использовать реального пользователя Windows, которому я назначил права на чтение / запись в базе данных.
Затем я попытался преобразовать удостоверение ApplicationPool в NetworkService и добавил в базу данных пользователя NT AUTHORITY \ NETWORK SERVICE, но с таким же успехом.
Это строка подключения, которую я сейчас использую (со встроенной защитой):
Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=true"
Как только я пытаюсь взаимодействовать с базой данных в коде моего веб-сервиса, я получаю эту ошибку:
System.Data.SqlClient.SqlException: Невозможно открыть базу данных "MyDatabase", запрошенную при входе в систему. Ошибка входа Ошибка входа
для пользователя 'IIS APPPOOL \ MyAppPool'.
При использовании других пользователей, кроме ApplicationPool
, вместо имен IIS APPPOOL отображаются их имена.
Кто-нибудь знает, что я мог пропустить?
UPDATE:
С некоторой помощью Одеда и Томека теперь я почти уверен, что это связано с SQL Server. При использовании аутентификации SQL Server я получаю эту ошибку (в журнале событий Windows)
Причина: попытка входа с использованием проверки подлинности SQL не удалась. Сервер настроен только для аутентификации Windows.>
Использование встроенной безопасности (пользователь IIS APPPOOL \ MyAppPool) я получаю эту ошибку в журнале событий
Причина: не удалось открыть явно указанную базу данных.
Сервер настроен на использование «Режим аутентификации SQL Server и Windows», что меня озадачивает. Кажется, что второе сообщение просто означает, что учетные данные были неправильными, что также кажется странным, поскольку у пользователя AppPool нет пароля. Использование сценария, опубликованного guptam в посте 6 здесь: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=121202 НЕ показывает ни моего пользователя IISAPPPOOL, ни пользователя, созданного для аутентификации SQLServer. Пользователи существуют и под логином, и под пользователями, и им назначены правильные права.