Access数据库远程访问问题排查
1、第一步要保证本地能够访问access 数据库。win10 系统一般会安装32位的驱动库,
1)打开Windows 管理工具就可以看到。
2)如果开发的时候用64位的,则需要单独安装“AccessDatabaseEngine_X64.exe”。
2、远程连接access
1)Access 是本地数据库,如果需要远程访问,则需要在局域网内,创建共享文件夹,通过共享方式进行访问。
共享文件夹的时候也有一些问题,WIN10系统访问WIN7 会访问不了,但是WIN7 可以访问WIN10的共享文件夹;
查看微软官网的答案,最后ps 那一段非常重要。需要在系统服务中启用SMBv1。
2)ACCESS连接目前用的是QODBC 进行开发,示例代码如下:
db_ = QSqlDatabase::addDatabase("QODBC");
QString dbname = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ="+access_url_;
db_.setDatabaseName(dbname);
设置好accesss 地址以后一直报错误:
[21-05-31,17:36:28.903][AccessUpload][W]|failed to connect to access QSqlError("-1056", "QODBC3: Unable to connect", "[Microsoft][ODBC Microsoft Access Driver]
常见错误 无法打开注册表项“Temporary (volatile) Ace DSN for process 0x1a10 Thread 0x64c DBC 0x37757f38 Jet”。
[Microsoft][ODBC Microsoft Access Driver] 找不到可安装的 ISAM
这个错误目前是通过两个方法解决的:
a、 命令行运行组策略 gpedit.msc,用户配置->管理模板->Windows组件->附件管理器,中等风险文件类型的包含列表中更改如下图
运行 gpupdate 使组策略生效。
b、更改数据库读取权限,代码如下:
db_.setConnectOptions("SQL_ATTR_ACCESS_MODE=SQL_MODE_READ_ONLY");
设置完上述以后,基本能够解决远程访问access 的问题。
ps:access 远程地址一般如下: \192.168.101.2\test\test.mdb