各位大神,小弟要完成一个用C#语言和asp.net完成对数据库的备份和还原,我希望备份和还原时自己能够选择备份和还原的 位置。 类似备份windows那样,能弹出位置选择的对话框,这个怎么实现呢??

解决方案 »

  1.   

    备份:use master;backup database @name to disk=@path;
    恢复:use master;restore database @name from disk=@path;
      

  2.   

    ///
    ///备份方法
    ///
    SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;");SqlCommand cmdBK = new SqlCommand();
    cmdBK.CommandType = CommandType.Text;
    cmdBK.Connection = conn;
    cmdBK.CommandText = @"backup database test to disk='C:\ba' with init";try
    {
    conn.Open();
    cmdBK.ExecuteNonQuery();
    MessageBox.Show("Backup successed.");
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    conn.Close();
    conn.Dispose();
    }
    ///
    ///还原方法
    ///
    SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
    conn.Open();//KILL DataBase Process
    SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test'", conn);
    SqlDataReader dr;
    dr = cmd.ExecuteReader();
    ArrayList list = new ArrayList();
    while(dr.Read())
    {
    list.Add(dr.GetInt16(0));
    }
    dr.Close();
    for(int i = 0; i < list.Count; i++)
    {
    cmd = new SqlCommand(string.Format("KILL {0}", list), conn);
    cmd.ExecuteNonQuery();
    }SqlCommand cmdRT = new SqlCommand();
    cmdRT.CommandType = CommandType.Text;
    cmdRT.Connection = conn;
    cmdRT.CommandText = @"restore database test from disk='C:\ba'";try
    {
    cmdRT.ExecuteNonQuery();
    MessageBox.Show("Restore successed.");
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    conn.Close();
    }
    参考
      

  3.   

    http://blog.csdn.net/sqlove/archive/2009/02/17/3899331.aspx