Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: WilОтветов: 2

Поскольку ответы на самом деле не охватывают проблему, я разместил это на 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 показал, что она все еще подключена.

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

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

sql-serversql-server-2008

Ответы

Ответ 1 · рейтинг 1 · Remus Rusanu

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

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

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

Ответ 2 · Zhaph - Ben Duguid

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

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

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


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

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы