无法更新.mdf数据库,因为数据库是只读的(Windows应用程序)

问题描述 投票:2回答:5

我在C#中创建了一个数据库窗口应用程序。我的应用程序在Windows XP上成功运行,但在Vista或Windows 7系统上无法正常执行。我的应用程序显示类似的消息

无法更新.mdf数据库,因为数据库是只读的

任何人都可以给我一个解决方案吗?

c# .net sql-server winforms windows-vista
5个回答
1
投票

如果MDB文件位于应用程序路径中,则默认权限需要提升权限以便能够写入文件 - 我建议将数据移动到ApplicationData共享文件夹,最终用户将拥有写入权限默认


8
投票

在Windows XP和Windows Vista / 7之间发生重大变化的是UAC的引入,这意味着用户即使作为管理员创建,也不会经常对“重要”位置(例如%programfiles%)进行读/写访问(通常是C:\Program FilesC:\Program Files (x86))目录。这就是您的应用程序在Windows XP上运行而不在Windows Vista上运行的原因。

如果数据在机器上的用户或%programdata%(通常是C:\ProgramData)之间共享(如果特定于给定用户),则需要将数据存储在%appdata%目录(通常为C:\Users\USERNAME_GOES_HERE\AppData\Roaming)中。您现在不再遇到无法写入文件的问题。

原因是通过在程序安装目录中存储数据,你做错了。 Windows并没有阻止你以前这样做,但是有相当广泛记载的%programfiles%不是存储数据的合适位置。


0
投票

我遇到了与localdb相关的文件,命名为:

myfolder/mysolution/myproject/App_Data/something.mdf

我修复它的方法是右键单击顶级文件夹(myfolder),然后选择Properties,然后选择Edit,然后选择Users,向用户添加Modify权限或同时添加Modify和完全控制(这是一个开发环境) )然后单击“应用”。

换句话说,根据我的经验,将localdb放入哪个文件夹并不重要,您只需要授予用户写入权限。


0
投票

您应该将IIS_IUSRS用户的修改权限添加到* .mdf文件。


-1
投票

转到安装程序的文件夹并右键单击数据库文件,然后单击属性 - >安全性 - >组或用户名(逐个单击用户,并查看权限)

如果用户未设置为完全控制,则单击编辑 - >选择用户并完全控制..

© www.soinside.com 2019 - 2024. All rights reserved.