在 Windows Server 2016 上使用 SuperServer 时是否可以备份 Firebird 数据库?
Is it possible to backup Firebird DB when using SuperServer on Windows Server 2016?
当我执行Firebird 3.0.x备份命令时:
c:\Db>"C:\Program Files\Firebird\Firebird_3_0\gbak.exe" -b c:\Db\Db1.fdb c:\Db\Db1_backup.fbk -garbage_collect -transportable -verify -user SYSDBA -pas PASSWORD
发生错误 1:
gbak: ERROR:I/O error during "CreateFile (open)" operation for file "C:\DB\DB1.FDB"
gbak: ERROR: Error while trying to open file
gbak: ERROR: The process cannot access the file because it is being used by another process.
gbak:Exiting before completion due to errors
使用 TCP/INET/localhost/remote 协议的示例 2:
c:\Db>"c:\Program Files\Firebird\Firebird_3_0\gbak.exe" -backup inet://c:\Db\Db1.fdb d:\_Backups\Db1_20180702_230546.fbk -garbage_collect -transportable -verify -skip_data SOMETAB_TO_SKIP -user SYSDBA -password PASSWORD123
发生错误 2:
gbak: ERROR:Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
首先...老实说,我不确定这是什么时候开始的,也不知道为什么。我可能有 3 个月没有查看我的服务器,但今天我的备份磁盘坏了,所以我不得不查看。我今天第一次看到这个错误,我坚信我的备份有效。但是我之前有 Firebird 2.5。
问题是:这是否仅适用于 Windows 上的 Firebird 3 SuperServer?还有FB服务器使用Firebird 3 SuperServer数据库时没有办法备份?
在 Windows Server 2016 上的 Firebird 服务器 3.0.2 和 3.0.3 上测试并失败。
Firebird 运行 作为一项服务
firebird.config 中没有任何变化,除了:
WireCompression = true
RemoteServicePort = 1234
CpuAffinityMask = 8
ServerMode = Super or SuperClassic (when I testing it)
当我在 SuperClassic 上执行第一个命令时,它起作用了。
当我在 SuperServer 2 上执行第一个命令时。5.x 它起作用了。
好的,所以我终于弄清楚问题出在哪里了。解释如下:
我的密码错误!
但是!
当我使用 SuperClassic 时,我可以使用 WRONG 密码和 Firebird allows 访问数据库。 (作为本地用户)
当我使用 SuperServer 时,我可以使用 WRONG 密码和 Firebird 允许 访问数据库当我是 第一次连接! (作为具有和不具有远程协议的本地用户)
当我使用 SuperServer 并使用错误的密码时,当我是第二个(以及更多)连接时,Firebird 拒绝访问数据库! (本地和远程用户)
仅使用远程协议,您无法使用错误的密码访问数据库。
(我指的是远程协议 this。)
这就是行为差异的原因,也是我没有看到使用错误密码的原因。感谢所有试图帮助我的人。
当我执行Firebird 3.0.x备份命令时:
c:\Db>"C:\Program Files\Firebird\Firebird_3_0\gbak.exe" -b c:\Db\Db1.fdb c:\Db\Db1_backup.fbk -garbage_collect -transportable -verify -user SYSDBA -pas PASSWORD
发生错误 1:
gbak: ERROR:I/O error during "CreateFile (open)" operation for file "C:\DB\DB1.FDB"
gbak: ERROR: Error while trying to open file
gbak: ERROR: The process cannot access the file because it is being used by another process.
gbak:Exiting before completion due to errors
使用 TCP/INET/localhost/remote 协议的示例 2:
c:\Db>"c:\Program Files\Firebird\Firebird_3_0\gbak.exe" -backup inet://c:\Db\Db1.fdb d:\_Backups\Db1_20180702_230546.fbk -garbage_collect -transportable -verify -skip_data SOMETAB_TO_SKIP -user SYSDBA -password PASSWORD123
发生错误 2:
gbak: ERROR:Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
首先...老实说,我不确定这是什么时候开始的,也不知道为什么。我可能有 3 个月没有查看我的服务器,但今天我的备份磁盘坏了,所以我不得不查看。我今天第一次看到这个错误,我坚信我的备份有效。但是我之前有 Firebird 2.5。
问题是:这是否仅适用于 Windows 上的 Firebird 3 SuperServer?还有FB服务器使用Firebird 3 SuperServer数据库时没有办法备份?
在 Windows Server 2016 上的 Firebird 服务器 3.0.2 和 3.0.3 上测试并失败。
Firebird 运行 作为一项服务
firebird.config 中没有任何变化,除了:
WireCompression = true
RemoteServicePort = 1234
CpuAffinityMask = 8
ServerMode = Super or SuperClassic (when I testing it)
当我在 SuperClassic 上执行第一个命令时,它起作用了。
当我在 SuperServer 2 上执行第一个命令时。5.x 它起作用了。
好的,所以我终于弄清楚问题出在哪里了。解释如下:
我的密码错误!
但是!
当我使用 SuperClassic 时,我可以使用 WRONG 密码和 Firebird allows 访问数据库。 (作为本地用户)
当我使用 SuperServer 时,我可以使用 WRONG 密码和 Firebird 允许 访问数据库当我是 第一次连接! (作为具有和不具有远程协议的本地用户)
当我使用 SuperServer 并使用错误的密码时,当我是第二个(以及更多)连接时,Firebird 拒绝访问数据库! (本地和远程用户)
仅使用远程协议,您无法使用错误的密码访问数据库。
(我指的是远程协议 this。)
这就是行为差异的原因,也是我没有看到使用错误密码的原因。感谢所有试图帮助我的人。