我正在使用本地sql数据库处理可视化C#项目。当我安装.msi文件并运行程序,然后尝试更新数据库中的某些内容时,我收到错误“无法更新数据库C:\ setup \ DBNC.mdf因为数据库是只读的”我真的很难时间搞清楚这一点,任何建议??
答案 0 :(得分:5)
我要把我的魔法8球击出一分钟。我们看看......
OP是否在本地服务器上运行.sql脚本创建数据库?
回复朦胧,再试一次
OP是否包含安装包中的.mdb?
您可以依赖它
好。因此,用户通过安装包将数据库复制到该特定目录...
运行安装包时OP是否升级为管理员?
Outlook好
好的,所以OP正在创建目录并在安装过程中将文件复制到那里,所有这些都在管理员帐户的支持下。
OP是否将此文件附加到Sql Server的本地实例?
标志指向是
数据库是否在Sql Server中配置为只读? 回复朦胧,再试一次
OP是否运行ALTER DATABASE DBNC SET READ_ONLY?
不要指望它
好的,然后OP更新了C:\setup\
和mdb上的NTFS安全性,以便对运行Sql Server(NETWORK SERVICE或其他帐户)的帐户进行读/写访问?
我的消息来源说没有
<强>宾果!强>
您将该目录创建为admin并将文件复制到该目录。运行Sql Server的帐户无权更改文件,因此您收到该错误。
您不应将数据库部署为文件。您应该创建一个.sql文件,该文件创建数据库以及其中的所有表/关系/等。这样,您始终可以确保Sql Server实例可以访问数据库。此外,它比mdb更容易版本sql脚本文件。
答案 1 :(得分:1)
我希望这可以帮助那些人。我遇到了类似的问题但是通过将我的数据库文件部署到App Data目录并修改我的连接字符串来指向那里来解决它。这神奇地解决了这个问题。
答案 2 :(得分:0)
您是否检查过.mdf文件的属性以确保它不是只读的?这听起来可能是个问题。