SQL Server Compact 3.5 版数据库访问被拒绝

Posted

技术标签:

【中文标题】SQL Server Compact 3.5 版数据库访问被拒绝【英文标题】:SQL Server Compact edition 3.5 database acess is denied 【发布时间】:2016-06-28 13:28:11 【问题描述】:

我用 C# 开发了一个带有 Microsoft SQL Server Compact Edition 3.5 的桌面应用程序。

当我从解决方案文件夹(bin\releasedebug)运行 .exe 文件时,它工作正常,但是当我尝试通过创建其设置来部署它时,它显示未处理的异常:

您无权访问 CustomersDB.sdf 文件。

注意没有路径错误是正确的。

string lokasifile = Environment.CurrentDirectory + "\\CustomersDB.sdf";
string stringkoneksi = "Data Source = \"" + lokasifile + "\"";
SqlCeConnection koneksi = new SqlCeConnection(stringkoneksi);
koneksi.Open();

【问题讨论】:

当我看到权限错误时,我立即想到以管理员身份运行它或将您的文件移动到其他地方。不确定它是否会起作用,但毕竟尝试没有什么不好的......:D 在应用程序池中运行网站的账号没有sdf文件的权限。授予它对该文件的权限。或者,该文件在您认为的位置不存在。无论如何,您应该使用 App_Data 和 |DataDirectory|。如果你这样做了,它会一直按预期工作,不用担心。 SQL CE 不允许同时连接多个并发连接。 【参考方案1】:
SecurityException 

这没什么,只是调用者没有适当的权限。 Environment.CurrentDirectory Property

try

     //Call Path here you will get to what the exactly error is

catch (Exception ex)

     if (ex is DirectoryNotFoundException|| ex is IOException|| ex is SecurityException)
     
          //Your handling here
     
     else
     
          throw;
     

【讨论】:

目录存在,文件存在,路径正确,问题只是访问被拒绝。 在属性中授予该文件所需的权限 那是“如何设置权限”的问题 右键单击要为其设置权限的文件或文件夹,单击“属性”,然后单击“安全”选项卡。单击编辑打开 的权限对话框。

以上是关于SQL Server Compact 3.5 版数据库访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

sql server compact 3.5 和智能设备项目的问题

SQL Server Compact 3.5 版数据库访问被拒绝

如果存在可在 SQL Server 2005 和 SQL Server Compact 3.5 中使用的索引,则删除该索引的脚本

私下部署 sql server compact 3.5 sp2 时出错

如何连接到 SQL Server Compact 3.5 文件作为 Visual Studio 2012 中的数据源?

C# 代码连接到局域网上的 Microsoft SQL Server Compact 3.5? [关闭]