SQLServerからデータベースをバックアップおよび復元できるWindowsフォームアプリを作成しようとしています。ユーザーは、.bakファイルを保存する場所を選択できます。
私が抱えている問題は、ファイルがまだ存在しない場合、新しいファイルが作成されないことです。したがって、SQL Server内からバックアップを実行し、それをC:\ backup.bakに保存して、それが機能する「パス」としてプログラムに渡す場合、ファイルの場所または名前を変更すると、存在しない場合は、バックアップデバイスを開くことができないというエラーがスローされます。存在しない場合に新しい.bakファイルを作成することは可能ですか?どのようにすればよいですか?
私のコードは現在次のとおりです。
var dataSource = txtDS.Text;
var db = txtDbName.Text;
var path = txtBackup.Text;
var name = txtName.Text;
var desc = txtDesc.Text;
if(File.Exists( path) == true )
{
MessageBox.Show("Test");
}
else
{
Directory.CreateDirectory(@path);
}
Server myServer = new Server(dataSource);
myServer.ConnectionContext.LoginSecure = true;
myServer.ConnectionContext.Connect();
var bkpDbLog = new Backup();
bkpDbLog.Action = BackupActionType.Database;
bkpDbLog.Database = db;
bkpDbLog.Devices.AddDevice(path, DeviceType.File);
bkpDbLog.BackupSetName = name;
bkpDbLog.BackupSetDescription = desc;
bkpDbLog.Initialize = true;
bkpDbLog.Checksum = true;
bkpDbLog.ContinueAfterError = true;
bkpDbLog.Incremental = false;
bkpDbLog.FormatMedia = false;
bkpDbLog.PercentComplete += CompletionStatusInPercent;
bkpDbLog.Complete += BackupCompleted;
bkpDbLog.SqlBackup(myServer);
if (myServer.ConnectionContext.IsOpen)
myServer.ConnectionContext.Disconnect();
ありがとう!