手动备份当然是用 sqlserver manage studio ,不记了 程序备份 先连接数据库: string connstring = "server=" + 服务器 + ";User ID=" + 用户名 + ";Password=" + 密码 + ";database=master;"; SqlConnection con= new SqlConnection(_ConnString); con.Open(); 备份代码: string SqlBk = "Backup DATABASE " + 数据库名 + " TO DISK='" + 保存文件名(全路径的,空格好像有问题) + "'"; SqlCommand sqlCMD = null; sqlCMD = new SqlCommand(SqlBk, con); Int32 r = 0; try { sqlCMD.CommandTimeout = 0; //一直等待到结束 r = sqlCMD.ExecuteNonQuery(); MessageBox.Show("数据库备份完毕!", "", MessageBoxButtons.OK, MessageBoxIcon.Information); saveP(); } catch (Exception ex) { MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { con.Close(); } 恢复代码: string SqlRestore = @"ALTER DATABASE '" + 数据库名 + "' SET OFFLINE WITH ROOLBACK IMMEDIATE;" //先将数据库离线比较保险,不然可能不能恢复 +"RESTORE DATABASE " + 数据库名 + " FROM DISK = '" + 备份文件 + "' WITH MOVE '" + 数据库名 + "' TO '" + 新库文件路径 + @"/" + 数据库名 + ".mdf', MOVE '" + 数据库名 + "_log' TO '" + 新库文件路径 + @"/" + 数据库名 + "_log.ldf',STATS = 10, REPLACE;" +"ALTER DATABASE '" + 数据库名 + "' SET ONLINE WITH ROOLBACK IMMEDIATE;"; //恢复完成使数据库在线 SqlCommand sqlCMD = null; sqlCMD = new SqlCommand(SqlRestore, con); Int32 r = 0; try { sqlCMD.CommandTimeout = 0; //一直等待到结束 r = sqlCMD.ExecuteNonQuery(); MessageBox.Show("数据库恢复完毕!", "", MessageBoxButtons.OK, MessageBoxIcon.Information); saveP(); } catch (Exception ex) { MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { con.Close(); }