未创建备份文件



我想用 C# 创建数据库的备份。当我单击更新按钮时,它会正确显示在保存文件对话框中,但不会创建备份。单击save后,它会显示错误"error in catch"。这是我的代码:


string connection = @"data source=(LocalDB)MSSQLLocalDB;attachdbfilename=|DataDirectory|personal_accounting.mdf;integrated security=True;";

using (SqlConnection con = new SqlConnection(connection))
{
ServerConnection srvConn = new ServerConnection(con);
Server srvr = new Server(srvConn);
if (srvr != null)
{
try
{
Backup backupdb = new Backup();
backupdb.Action = BackupActionType.Database;
backupdb.Database = "personal_accounting";
Microsoft.Win32.SaveFileDialog savefd = new Microsoft.Win32.SaveFileDialog();
//SaveFileDialog savefd = new SaveFileDialog();
savefd.Filter = "Backup File (*.Bak)|*.Bak";
savefd.FileName = DateTime.Now.ToString("yyyyMMdd_HHmmss");
Nullable<bool> result = savefd.ShowDialog();
if (result==true)
{
//System.Windows.MessageBox.Show("ok");
BackupDeviceItem bkpDevice = new BackupDeviceItem(savefd.FileName, DeviceType.File);
backupdb.Devices.Add(bkpDevice);
backupdb.SqlBackup(srvr);
//--------------------------------- This Will Show Message box -----------------
msgnotic = new NotifyMessageManager
(
Screen.Width,
Screen.Height,
200,
150
);
msgnotic.Start();
NotifyMessage msg = null;
msg = new NotifyMessage("img/GreenSkin.png", "message", "Backup has been created",
() =>
System.Windows.MessageBox.Show("operation done!", "message", MessageBoxButton.OK));
msgnotic.EnqueueMessage(msg);
//`-----------------------------End msgbox-------------------------------`
}
}
catch
{
System.Windows.MessageBox.Show("Error in save backup");
}
}
}

您只需先显示"保存文件"对话框并检查DialogResult是否正常,然后执行其余操作:

if(savefd.ShowDialog() == DialogResult.OK)
{
//do sql connection, backup creation and ... here
} 

最新更新