SQL Express и IIS. База данных не будет подключена, если вы отсоедините ее вручную?

Поскольку ответы на самом деле не охватывают проблему, я разместил это на ASP.Net и полностью перефразировал. Я опубликую отредактированный вопрос здесь:


Я использую строку подключения attachDB и обычно использую IIS. Сайт работает нормально, однако я внес некоторые изменения в базу данных, и самая новая версия не будет копировать, как указано в файле, который используется.

Я открыл студию управления SQL и увидел, что она смонтирована, поэтому я отсоединил ее.

Затем я смог без проблем скопировать новую версию, однако при следующем запуске сайта я получаю:

Не удалось открыть физический файл «C:\inetpub\wwwroot\vs\App_Data\aspnetdb.mdf». Ошибка операционной системы 5: «5 (не удалось получить текст для этой ошибки. Причина: 15105)». Не удалось подключить базу данных с автоматическим именем для файла C:\inetpub\wwwroot\vs\App_Data\aspnetdb.mdf. База данных с таким именем существует, или указанный файл не может быть открыт, или он находится в общей папке UNC.

И если я попытаюсь получить доступ к пользователям .Net или другим нескольким параметрам в диспетчере IIS, я получаю следующую ошибку:

Пользователи .NET

При выполнении этой операции произошла ошибка.

Подробности:

Соединение с сервером было успешно установлено, но затем во время входа в систему произошла ошибка. (поставщик: Shared Memory Provider, ошибка: 0 — на другом конце канала нет процесса.)

OK

Я попытался перезапустить пул приложений, перезапустить экземпляр SQL и даже перезагрузить компьютер.

Ничего не помогает, и я не могу понять, что не так... Откуда он помнит, где были подключены предыдущие базы данных, и почему он автоматически не подключает базу данных?... Кто-то сказал, что они автоматически отключаются через 2 1/2 часа, однако Я ждал 5 часов, когда база данных не использовалась, и SQL Manager показал, что она все еще подключена.

Когда я вручную подключаю базу данных, все работает нормально.


person Wil    schedule 08.12.2009    source источник
comment
В сообщении говорится, что файл уже прикреплен к основным системным базам данных изменений, чтобы увидеть, к какой базе данных, по его мнению, файл уже прикреплен.   -  person u07ch    schedule 08.12.2009
comment
изменение предназначалось для чтения проверки   -  person u07ch    schedule 08.12.2009
comment
Также убедитесь, что у пользователя процесса SQL-сервера есть разрешения на просмотр папки, в которую вы поместили файлы.   -  person u07ch    schedule 08.12.2009


Ответы (2)


Когда вы запрашиваете подключение базы данных на лету к экземпляру SQL Express с помощью строки подключения AttachDBFileName, приложение вообще не будет подключаться к экземпляру SQL Expres, а вместо этого подключится к дочернему экземпляру экземпляр, который является новым экземпляром, созданным специально для пользователя, запрашивающего операцию присоединения. См. раздел Экземпляры пользователей SQL Server 2005 Express Edition. Этот дочерний экземпляр подключит базу данных и будет продолжать работать до двух часов, после чего он отключится.

Когда вы пытаетесь подключиться из «менеджера предприятия», вы не сможете подключиться к дочернему экземпляру (действительно сложно подключиться явно к одному, поэтому вы не можете сделать это случайно), вы подключаетесь к родителю instance и возиться с базой данных.

Подводя итог, либо придерживайтесь модели RANU и используйте AttachDBFileName, либо используйте обычный режим операций с базой данных и управляйте базой данных из SSMS. Не смешивайте два.

person Remus Rusanu    schedule 08.12.2009

Вы уверены, что база данных с таким же именем еще не прикреплена к экземпляру SQL Express, на который вы указываете свой сайт?

Кроме того, имеет ли идентификатор, под которым работает сайт, когда он пытается подключить базу данных, права администратора в SQL Express? Если нет, то эта команда не сработает (не знаю, какую ошибку она выдает в такой ситуации, но "Отказано в доступе" звучит разумно).

Страница "Экземпляры пользователей SQL Server 2005 Express Edition", кажется, дает хороший обзор проблем и обходных путей.


Изменить, чтобы добавить

Может быть дело в этом:

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

Взято из документации для SqlConnectionStringBuilder.AttachDBFileName Property< /а>

Вам нужно будет удалить файл журнала, прежде чем вы сможете повторно подключить базу данных с помощью этого метода.

person Zhaph - Ben Duguid    schedule 08.12.2009
comment
Я уверен - ничего не прикреплено - я запускаю страницу aspx, которая ее прикрепляет, и все работает нормально... Я захожу в диспетчер предприятия и отсоединяюсь, затем в следующий раз, когда я запускаю страницу aspx, я получаю сообщение об ошибке выше. - person Wil; 08.12.2009