«Попытка присоединить базу данных с автоматическим именем для файла * FileName * не удалась.»ошибка после перехода с ASP.NET Dev Server на IIS - PullRequest
3 голосов
/ 27 января 2012

Мой проект ASP.NET имеет базу данных MDF в папке App_Data.

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

Источник данных =. \ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ MainDatabase.mdf; Интегрированная безопасность = True; Пользовательский экземпляр = True

Работало нормально, пока я не изменил параметры проекта, чтобы использовать «Локальный веб-сервер IIS» вместо «Сервер разработки Visual Studio».

Теперь проект выдает следующее SqlException:

Попытка присоединить базу данных с автоматическим именем для файла C: \ Users \ Admin \ documents \ visual studio 2010 \ Projects \ SL \ SL \ App_Data \ MainDatabase.mdf не удалась.База данных с тем же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.

Как изменить строку подключения, чтобы она работала с IIS?

Ответы [ 3 ]

1 голос
/ 28 января 2012

Поскольку вы используете Integrated Security, пользователь, подключающийся, должен сопоставиться с именем входа SQL Server. Когда вы перешли на IIS, вы переключили пользователя, и он может не сопоставляться с именем входа в БД. Вы можете проверить это, указав имя пользователя и пароль, действительные в вашей базе данных.

Например:

Источник данных =. \ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ MainDatabase.mdf; Идентификатор пользователя = admin; Пароль = пароль; Экземпляр пользователя = True

1 голос
/ 27 января 2012

Вероятно, вы обнаружите, что это права доступа к файлу (в сообщении об ошибке указано: « или указанный файл не может быть открыт »).IIS по умолчанию работает как пользователь с ограниченными правами и вряд ли имеет доступ к домашнему каталогу администраторов.

Доступны три варианта:

  1. Изменить идентификатор пула приложений вIIS для запуска от имени пользователя, у которого есть доступ к этой папке
  2. Переместите файл MDF в место, к которому IIS может получить доступ (а затем проверьте разрешения для файла)
  3. Измените разрешения дляфайл (и, возможно, каталоги над ним), чтобы IIS мог получить к нему доступ.

Из них номер 2 является наиболее желательным.Два других несколько снижают безопасность - во-первых, предоставляя IIS бесплатное управление большей частью файловой системы (и, возможно, системными ресурсами);третий может открыть домашний каталог пользователя для IIS.

0 голосов
/ 27 января 2012

Убедитесь, что учетная запись пользователя, на которой запущен процесс IIS, имеет правильные разрешения для этого файла.

...