SQL Compact Edition - 不允许访问数据库文件

Posted

技术标签:

【中文标题】SQL Compact Edition - 不允许访问数据库文件【英文标题】:SQL Compact Edition - Access to the database file is not allowed 【发布时间】:2013-04-04 15:57:07 【问题描述】:

我正在使用 MVC 3.0 和实体框架从头开始创建博客站点。我正在为数据存储使用 SQL CE .sdf 文件。这存储在项目 App_Data 文件夹中。在本地,一切正常。不是问题。读取和处理 .sdf 文件时不会出错。但是,在使用 Web Deploy 发布到共享主机提供商后,尝试查看远程站点时出现以下错误:-

不允许访问数据库文件

我在网络配置中使用的连接字符串是:-

<connectionStrings>
<add name="DataAccess.BlogDbContext" connectionString="Data Source=DansMVCBlog.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

我已经研究了这个问题并且遇到了问题。建议包括将 App_Data/DansMVCBlog.sdf 添加到连接字符串文件路径,而不仅仅是文件名。这不起作用,因为您被告知文件路径无效。在共享主机控制面板上,我已将 App_Data 文件夹的读/写权限设置为 true。另外,在我的 Global.asax 文件中,我禁用了 `Database.SetInitializer(new DataInitializer());

我在这里犯了一个小学生的错误吗?有没有人有什么建议?谢谢

【问题讨论】:

【参考方案1】:

看起来 OP 可能已经解决了他们的问题,但就我而言,事实证明数据库文件已被我的源代码控制系统标记为只读。清除只读标志解决了这个问题。

【讨论】:

【参考方案2】:

您可能需要更新连接字符串

<connectionStrings>
  <add name="DataAccess.BlogDbContext" 
       connectionString="Data Source=|DataDirectory|DansMVCBlog.sdf"
       providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

【讨论】:

谢谢,但我试过了。我在您的连接字符串示例中看到的唯一不同之处是包含 |DataDirectory| Iv解释的不起作用。另外,我已经通过共享主机控制面板手动更新了 web config conn 字符串,但不快乐。 通常主机不提供对 AppData 目录的读写访问权限,您或支持人员必须手动提供对文件夹的 WebSite appPool Identity R/W 访问权限。 您可能想尝试在 webdeploy &lt;IncludeSetAclProviderOnDestination&gt;False&lt;/IncludeSetAclProviderOnDestination&gt; 上关闭 ACL。【参考方案3】:

谁知道解决这个问题的方法是什么。我只能说我在使用 web deploy 发布时遇到问题,所以我改用 ftp。之后一切正常。

【讨论】:

以上是关于SQL Compact Edition - 不允许访问数据库文件的主要内容,如果未能解决你的问题,请参考以下文章

sql server compact edition 数据编辑器

C# - 将 null 插入 SQL Compact Edition 表

使用 SQL Server Compact Edition 的 Linq-to-SQL

SQL Server Compact Edition 查询日志

C# WinForms - SQL Server Compact Edition:不支持关键字:初始目录

SQL Server 可以复制到 SQL Server Compact Edition 吗?