Windows 10更新后FireDAC连接Firebird数据库异常问题
解决Win10 1803后网络路径下Delphi+FireDAC连接Firebird报错335544721的问题
这个错误码(335544721)对应Firebird的isc_bad_arg错误,本质是参数非法,结合你描述的“本地正常、网络路径失效”的现象,大概率是Win10 1803更新带来的SMB安全策略变更,或者FireDAC在网络环境下的路径解析问题。下面是我亲测有效的解决方案:
1. 修正FireDAC连接字符串的路径格式
- 优先使用UNC路径替代映射盘符:把连接参数里的
Database=Q:\mydb.fdb改成Database=\\comp1\share\mydb.fdb。Win10 1803后,映射盘符在网络启动的进程中可能无法正确解析,UNC路径是更可靠的选择。 - 检查
Protocol参数:如果Firebird服务器是远程的,确保Protocol=TCPIP;如果是本地共享的数据库文件,尝试设置Protocol=Local(注意本地协议需要Firebird服务端在本地运行,且共享目录有足够权限)。
2. 调整Windows SMB安全设置
Win10 1803默认禁用了SMB 1.0和不安全的来宾登录,这会影响旧的网络共享访问:
- 启用不安全的来宾登录:
- 按Win+R输入
gpedit.msc打开组策略编辑器 - 导航到
计算机配置 > 管理模板 > 网络 > Lanman工作站 - 找到
启用不安全的来宾登录,设置为已启用,重启电脑生效
- 按Win+R输入
- 或者启用SMB 1.0支持(仅适合旧环境):
- 打开
控制面板 > 程序 > 启用或关闭Windows功能 - 勾选
SMB 1.0/CIFS 文件共享支持,重启电脑
- 打开
3. 确保Firebird客户端库可访问
当程序从网络路径运行时,UAC或AppLocker可能限制它加载本地的fbclient.dll:
- 把
fbclient.dll复制到网络共享的程序目录下,让程序直接加载同目录的客户端库,避免权限问题 - 或者给本地Firebird安装目录下的
fbclient.dll添加Everyone的读取权限,确保网络进程能访问到它
4. 开启FireDAC日志排查参数问题
如果以上方法都无效,开启FireDAC的日志功能,查看具体哪个参数出了问题:
在程序启动时添加以下代码:
FDManager.Logging := True; FDManager.LogFileName := 'C:\temp\firedac_conn_log.txt'; FDManager.LogOptions := [loShowSql, loShowError, loShowBind, loShowExecute];
运行网络路径的程序后,打开日志文件,查看连接过程中的参数细节,比如是否有路径被转义、权限不足的提示。
内容的提问来源于stack exchange,提问作者Desperate Coder
相关产品推荐
相关产品推荐

