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 に答える