IT学习联盟

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
IT学习联盟 门户 文章 ASP.NET/C# 查看内容

C#数据库的备份(SQL2005)

2012-8-18 03:04| 发布者: admin| 查看: 784| 评论: 0

[csharp]
using System; 
[csharp] 
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数据库恢复后台代码:
[csharp]
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(); 
            } 
        } 
    } 
 } 

Archiver|IT学习联盟| 网站地图

Powered by Discuz! X2.5© 2001-2010 世界学习室 大伟制作

GMT+8, 2018-8-16 17:46 , Processed in 0.077446 second(s), 12 queries .