SQL数据库备份

数据库备份到服务器的一个文件夹下,同时再写入一个access的小库内所备份的数据库名称和备份日期,以被还原时使用。
下载到本地是为了不时之需,不过想从本地上传到服务器上还原数据库是不现实的,有点大。手动建databak文件夹

 

protected void Page_Load(object sender, EventArgs e)
        {
            HyperLink1.Visible 
= false;
        }

        
protected void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
        {
            
//备份数据库的新名字 用时间
            string newname = "backup" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".bak";
            
//备份数据库在服务器上的路径+名字
            string nepath = Server.MapPath("../databak/"+ newname;

            
//string sql = "BACKUP DATABASE [00xs_0904] to DISK ='" + nepath + "'";
            
//备份数据库的SQL,后面的代码是完整备份+覆盖(同时按多次则覆盖)00xs_0904 是数据库的名字
            string sql = "BACKUP DATABASE [00xs_0904] TO  DISK ='" + nepath + "' WITH NOFORMAT, INIT,  NAME = N'00xs_0904-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
            

            
try
            {
                
//执行备份SQL语句
                obj.RunSql(sql);
                
//***********备份的同时,将基础信息存入access数据库,以免还原数据库时,数据覆盖
                string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
                strConnection 
+= "Data Source=";
                strConnection 
+= Server.MapPath("sjbf.mdb");

                
string str_Sql = "insert into xs_bf (sjmc,bfrq) values('" + newname + "','" + DateTime.Now.ToString() + "')";
                OleDbConnection objConnection 
= new OleDbConnection(strConnection);
                objConnection.Open();

                OleDbCommand oledbc 
= new OleDbCommand(str_Sql, objConnection);
                oledbc.ExecuteNonQuery();
                
                objConnection.Close();
                
//*************
                HyperLink1.Text = "已成功备份到服务器,请点击或另存为下载到本地!" + newname;

                HyperLink1.NavigateUrl 
= "http://" + Request.Url.Host + Request.ApplicationPath + "/databak/" + newname;

                HyperLink1.Visible 
= true;

            }

            
catch (Exception ex)
            {
                lblmessage.Text 
= ex.Message;
                lblmessage.Visible 
= true;

            }
        }


posted on 2009-08-14 11:21  马英超  阅读(340)  评论(0编辑  收藏  举报