C# Visual Studio 2010 C sql数据库只读错误

C# Visual Studio 2010 C sql数据库只读错误,c#,sql,database,visual-studio-2010,C#,Sql,Database,Visual Studio 2010,我正在处理一个带有本地sql数据库的visual C项目。当我安装.msi文件并运行该程序,然后尝试更新数据库中的某些内容时,我得到一个错误:无法更新数据库C:\setup\DBNC.mdf,因为该数据库是只读的,我真的很难弄清楚这一点,有什么建议吗???您是否检查了.mdf文件的属性以确保它不是只读的?听起来这可能是问题所在。我要拿出我的魔法8球玩一分钟。让我们看看 OP是否从本地服务器上运行的.sql脚本创建数据库? 回答朦胧,再试一次 OP是否在安装包中包含.mdb? 你可以信赖它 好的。

我正在处理一个带有本地sql数据库的visual C项目。当我安装.msi文件并运行该程序,然后尝试更新数据库中的某些内容时,我得到一个错误:无法更新数据库C:\setup\DBNC.mdf,因为该数据库是只读的,我真的很难弄清楚这一点,有什么建议吗???

您是否检查了.mdf文件的属性以确保它不是只读的?听起来这可能是问题所在。

我要拿出我的魔法8球玩一分钟。让我们看看

OP是否从本地服务器上运行的.sql脚本创建数据库? 回答朦胧,再试一次

OP是否在安装包中包含.mdb? 你可以信赖它

好的。因此,用户正在通过安装包将数据库复制到该特定目录

在运行安装包时OP是否提升为admin? 前景看好

好的,OP正在创建目录,并在安装过程中复制文件,所有这些都在管理员帐户的保护下

OP是否正在将此文件附加到Sql Server的本地实例? 有迹象表明是的

数据库是否在Sql Server中配置为只读? 回答朦胧,再试一次

OP run ALTER DATABASE DBNC是否设置为只读? 别指望了

好的,那么OP是否已更新C:\setup\和mdb上的NTFS安全性,以授予运行Sql Server网络服务的帐户或其他帐户的读/写权限? 我的消息来源说不

宾果

您将该目录创建为admin并将文件复制到那里。运行Sql Server的帐户没有更改文件的权限,因此您将收到该错误


您不应该将数据库部署为文件。您应该创建一个.sql文件,用于创建数据库以及其中的所有表/关系/etc。这样,您就可以始终确保Sql Server实例可以访问数据库。此外,sql脚本文件的版本设置比mdb更容易。

我希望这对其他人有所帮助。我遇到了一个类似的问题,但通过将数据库文件部署到App Data目录并修改连接字符串以指向该目录解决了这个问题。这神奇地解决了这个问题。

谢谢你的帮助,这很有帮助!我仍然对此一无所知。你能告诉我如何从我的数据库生成一个.sql文件吗?我在visual Studio中找不到任何地方可以导出它。@user771886:在服务器资源管理器中,右键单击数据库并选择“发布到提供程序”。您可以从那里发布到sql脚本。这很有效,也是一个愚蠢的问题,但如何让我的应用程序使用新的.sql文件而不是旧的.mdf文件,因为当程序运行时,它会查找DBNC.mdf文件runs@user771886例如我不知道。取决于太多的事情。简短回答:改变你的代码以停止寻找它并不能完全消除它。