0

我有数据库备份,我想恢复到数据库,但是当我运行示例代码时:

FbRestore restoreSvc = new FbRestore();
restoreSvc.ConnectionString = "...";
restoreSvc.BackupFiles.Add(new FbBackupFile(dumpFileName, 2048));
restoreSvc.PageSize = 4096;
restoreSvc.Options = FbRestoreFlags.Create | FbRestoreFlags.Replace;
restoreSvc.Execute();

它结束抛出异常

could not drop database ...db path... (database might be in use)
   at FirebirdSql.Data.Services.FbRestore.Execute()

默认情况下,还有其他应用程序在使用该数据库,但如果我停止所有这些应用程序,则不会发生任何变化。

在这种环境下如何恢复数据库?

4

2 回答 2

1

您需要确保可以删除数据库。这意味着目前没有人使用它。

如果它只是您的应用程序,您应该关闭所有连接(真正关闭,注意连接池),然后进行恢复。或者,如果还有其他连接,您可以通过执行强制关闭这些连接DELETE FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION

于 2013-10-02T12:59:57.507 回答
1

在使用 FbRestore 之前需要调用 FbConnection.ClearAllPools()

于 2015-04-05T17:31:05.913 回答