zoukankan      html  css  js  c++  java
  • c# sqlserver备份还原(转)

    WinForm c# 备份 还原 数据库
     其实是个非常简单的问题,一个Form,一个Button,一个OpenFileDialog,一个SaveFileDialog.下面给出备份与还原类
    
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    using System.Collections;
    using System.Windows.Forms;
    namespace 我的备份与还原
    
    {
        class 备份与还原数据库
        {
            static string connectionString = "server=.;database=master;uid=sa;pwd=";
            SqlConnection conn = new SqlConnection(connectionString);
            /// <summary>
            /// 备份指定的数据库文件
            /// </summary>
            /// <param name="databasename">要还原的数据库</param>
            /// <returns></returns>
            public bool BackUpDataBase( string databasefile)
            {
                if (!File.Exists(databasefile))
                {
    
                }
                //还原的数据库MyDataBase
                string sql = "BACKUP DATABASE " + "MyDataBase" + " TO DISK = '" + databasefile + ".bak' ";
                conn.Open();
                SqlCommand comm = new SqlCommand(sql, conn);
                comm.CommandType = CommandType.Text;
                try
                {
                    comm.ExecuteNonQuery();
                }
                catch (Exception err)
                {
                    string str = err.Message;
                    conn.Close();
    
                    return false;
                }
    
                conn.Close();//关闭数据库连接
                return true;
            }
    
    //以下是还原数据库,稍微麻烦些,要关闭所有与当前数据库相连的连接------------------------------------
    
    //--------------------------------------------------------------------------------------------------------------------------
            public string RestoreDatabase(string backfile)
            {
                ///杀死原来所有的数据库连接进程
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
                conn.Open();
                string sql = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='" + 
                              "MyDataBase"+ "'";
                SqlCommand cmd1 = new SqlCommand(sql, conn);
                SqlDataReader dr;
                ArrayList list = new ArrayList();
                try
                {
                    dr = cmd1.ExecuteReader();
                    while (dr.Read())
                    {
                        list.Add(dr.GetInt16(0));
                    }
                    dr.Close();
                }
                catch (SqlException eee)
                {
                    MessageBox.Show(eee.ToString());
                }
                finally
                {
                    conn.Close();
                }
                //MessageBox.Show(list.Count.ToString());
                for (int i = 0; i < list.Count; i++)
                {
                    conn.Open();
                    cmd1 = new SqlCommand(string.Format("KILL {0}", list[i].ToString()), conn);
                    cmd1.ExecuteNonQuery();
                    conn.Close();
                    MessageBox.Show("系统已经清除的数据库线程: " + list[i].ToString() + "
    正在还原数据库!");
                }
                //这里一定要是master数据库,而不能是要还原的数据库,因为这样便变成了有其它进程
                //占用了数据库。
                string constr = @"Data Source=.;Initial Catalog=master;User ID=sa;pwd =";
                string database = MyDataBase;
                string path = backfile;
                string BACKUP = String.Format("RESTORE DATABASE {0} FROM DISK = '{1}'", database, path);
                SqlConnection con = new SqlConnection(constr);
                SqlCommand cmd = new SqlCommand(BACKUP, con);
                con.Open();
                try
                {
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("还原成功,点击退出系统!");
                    Application.Exit();
                }
                catch (SqlException ee)
                {
                    //throw(ee);
    
                    //MessageBox.Show("还原失败");
    
                    MessageBox.Show(ee.ToString());
    
                }
                finally
                {
                    con.Close();
                }
                return "成功与否字符串";
            }
        }
    }
  • 相关阅读:
    Solidworks草图或者特征无法删除怎么办
    Solidworks如何为装配体绘制剖面视图
    Solidworks如何在装配图中保存单独的一个零件
    [Algorithm] Check if a binary tree is binary search tree or not
    [PureScript] Break up Expressions into Cases in PureScript using Simple Pattern Matching
    [Docker] Hooking a Volume to Node.js Source Code
    [PureScript] Basic Data Constructors in PureScript
    [Algorithm] Check for balanced parentheses using stack
    [PureScript] Introduce to PureScript Specify Function Arguments
    [Node.js] process.nextTick for converting sync to async
  • 原文地址:https://www.cnblogs.com/enjoyprogram/p/3177693.html
Copyright © 2011-2022 走看看