且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何通过c#代码备份和恢复sql数据库。

更新时间: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;