无法更新数据库.MDF是只读的

时间:2014-07-30 00:16:06

标签: c# sql-server database installation

我在应用程序中有一个本地数据库。当我在另一台机器上安装它时出现错误

  

无法更新数据库.. .ddf是只读的。

我能够通过编辑.mdf和日志文件本身的权限来绕过它。我做了一些研究,发现我可能想将数据库安装到共享文件夹。但是,我不知道该怎么做,我遇到的答案并没有多大意义。

 //My connection string
 SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|AssetDatabase.mdf;Integrated Security=True");

非常感谢任何指导。我正在学习。

4 个答案:

答案 0 :(得分:0)

MDF文件将是readonly,因为readonly文件属性标志已设置,在这种情况下您必须取消设置,或者另一个程序将MDF文件锁定为readonly。您是否正在运行使用该文件的SQL Server版本?

我从未见过直接连接到MDF文件,通常是通过服务器完成的,服务器将管理MDF文件的所有IO。

E.g。 SQL Server的典型连接字符串:

Database=<dbname>;Server=<servername>;MultipleActiveResultSets=True;Connection Timeout=10;User Id=<username>;Password=<password>;

其他链接:

1)Failed to update .mdf database because the database is read-only (Windows application)

2)Failed to update database because it is read-only

3)Failed to update database "*.mdf" because read only EntityFramework

4)http://www.codeproject.com/Questions/183758/Failed-to-update-mdf-database-because-the-database

答案 1 :(得分:0)

  1. 只需转到程序文件,找到已安装程序的文件夹。
  2. 只需右键单击文件夹中的"./"文件,然后点击“属性”。
  3. 在PROPERTIES TAB中 - &gt;安全 - &gt;你会看到群组或用户名。
  4. 选择要向其授予文件访问权限的用户。
  5. 如果该用户的PERMISSION未设置为FULL CONTROL。
  6. 改变许可 - &gt;点击编辑。
  7. 现在将打开“组或用户名”框。
  8. 选择用户 - &gt;在权限框中选择FULL CONTROL。
  9. 现在也按照日志文件的步骤操作。如果需要。
  10. OR

    只需将您的应用程序安装在ProgramFile(x86)以外的其他文件夹中

答案 2 :(得分:0)

我解决了同样的问题,如下:

在创建“安装程序”时,我手动将我的数据库文件 database.mdf and database_log.ldf 添加到 Application Folder 文件中。但添加这些文件后,请确保 ReadOnly 部分中的 Properties 选项为 False

还有“connectionString”我使用:

connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;Connect Timeout=30" 

答案 3 :(得分:-1)

如果您的数据库文件在C卷上, 尝试将.mfd文件移动到D卷