IIS APPPOOL \ MyAppPool не может войти в мою базу данных SQL Server - PullRequest
3 голосов
/ 03 февраля 2012

У меня есть проект локального веб-сервиса 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. Пользователи существуют и под логином, и под пользователями, и им назначены правильные права.

Ответы [ 4 ]

3 голосов
/ 03 февраля 2012

Строка подключения должна быть:

"Server=.\SQLEXPRESS;Database=MyDatabase;Integrated Security=SSPI;"

Значение Integrated Security равно SSPI, а не True.

Существует альтернативный синтаксис:

"Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;"

Ключ здесь Trusted_Connection, а не Integrated Security.

Я предлагаю взглянуть на connectionstrings.com - хороший ресурс для правильных строк подключения.

1 голос
/ 16 августа 2012

Перейдите в диспетчер IIS -> ApplicationPool. Щелкните правой кнопкой мыши свой веб-сайт ApplicationPool и выберите «Дополнительные настройки». И измените Идентичность на LocalSystem.

Ссылка

0 голосов
/ 04 февраля 2012

В конце концов я решил переустановить SSMS и заново создать свою базу данных.Это сейчас и работает, как и должно.Должно быть, у меня была какая-то принципиальная ошибка в некоторых базовых ситуациях.Прошу прощения за все замешательство и спасибо за помощь!

0 голосов
/ 03 февраля 2012

Можете ли вы попробовать эти шаги (некоторые шаги вашего описания немного неясны). Попробуем использовать «аутентификацию сервера sql»

  1. Создание логина безопасности-> Логины, отметьте «аутентификация сервера sql», введите пароль, снимите флажок «Пользователь должен сменить пароль при следующем входе»
  2. Выберите "базу данных по умолчанию" для используемой вами
  3. Перейдите на страницу «Отображение пользователей» и выберите свою базу данных
  4. Использовать ниже строку подключения с пользователем, которого вы только что настроили

    connectionString = "Источник данных = YourDbServerName; Начальный каталог = YourDbName; ID пользователя = YourLogin; Пароль = YourPass"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...