У меня есть веб-приложение, которое использует локальную базу данных 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 приложения.Поставщик попытался автоматически создать базу данных служб приложений, поскольку поставщик определил, что база данных не существует.Следующие требования к конфигурации необходимы для успешной проверки существования базы данных служб приложений и автоматического создания базы данных служб приложений:
- Если приложение работает в Windows 7 или Windows Server 2008R2, специальные шаги настройкинеобходимы для автоматического создания базы данных провайдера.Дополнительная информация доступна по адресу: http://go.microsoft.com/fwlink/?LinkId=160102. Если каталог App_Data приложения еще не существует, учетная запись веб-сервера должна иметь права на чтение и запись в каталог приложения.Это необходимо, поскольку учетная запись веб-сервера автоматически создает каталог App_Data, если он еще не существует.
- Если каталог приложения App_Data уже существует, учетной записи веб-сервера требуется только доступ на чтение и запись в каталог приложения App_Data.,Это необходимо, поскольку учетная запись веб-сервера будет пытаться проверить, что база данных Sql Server Express уже существует в каталоге App_Data приложения.Отмена доступа для чтения в каталоге App_Data из учетной записи веб-сервера не позволит провайдеру правильно определить, существует ли база данных Sql Server Express.Это приведет к ошибке, когда провайдер попытается создать дубликат уже существующей базы данных.Доступ на запись необходим, поскольку при создании новой базы данных используются учетные данные учетной записи веб-сервера.
- На компьютере должна быть установлена Sql Server Express.
- Идентификатор процесса для учетной записи веб-сервера должен иметьлокальный профиль пользователя.Подробнее о том, как создать локальный профиль пользователя для учетных записей компьютеров и доменов, см. В документе readme.
Я не понимаю, как устранить неполадки 4.
(где я могу найти"документ readme"?).Однако остальные элементы выглядят мне корректно.
Конкретно ...
- Пул приложений, о котором идет речь, работает как СЕТЕВАЯ СЛУЖБА (не идентификация пула приложений)
- Пользователь 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 - ошибка при поиске сервера / указан экземпляр)
Чего мне не хватает?