Не удалось обновить базу данных .mdf, поскольку база данных доступна только для чтения (приложение Windows) - PullRequest
2 голосов
/ 19 апреля 2011

Я создал приложение базы данных Windows, используя C #. Мое приложение успешно работает в Windows XP, но не работает должным образом в системах Vista или Windows 7. Мое приложение показывает сообщение, похожее на

Не удалось обновить базу данных .mdf, поскольку база данных доступна только для чтения

Может кто-нибудь дать мне решение этой проблемы?

Ответы [ 5 ]

8 голосов
/ 19 апреля 2011

Главное, что изменилось между Windows XP и Windows Vista / 7, это введение UAC, которое означает, что пользователи, даже если они созданы как администраторы, обычно не имеют доступа для чтения / записи к «важным» местам, таким как * Каталог 1001 * (обычно C:\Program Files или C:\Program Files (x86)). Вот почему ваше приложение работает в Windows XP, а не в Windows Vista.

Вам необходимо хранить ДАННЫЕ в каталоге %programdata% (обычно C:\ProgramData), если данные передаются между пользователями на компьютере, или %appdata% (обычно C:\Users\USERNAME_GOES_HERE\AppData\Roaming ) если это характерно для данного пользователя. Теперь вы больше не будете сталкиваться с проблемой невозможности записи в файл.

Причина этого в том, что , сохраняя данные в каталоге установки ваших программ, вы совершали неправильные действия . Windows не помешала вам сделать это ранее, но было довольно широко задокументировано, что %programfiles% не было подходящим местом для хранения данных.

1 голос
/ 19 апреля 2011

Если файл MDB находится в пути к вашему приложению, то для разрешений по умолчанию для прав записи в файлы потребуется повышение прав - я бы рекомендовал переместить данные в общую папку ApplicationData, где у конечных пользователей будетразрешения на запись по умолчанию

0 голосов
/ 15 февраля 2019

Вы должны добавить разрешения Изменить для пользователя IIS_IUSRS в файл *. Mdf .

0 голосов
/ 02 июня 2015

Я столкнулся с этим, связанным с localdb, файл называется:

myfolder/mysolution/myproject/App_Data/something.mdf

Я исправил это, щелкнув правой кнопкой мыши на папке верхнего уровня (myfolder) и затем выбрав Properties, затем выбрав Edit, затем выбрав Users, добавив к пользователям либо Modify разрешение или оба Modify и полный контроль (это среда разработки), а затем нажмите кнопку Применить.

Другими словами, по моему опыту, не имеет значения, в какую папку вы помещаете localdb, вам просто нужно дать пользователям разрешение на запись.

0 голосов
/ 18 июля 2012

перейдите в папку, где установлена ​​программа, и щелкните правой кнопкой мыши файл базы данных и выберите Свойства -> Безопасность -> Группа или Имя пользователя (нажмите пользователей по одному и см. Ниже разрешения)

Если для пользователя, если он не настроен на полный контроль, нажмите РЕДАКТИРОВАТЬ -> Выбрать пользователя и дать полный контроль.

...