using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.txtName.Text = "数据库名" + System.DateTime.Now.ToShortDateString(); } //将数据库备份到应用程序的跟目录下 string connectionString = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; private void btn_beifen_Click(object sender, EventArgs e) { try { string strg = Application.StartupPath.ToString(); strg = strg.Substring(0, strg.LastIndexOf("\\")); strg = strg.Substring(0, strg.LastIndexOf("\\")); strg += @"\Data"; string sqltxt = @"BACKUP DATABASE 数据库名 TO Disk='" + strg + "\\" + txtPath.Text + ".bak" + "'"; SqlConnection con = new SqlConnection(connectionString); con.Open(); SqlCommand cmd = new SqlCommand(sqltxt, con); cmd.ExecuteNonQuery(); con.Close(); if (MessageBox.Show("备份成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK) { this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } //选择保存目录事件 private void btn_open_Click(object sender, EventArgs e) { folderBrowserDialog1.Description = "请选择备份文件将要保存到的文件夹,如有必要你可以\n通过单击左下角的‘新建文件夹’按钮新建文件夹"; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { txtPath.Text = folderBrowserDialog1.SelectedPath.ToString(); } } //开始备份数据到指定目录下的指定文件名 private void btn_ok_Click(object sender, EventArgs e) { string filepath="D:\\机房设备资源管理系统数据库备份\\"; try { if (txtName.Text != "") { if (txtPath.Text != "") { filepath=txtPath.Text.Trim()+"\\"; }else { if (MessageBox.Show("你确定要要将数据备份到默认位置:" + filepath + "下吗?", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) { MessageBox.Show("请选择保存位置!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); btn_open_Click(sender, e); } else { if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } } } SqlConnection con = new SqlConnection(connectionString); con.Open(); string strBacl = "backup database 数据库名 to disk='" + filepath + txtName.Text.Trim() + ".bak'"; SqlCommand Cmd = new SqlCommand(strBacl, con); if (Cmd.ExecuteNonQuery() != 0) { con.Close(); MessageBox.Show("数据备份成功!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); } else { MessageBox.Show("数据备份失败!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else if (txtPath.Text != "" && txtName.Text== "") { MessageBox.Show("备份名称为必填项!你必须填写!:", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }// end } catch (Exception ee) { MessageBox.Show(ee.Message.ToString()); } } private void LK_lbl_option_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { restore rs = new restore(); rs.Show(); } } }
SQL数据库恢复后台代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsApplication1 { public partial class restore : Form { public restore() { InitializeComponent(); } string DateStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; private void restore_Load(object sender, EventArgs e) { //string strg = Application.StartupPath.ToString(); //strg = strg.Substring(0, strg.LastIndexOf("\\")); //strg = strg.Substring(0, strg.LastIndexOf("\\")); //strg += @"\Data"; //textBox1.Text = strg + "\\" + "MySale.bak"; } /// <summary> /// 备份数据库按钮事件 /// txtName(文本框)用于获取备份文件名,txtPath(文本框)用于获取备份文件路径 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_ok_Click(object sender, EventArgs e) { if (this.txtPath.Text != ""&&this.txtPath.Text != null) { SqlConnection conn = new SqlConnection(DateStr); conn.Open(); //-------------------杀掉所有连接 db_PWMS 数据库的进程-------------- string strSQL = "select spid from master..sysprocesses where dbid=db_id( '数据库名') "; SqlDataAdapter Da = new SqlDataAdapter(strSQL, conn); DataTable spidTable = new DataTable(); Da.Fill(spidTable); SqlCommand Cmd = new SqlCommand(); Cmd.CommandType = CommandType.Text; Cmd.Connection = conn; if (spidTable.Rows.Count > 1) {//强行关闭非本程序使用的所有用户进程 for (int iRow = 0; iRow < spidTable.Rows.Count - 1; iRow++) { Cmd.CommandText = "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程 Cmd.ExecuteNonQuery(); } } conn.Close(); conn.Dispose(); //-------------------------------------------------------------------- try { string str = "use master restore database 数据库名 from Disk='" + txtPath.Text.Trim() + "'"; SqlConnection conn1 = new SqlConnection(DateStr); conn1.Open(); SqlCommand cmd = new SqlCommand(str, conn1); cmd.ExecuteNonQuery(); if (MessageBox.Show("恢复成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) == DialogResult.OK) { this.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } else { MessageBox.Show("请选择备份文件位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } /// <summary> /// 保存位置选择按钮事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_open_Click(object sender, EventArgs e) { openFileDialog1.FilterIndex = 0; openFileDialog1.FileName = ""; openFileDialog1.Filter = "txt files (*.bak)|*.bak|All files (*.*)|*.*"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtPath.Text = openFileDialog1.FileName.ToString(); } } } }