IIS 7 не может создать ASPNETDB.MDF - PullRequest
1 голос
/ 13 марта 2012

У меня есть веб-приложение, которое использует локальную базу данных SQL Server Express (он же ~ / App_Data / ASPNETDB.MDF).

При развертывании в IIS 7.0 в Windows 2008 Standard (SP2) я получаюошибка:

Произошла ошибка, связанная с сетью или экземпляром, при установлении соединения с SQL Server.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(провайдер: сетевые интерфейсы SQL, ошибка: 26 - ошибка определения местоположения сервера / указанного экземпляра)

В сообщении об ошибке содержится несколько советов

Файл базы данных SQLExpress auto-ошибка создания:

Строка подключения указывает локальный экземпляр Sql Server Express, используя местоположение базы данных в каталоге App_Data приложения.Поставщик попытался автоматически создать базу данных служб приложений, поскольку поставщик определил, что база данных не существует.Следующие требования к конфигурации необходимы для успешной проверки существования базы данных служб приложений и автоматического создания базы данных служб приложений:

  1. Если приложение работает в Windows 7 или Windows Server 2008R2, специальные шаги настройкинеобходимы для автоматического создания базы данных провайдера.Дополнительная информация доступна по адресу: http://go.microsoft.com/fwlink/?LinkId=160102. Если каталог App_Data приложения еще не существует, учетная запись веб-сервера должна иметь права на чтение и запись в каталог приложения.Это необходимо, поскольку учетная запись веб-сервера автоматически создает каталог App_Data, если он еще не существует.
  2. Если каталог приложения App_Data уже существует, учетной записи веб-сервера требуется только доступ на чтение и запись в каталог приложения App_Data.,Это необходимо, поскольку учетная запись веб-сервера будет пытаться проверить, что база данных Sql Server Express уже существует в каталоге App_Data приложения.Отмена доступа для чтения в каталоге App_Data из учетной записи веб-сервера не позволит провайдеру правильно определить, существует ли база данных Sql Server Express.Это приведет к ошибке, когда провайдер попытается создать дубликат уже существующей базы данных.Доступ на запись необходим, поскольку при создании новой базы данных используются учетные данные учетной записи веб-сервера.
  3. На компьютере должна быть установлена ​​Sql Server Express.
  4. Идентификатор процесса для учетной записи веб-сервера должен иметьлокальный профиль пользователя.Подробнее о том, как создать локальный профиль пользователя для учетных записей компьютеров и доменов, см. В документе readme.

Я не понимаю, как устранить неполадки 4. (где я могу найти"документ readme"?).Однако остальные элементы выглядят мне корректно.

Конкретно ...

  1. Пул приложений, о котором идет речь, работает как СЕТЕВАЯ СЛУЖБА (не идентификация пула приложений)
  2. Пользователь NETWORK SERVICE имеет полный контроль над App_Data (правильно ли я понимаю, что ему НЕ нужно чтение / запись для родителя App_Data, поскольку App_Data уже создана?)

Интересно, если я скопируйте ASPNETDB.MDF и ASPNETDB.LDF с моей машины разработки в рабочую App_Data, ошибка изменится:

Произошла ошибка, связанная с сетью или экземпляром, при установлении соединения с SQL Server.,Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске указанного сервера / экземпляра) Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стекадля получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

В итоге я переместил соответствующие таблицы в новую базу данных SQL Server, поскольку не смог решить проблему с разрешениями.

В любом случае это рекомендуемый подход для производственного приложения, хотя, к сожалению, кажется очень трудным (с точки зрения определения, как настроить безопасность) развернуть вариант ASPNETDB.MDF для веб-сайта с очень низким объемом.

0 голосов
/ 13 марта 2012

У меня была такая же ошибка и раньше, и проблема была в том, что моя служба SQL Server была остановлена, это довольно странно, но иногда они просто зависали, мне приходилось переустанавливать SQL Server, потому что служба даже не просила меня запустить его,так что вы можете проверить это.

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