当前位置:编程学习 > C#/ASP.NET >>

请帮个忙,关于用.NET备份SQL数据库的程序

--------------------编程问答-------------------- 先帮顶,慢慢解决 --------------------编程问答--------------------
UP --------------------编程问答-------------------- 1,楼主同学是想要一段能够备份数据库的程序还是想要备份数据库的一段代码?
2,楼主同学需要的程序是放置在网站的页面上么,还是窗体应用程序
3,楼主同学还要说明应用的地方,和环境 --------------------编程问答-------------------- 1.程序
2.放在网站上面的
3.网站空间环境是Microsoft .NET Framework 版本:1.1.4322.2443; ASP.NET 版本:1.1.4322.2407  --------------------编程问答-------------------- SQL数据库只能通过放网站的那台服务器连接上,而放网站的那台服务器我只能用FTP上传文件,其它权限没有。

所以只能通过.NET的WEB程序把数据备份出来了 --------------------编程问答--------------------
参考。。。
http://topic.csdn.net/u/20090917/10/a8cf70f2-d1ba-46da-88d1-ccdd55c6e2a6.html
http://www.mb5u.com/biancheng/net/net_29718.html
http://www.cnblogs.com/coolylh/archive/2006/04/12/373463.html --------------------编程问答-------------------- 有没有写好的整个文件 --------------------编程问答-------------------- 参考:
//备份数据库 
void   backupButton_Click(object   sender,   System.EventArgs   e)   
  {   
  string   path   =   pathTextBox.Text;   
  string   dbname   =   dbDropDownList.SelectedValue;   
    
  string   backupSql   =   "use   master;";   
  backupSql   +=   "backup   database   @dbname   to   disk   =   @path;";   
    
  SqlCommand   myCommand   =   new   SqlCommand(backupSql,   new   SqlConnection(ConnStr));   
    
  myCommand.Parameters.Add("@dbname",   SqlDbType.Char);   
  myCommand.Parameters["@dbname"].Value   =   dbname;   
  myCommand.Parameters.Add("@path",   SqlDbType.Char);   
  myCommand.Parameters["@path"].Value   =   path;   
    
  try   
  {   
  myCommand.Connection.Open();   
  myCommand.ExecuteNonQuery();   
  infoLabel.Text   =   "备份成功";   
  }   
  catch(Exception   ex)   
  {   
  infoLabel.Text   =   "备份失败<br>"   +   ex.ToString();   
  }   
  finally   
  {   
  myCommand.Connection.Close();   
  }   
  }   
    //还原数据库备份
  void   restoreButton_Click(object   sender,   System.EventArgs   e)   
  {   
  string   path   =   pathTextBox.Text;                   //数据库备份路径  
  string   dbname   =   dbDropDownList.SelectedValue;        //数据库名
    
  string   restoreSql   =   "use   master;";   
  restoreSql   +=   "restore   database   @dbname   from   disk   =   @path;";   
    
  SqlCommand   myCommand   =   new   SqlCommand(restoreSql,   new   SqlConnection(ConnStr));   
    
  myCommand.Parameters.Add("@dbname",   SqlDbType.Char);   
  myCommand.Parameters["@dbname"].Value   =   dbname;   
  myCommand.Parameters.Add("@path",   SqlDbType.Char);   
  myCommand.Parameters["@path"].Value   =   path;   
    
  try   
  {   
  myCommand.Connection.Open();   
  myCommand.ExecuteNonQuery();   
  infoLabel.Text   =   "サヨクエウノケヲ";   
  }   
  catch(Exception   ex)   
  {   
  infoLabel.Text   =   "サヨクエハァーワ<br>"   +   ex.ToString();   
  }   
  finally   
  {   
  myCommand.Connection.Close();   
  }   
  }   
--------------------编程问答-------------------- 数据库备份存储过程:
create   proc   spDBBackUNC   @DBName   varchar(20),@Path   nvarchar(50)       
As           
declare   @fname   varchar(100),@fname1   varchar(100),@sql   varchar(200)       
set   @fname   =   @Path   +(case   when   right(@Path,1)   <> '\ '   then   '\ '   else   ' '   end)       
+@DBName+ '_ '+convert(char(8),getdate(),112)+ '_ '+replace(convert(char(8),getdate(),108), ': ', ' ')+ '.bak '       
set   @sql   =   'backup   database   '+@DBName+   '   to   disk   = ' ' '   +@fname+   ' ' ' '       
exec(@sql)       
--print   @sql     
go 

/*   异地备份数据库:     将远程路径使用net   Use映射到本地来备份.需要使用:xp_cmdshell 
@DBName   需备份的数据库名       
@Path   备份文件存放路径,可以是本机路径或网络上的路径(需完全权限共享)       
Usage:       
Exec   spDBBackUNC   'DB_Name ', '\\UNC\shareName '       
*/ --------------------编程问答-------------------- 学习学习  --------------------编程问答-------------------- 以上代码直接保存为ASPX文件就可执行? --------------------编程问答-------------------- RESTORE DATABASE 数据库名 from DISK='C:\\备份名.bak'  --还原
BACKUP DATABASE 数据库名 TO DISK ='C:\\备份名.bak'    --备份 --------------------编程问答-------------------- 呵呵,学习了。学习了。。 --------------------编程问答--------------------
引用 12 楼 jack15850798154 的回复:
RESTORE DATABASE 数据库名 from DISK='C:\\备份名.bak' --还原
BACKUP DATABASE 数据库名 TO DISK ='C:\\备份名.bak' --备份


这个备份到数据库所在的服务器上了吧 --------------------编程问答-------------------- 谁能帮忙弄好啊,回来一定加分 --------------------编程问答--------------------
引用 14 楼 yixiao88 的回复:
引用 12 楼 jack15850798154 的回复:
RESTORE DATABASE 数据库名 from DISK='C:\\备份名.bak' --还原
BACKUP DATABASE 数据库名 TO DISK ='C:\\备份名.bak' --备份


这个备份到数据库所在的服务器上了吧

是的。
给你一段代码你附加上测试一下看看符合你的要求不? --------------------编程问答-------------------- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Backup.aspx.cs" Inherits="Xtsz_Backup" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>数据库备份还原</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>   
        <asp:HyperLink ID="lnkBackup" runat="server" 
            NavigateUrl="Backup.aspx?Oper=Backup">备份</asp:HyperLink>
 
        <asp:HyperLink ID="lnkRestore" runat="server" 
            NavigateUrl="Backup.aspx?Oper=Restore">还原</asp:HyperLink>
        <br />
        <br />  
        <asp:FileUpload ID="fileUpload" runat="server" Width="200px" />    
        <br />
        <asp:Button ID="btnOK" runat="server" onclick="btnOK_Click" Text="备份" />    
        <br />
        <br />
    <asp:Label ID="lblInfo" runat="server" ForeColor="Red"></asp:Label>
        <asp:HyperLink ID="lnkDown" runat="server" Visible="False">下载地址</asp:HyperLink>
        <br />
    </div>
    </form>
</body>
</html>



CS源码:

复制内容到剪贴板 程序代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
using System.IO;
public partial class Xtsz_Backup : System.Web.UI.Page
{
    string strFileName, strFile, strSql;
    string strPath = System.Web.HttpContext.Current.Server.MapPath("../Backup/");
    string strConn = "Data Source=192.168.1.218;Initial Catalog=qhdzjgc;User ID=sa;Password=gfgsoft";
  
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            if (!Directory.Exists(strPath))
            {
                Directory.CreateDirectory(strPath);
            }
            try
            {
                if (Request.QueryString["Oper"].ToString() == "Backup")
                {
                    btnOK.Text = "备份";
                    fileUpload.Visible = false;
                }
                else
                {
                    btnOK.Text = "还原";
                    fileUpload.Visible = true;
                }
            }
            catch
            {
                btnOK.Text = "备份"; 
                fileUpload.Visible = false;
            }
        }
    }
    protected void btnOK_Click(object sender, EventArgs e)
    {
        lblInfo.Text = "";
        if (btnOK.Text == "备份")
        {
            Backup();
        }
        else
        {
            Restore();
        }
    }

    private void Backup()
    {       
        SqlConnection sqlConn = new SqlConnection(strConn);
        strFileName = "qhdzjgc_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".bak";
        strFile = strPath + strFileName;
        strSql = "BACKUP DATABASE qhdzjgc to DISK ='" + strFile + "'";
        SqlCommand sqlCmd = new SqlCommand(strSql, sqlConn);
        try
        {
            sqlConn.Open();
            sqlCmd.ExecuteNonQuery();
            Response.Write("<script>alert('成功备份数据库!请下载到本地!')</script>");
            lnkDown.NavigateUrl = "../Backup/" + strFileName;
            lnkDown.Visible = true;
        }
        catch (Exception ex)
        {
            Response.Write("<script>alert('备份数据库出错!" + ex.Message + "')</script>");  
            lnkDown.Visible = false;
        }

        finally
        {
            sqlCmd.Dispose();
            sqlConn.Close();
            sqlConn.Dispose();
        } 
    }

    private void Restore()
    {
        if (fileUpload.FileName == "")
        {
            Response.Write("<script>alert('请选择数据库备份文件!');</script>");
            return;
        }
        Boolean fileOk = false;
        //判断是否已经选取文件
        if (fileUpload.HasFile)
        {
            strFile = strPath + fileUpload.FileName;
            if (!File.Exists(strFile))
            {
                string fileExtension = System.IO.Path.GetExtension(fileUpload.FileName).ToLower();//取得文件的扩展名,并转换成小写
                string[] allowExtension = { ".bak" };  //限定只能上传.bak文件
                //对上传的文件的类型进行一个个匹对
                for (int i = 0; i < allowExtension.Length; i++)
                {
                    if (fileExtension == allowExtension[i])
                    {
                        fileOk = true;
                        break;
                    }
                }
                //对上传文件的大小进行检测,限定文件最大不超过1M
                //if (fileUpload.PostedFile.ContentLength > 1024000)
                //{
                //    fileOk = false;
                //}

                if (fileOk) //最后的结果
                {
                    try
                    {
                        fileUpload.PostedFile.SaveAs(strPath + fileUpload.FileName);                        
                    }
                    catch
                    {
                        Response.Write("<script>window.alert('上传失败')</script>");
                        return;
                    }
                }
                else
                {
                    Response.Write("<script>alert('文件类型或者文件大小超出1M')</script>");
                    return;
                }
            }
            strSql = "use master restore database qhdzjgc from disk='" + strFile + "' ";
            SqlConnection sqlConn = new SqlConnection(strConn);
            SqlCommand sqlCmd = new SqlCommand(strSql, sqlConn);
            try
            {
                sqlConn.Open();
                sqlCmd.ExecuteNonQuery();
                Response.Write("<script>alert('成功还原数据库!')</script>");
            }
            catch (Exception ex)
            {
                lblInfo.Text = "还原数据库出错!" + ex.Message;
            }
            finally
            {
                sqlCmd.Dispose();
                sqlConn.Close();
                sqlConn.Dispose();
            }
        }
    }
} --------------------编程问答-------------------- 学习学习,我也不会备份 --------------------编程问答-------------------- 在SQL SERVER中自动备份数据库
通过共享目录复制文件到网站路径,再定时下载
备份可使用存储过程 --------------------编程问答-------------------- 哈哈,从来都没想过用.net备份
留印帮顶! --------------------编程问答-------------------- 顶一个 --------------------编程问答-------------------- 顶一个 --------------------编程问答-------------------- 用.net 也是傳個backup sql語句去备份啊 --------------------编程问答-------------------- 远程备份数据库到客户端问题?


--做一个与客户端的映射
exec master..xp_cmdshell 
'net use z: \\192.168.1.145\c$ "密码" /user:192.168.1.145\administrator'
/*--说明:
z: 是映射网络路径对应本机的盘符,与下面的备份对应
\\192.168.1.145\c$ 是要映射的网络路径
192.168.1.145\administrator 
192.168.1.145是远程的计算机名,administrator是登陆的用户名
密码 上面指定的administrator用户的密码
--*/

--进行数据库备份
backup databas

--进行数据库备份
backup database TEST to disk='z:\Test.bak'

--备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'

--------------------编程问答-------------------- 权限问题,做一个网络映射盘映射到数据库所在的服务器就行

不是自己的服务器一般搞不起来
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,