Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access access数据库的只读连接字符串_Ms Access_Connection String_Oledb - Fatal编程技术网

Ms access access数据库的只读连接字符串

Ms access access数据库的只读连接字符串,ms-access,connection-string,oledb,Ms Access,Connection String,Oledb,我正在尝试使用System.Data.OleDb.OleDbConnection连接到Access数据库文件。我需要以只读模式连接,因为另一个应用程序同时使用它。我可以以读/写方式连接到数据库,没有问题,但似乎在任何地方都找不到正确的只读字符串 我试过: Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=False;模式=读取 Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=False;扩展属性=“

我正在尝试使用System.Data.OleDb.OleDbConnection连接到Access数据库文件。我需要以只读模式连接,因为另一个应用程序同时使用它。我可以以读/写方式连接到数据库,没有问题,但似乎在任何地方都找不到正确的只读字符串

我试过:

Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=False;模式=读取

Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=False;扩展属性=“ReadOnly=true;”

谢谢

编辑:

(我应该在原来的问题中提供更多信息。)

当access数据库位于本地计算机上时,我可以成功连接到它,但当我尝试使用连接字符串连接到远程计算机上的access数据库时

Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False;Mode=Read
我将得到以下错误:

System.Data.OleDb.OleDbException (0x80004005): The Microsoft Office Access database engine cannot open or write to the file '{0}'. It is already opened exclusively by another user, or you need permission to view and write its data.

我的应用程序正在本地系统帐户下的windows服务中运行

我认为这必须由DB管理员控制的用户权限来处理,或者由您控制的记录集的不同游标类型来处理。我不认为连接字符串指定访问模式,它只是让您到达那里。;)

真正的问题是Excel在关闭文件之前保持连接打开

在Excel 2007+中,MaintainConnection设置默认设置为true。您需要进入vb编辑器并使用代码将其转换为false。我还没有看到一种通过可视化界面实现这一点的方法。 即使将连接字符串设置为只读,它也会锁定access数据库(根据我的经验)

对于数据透视表连接:

Sheets("sheet1").PivotTables("pivottable1").PivotCache.MaintainConnection = False
对于查询表:

Range("A2").Select
Selection.ListObject.QueryTable.MaintainConnection = False
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

通过将其设置为false,表将连接、运行命令,然后断开连接,释放锁。

尝试将模式设置为“adModeRead”(不带引号)。(由于我无法验证它是否有效,所以没有给出答案,只是关闭了MSDN数据。)我尝试将模式设置为“adModeRead”,但它抛出了一个“System.data.OleDb.OleDbException(0x80040E73):初始化字符串的格式不符合OLE DB规范”。感谢您的建议。您是正确的。这是一个权限问题。如果我在最初的问题上多加一点信息,我想这会更加明显。在我使用具有提升权限(读取远程访问数据库的权限)的用户运行windows服务后,它开始使用连接字符串:
Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=False;Mode=Read
它只是没有点击我的服务没有以我的用户拥有的相同权限运行。