Firebird nbackup:存在活跃连接时出现CreateFile(open)问题
Firebird备份时SQLCODE:-902错误的原因与解决方案
文件“...”执行"CreateFile (open)"操作时发生I/O错误
进程无法访问文件'file path',因为该文件正在被另一个进程使用
SQLCODE:-902
错误原因
Firebird为了保证事务的ACID一致性,当数据库存在活跃连接时,会对数据库文件施加独占写锁定。如果用操作系统级的文件复制或者非Firebird原生工具备份,就会触发这个“文件被占用”的错误——因为备份进程无法获取文件的读写权限。
解决方法(支持在线备份,不中断用户工作)
- 使用Firebird原生备份工具
gbak:这是官方专门设计的在线备份工具,能和Firebird服务器协同工作,在用户正常连接数据库的同时,创建一份一致性的数据库快照备份。基础命令如下:
其中gbak -b -user SYSDBA -password 你的管理员密码 源数据库路径 备份文件路径-b参数指定执行备份操作,-user和-password用于验证管理员权限。 - 匹配工具与Firebird版本:不同版本的Firebird对应的
gbak存在兼容性差异,务必使用和你的数据库版本一致的备份工具,避免出现未知问题。 - 启用增量备份(Firebird 2.5+):如果全量备份耗时过长,可以配置增量备份策略,仅备份自上次全量备份后变更的数据,进一步降低对业务的影响。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

