Не удалось обновить базу данных, поскольку база данных доступна только для чтения
Это сообщение появляется каждый раз, когда я пытаюсь сохранить данные в БД.
Failed to update database because the database is read only
Примечание. Эта ошибка возникает только в том случае, если приложение установлено на диске C.
Внешний интерфейс: VB.NET
Back End: SQL Server
Есть ли способ преодолеть эту проблему? Или любой способ ограничить пользователя от установки приложения на диске C?
2 ответа
Я бы проверил привилегии файловой системы. Я полагаю, вы говорите о файловой базе данных сервера SQL. Вы получаете сообщение, потому что учетная запись, пытающаяся получить доступ к вашей файловой базе данных, не имеет разрешений файловой системы для этого.
Чтобы подтвердить мое предложение, вы разрешаете всем иметь доступ к определенному каталогу с полными разрешениями.
Затем вы должны проверить, какая учетная запись пытается сделать фактический доступ. Вероятно, это системная учетная запись (пользователь ASPNET или NETWORK SERVICE). Вы должны дать соответствующие разрешения для конкретной учетной записи.
Затем перезапустите IIS.
Если вы хотите сделать это для распределенного автономного приложения. Затем эти разрешения должны будут измениться на каждой машине, где будет установлена программа. Чтобы избежать суеты пользователей, программа установки должна это сделать. Я не эксперт по программам установки, но даже самые простые из них дадут вам возможность сделать это после запроса разрешения системного администратора. Я полагаю, вы могли бы создать пользовательское действие во время программы установки, которое изменило бы права доступа конкретной папки, возможно, с помощью xcacls.exe.
Надеюсь, я помог!
Я перенес базу данных из одной среды в другую и столкнулся с этой проблемой. Следующие шаги сработали для меня:
- Проверьте, можете ли вы выполнить оператор обновления для любой таблицы в базе данных (убедитесь, что вы подключились к базе данных под тем же пользователем, что и приложение).
- Если да, то этой ошибки быть не должно.
- Если нет, переключите опцию
Database Read-Only
с SQL-сервера [щелкните правой кнопкой мыши по базе данных -> Свойства -> Параметры -> База данных только для чтения]. (Для меня этот вариант былfalse
все же я получал ошибку. Поэтому я дважды переключил его, и это сработало.)