更新时间:2023-01-09 11:52:44
看看这里:用C#备份SQL数据库 [ ^ ]
嗨footballpardeep,
为什么你没有问谷歌呢?
我希望这个链接 [ ^ ]会对你有所帮助。
问候,
RK
Hi footballpardeep,
Why you didnt ask google about it?
I hope this link[^] would help you a bit.
Regards,
RK
1备份
OpenFileDialog ofd = new OpenFileDialog();
SaveFileDialog sfd = new SaveFileDialog();
CashFlowDAL cfd = new CashFlowDAL();
string filepath;
if(!Directory.Exists(C:\\))
{
filepath =C:\\BACKUP \\+ User.compname;
}
else
{
filepath =E:\\BACKUP \\+ User.compname;
}
string res =;
{
if(!Directory.Exists(filepath))
{
Directory.CreateDirectory(filepath);
}
试试
{
string filename = DateTime.Now.ToString(User.compname +dd_MM_yy__hh_mm_ss.bak);
res = cfd.BackupDatabase(User.compname,filepath +\\ \\\+ filename);
if(res!= null)抛出新的异常(res);
File.Copy(filepath +\\ + filename,User.backupdir +\\+ filename);
MessageBox.Show(备份完成..(在+ filepath +\\+ filename + ));
}
catch(例外情况)
{
MessageBox.Show(ex.Message);
}
}
2恢复
尝试
{
CashFlowDAL cfd = new CashFlowDAL();
cfd.ConnectToDB();
OpenFileDialog od = new OpenFileDialog();
od.Filter =SQL Server数据库恢复文件| *。 bak;
od.Title =恢复数据库备份;
if(od.ShowDialog()== DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
string UseMaster =USE master;
SqlCommand UseMasterCommand = new SqlCommand(UseMaster,cfd.con);
UseMasterCommand.ExecuteNonQuery();
string Alter1 = @ALTER D ATABASE [+ User.compname +] SET Single_User WITH Rollback Immediate;
SqlCommand Alter1Cmd = new SqlCommand(Alter1,cfd.con);
Alter1Cmd.ExecuteNonQuery( );;
string Restore = string.Format(从disk ='{0}'恢复数据库[+ User.compname +],od.FileName );
SqlCommand RestoreCmd = new SqlCommand(Restore,cfd.con);
RestoreCmd.ExecuteNonQuery();
string Alter2 = @ALTER DATABASE [+ User.compname +] SET Multi_User;
SqlCommand Alter2Cmd = new SqlCommand(Alter2,cfd.con );
Alter2Cmd.ExecuteNonQuery();
MessageBox.Show(数据库成功保留,成功消息!);
}
}
catch(例外)
{
MessageBox.Show(数据库没有恢复,错误信息!);
}
这个.Cursor = Cursors.Default;
1 Back up
OpenFileDialog ofd = new OpenFileDialog();
SaveFileDialog sfd = new SaveFileDialog();
CashFlowDAL cfd = new CashFlowDAL();
string filepath;
if (!Directory.Exists("C:\\"))
{
filepath = "C:\\BACKUP\\" + User.compname;
}
else
{
filepath = "E:\\BACKUP\\" + User.compname;
}
string res = "";
{
if (!Directory.Exists(filepath))
{
Directory.CreateDirectory(filepath);
}
try
{
string filename = DateTime.Now.ToString(User.compname + " dd_MM_yy__hh_mm_ss.bak");
res = cfd.BackupDatabase(User.compname, filepath + "\\" + filename);
if (res != null) throw new Exception(res);
File.Copy(filepath + "\\" + filename, User.backupdir + "\\" + filename);
MessageBox.Show("Backup Completed..(In " + filepath + "\\" + filename + ")");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
2 Restore
try
{
CashFlowDAL cfd = new CashFlowDAL();
cfd.ConnectToDB();
OpenFileDialog od = new OpenFileDialog();
od.Filter = "SQL Server database Restore files|*.bak";
od.Title = "Restore Database Backup";
if (od.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
string UseMaster = "USE master";
SqlCommand UseMasterCommand = new SqlCommand(UseMaster, cfd.con);
UseMasterCommand.ExecuteNonQuery();
string Alter1 = @"ALTER DATABASE [" + User.compname + "] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, cfd.con);
Alter1Cmd.ExecuteNonQuery();
string Restore = string.Format("Restore database [" + User.compname + "] from disk='{0}'", od.FileName);
SqlCommand RestoreCmd = new SqlCommand(Restore, cfd.con);
RestoreCmd.ExecuteNonQuery();
string Alter2 = @"ALTER DATABASE [" + User.compname + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, cfd.con);
Alter2Cmd.ExecuteNonQuery();
MessageBox.Show("Database Retored Sucessfully", "Success Message!");
}
}
catch (Exception)
{
MessageBox.Show("Database didn't Restore", "Error Message!");
}
this.Cursor = Cursors.Default;