База данных '... \ DATABASE.MDF' не может быть обновлена, поскольку она доступна только для чтения или имеет файлы только для чтения - PullRequest
1 голос
/ 03 сентября 2011

Я хочу установить приложение ASP.NET на WIN XP SP3,Таким образом, я установил IIS 5.1, .Net Framework 3.5 SP1 и MSSQL 2008 R2 на мой WinXP SP3.Затем я скопировал папку с моим приложением в C:\Inetpub\wwwroot\Затем я создал приложение из своей папки в IIS Manager и установил разрешения следующим образом:

enter image description here

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

PS:Я использую Win XP на VMware Workstation 7.1Приложение работает в Win Vista x86 и Win7 x64 без проблем.Приложение было написано с .Net Framework 3.5 SP1

Ответы [ 5 ]

2 голосов
/ 04 сентября 2011

Вы должны редактировать разрешения, позволяя «Сетевой сервис» редактировать файл MDF.

0 голосов
/ 21 января 2019

Вы добавляете Users группу на вкладку Sercurity с помощью Full Control

enter image description here

0 голосов
/ 14 апреля 2014

Это было странно.Оказалось, что часть моего приложения ссылалась на один aspnetdb файл на Sql Server, а другой пытался сослаться на один локально созданный в приложении.

Моя строка подключения была для этого:

<add name="ApplicationServices" 
     connectionString="Data Source=localhost; Initial Catalog=aspnetdb; Integrated Security=True" providerName="System.Data.SqlClient" />

Но ошибка была в следующем

Произошел сбой при использовании «ProfileProvider» по умолчанию.Пожалуйста, убедитесь, что он настроен правильно.База данных 'C: \ WEBSITES \ XXXX.SILVERLIGHT \ ADMIN \ APP_DATA \ ASPNETDB.MDF' не может быть обновлена, поскольку она доступна только для чтения, имеет файлы только для чтения или у пользователя нет прав на изменение некоторых файлов.Сделайте базу данных или файлы доступными для записи и перезапустите восстановление.

Мне потребовалось некоторое время, чтобы заметить, что это было в моем корне приложения, а не в версии Sql Server, которую использует основная часть моего приложения.

В моем случае я просто переименовал локально созданные файлы aspnetdb, и когда я перезапустил pplication, он просто воссоздал их с их размерами по умолчанию (10240kb и 504kb).

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

Я думаю, что, возможно, я не использовал поставщика профилей явно, поэтому он использовал настройки по умолчанию.Остальная часть приложения использовала правильную строку подключения.

0 голосов
/ 03 сентября 2011

Я нашел решение. Я отключил брандмауэр Windows и открыл папку «Разрешить пользователям изменять мои файлы», и теперь я могу легко писать и читать из базы данных: -)

0 голосов
/ 03 сентября 2011

Проверяли ли вы свойство файла базы данных (атрибут только для чтения) и разрешения безопасности ACL (разрешения, которые определены на уровне файла, а не в консоли управления IIS)?

...