Я пытаюсь перенести веб-сайт с SQL Server 2008 Express на SQL Server Web, но у этого веб-сайта возникают проблемы с доступом к базе данных. По правде говоря, Express когда-либо использовался только при запуске веб-сайта со встроенного веб-сервера Visual Studio, поэтому я не уверен, что конфигурация работает так хорошо в полномасштабном IIS 7. Во всяком случае, когда я пытаюсь получить доступ к странице который использует Linq to Entities (требующий подключения веб-сайта к базе данных), я получаю сообщение об ошибке «Ошибка входа для IIS AppPool \ ASP.NET v4.0». Итак, я открыл SQL Server Management Studio и попытался добавить логин для пользователя, но я просто получил сообщение «Windows NT или группа пользователей '***** \ Asp.Net v4.0' не найдены» . Это происходит даже после того, как я прошу Management Studio проверить имя пользователя, что она успешно выполняет. Может кто подскажет, что я делаю не так? Кроме того, я открыт для альтернативных предложений ... Все работает на одном сервере, поэтому удаленных подключений нет. По этой причине я бы хотел использовать проверку подлинности Windows, если это вообще возможно.
IIS 7 пытается использовать удостоверение пула приложений IIS для доступа к вашей базе данных SQL.
Поэтому сначала необходимо предоставить пулу приложений IIS 7 доступ к серверу SQL.
Для этого перейдите в SQL Server Management Studio -> Server Instance -> Security -> Logins -> New Login.
Имя для входа будет «IIS APPPOOL \ ASP.NET v4.0». Это связано с тем, что каждый раз, когда вы создаете пул приложений в IIS7, он создает идентификатор, который использует то же имя, что и ваш пул приложений. В вашем случае вы используете пул приложений по умолчанию, который поставляется с asp.net 4.
Затем в своей базе данных перейдите в Security -> Logins -> New login, дайте ему псевдоним, затем выберите свой пользовательский объект, который вы добавили на предыдущем шаге (IIS APPPOOL \ ASP.NET v4.0), затем дайте ему db_owner (или какими бы ни были ваши потребности) схемы / привилегии ролей.
РЕДАКТИРОВАТЬ: Пожалуйста, не делайте этого - я не думал, когда изначально писал этот ответ.
Чтобы узнать подробнее, почему мой исходный ответ не является хорошей идеей, просмотрите ссылку в комментариях ниже.
Другое решение - войти в IIS и отредактировать сам пул приложений, чтобы использовать идентификатор LocalSystem. Это можно найти, щелкнув правой кнопкой мыши пул приложений -> дополнительные настройки -> нажмите кнопку Identity «...» (прямо под «Модель процесса») -> выберите «LocalSystem» в раскрывающемся списке «Встроенная учетная запись».
При этом вам не нужно создавать нового пользователя в своей базе данных.
Просто следуйте инструкциям на рисунках ниже и убедитесь, что вы выбрали свою базу данных при сопоставлении пользователей.
введите описание изображения здесь