做完了一个小项目,没做过数据库备份,请大哥们指点!

解决方案 »

  1.   

    access的话就拷贝文件
    copyfile()
      

  2.   

    access的话直接copy文件.
    如果是sqlserver的话用sql语句如下:
    backup database 数据库名 disk='备份的文件名'
      

  3.   

    csdn上还有会编程的吗,不是来蹭分就是瞎答问题,一群”酒囊饭袋“
      

  4.   

    private void btnBackData_Click(object sender, System.EventArgs e)
    {
    if( ""==strBackPath )
    {
    MessageBox.Show("请先选择备份路径!");
    }
    else
    {
    this.Cursor = Cursors.WaitCursor;if( BackUpDB( Global.MainIni.IniReadValue("DataBase","Server"), 
    Global.MainIni.IniReadValue("DataBase","UID"), 
    Encrypt.Decrypt3DES( Global.MainIni.IniReadValue("DataBase","PWD"), Encrypt.strKey ) ,
    Global.MainIni.IniReadValue("DataBase","DataBase"),
    strBackPath ) 
    )
    {
    this.Cursor = Cursors.Arrow;
    MessageBox.Show("数据备份成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    this.proBar.Value = 0;
    }
    this.Cursor = Cursors.Arrow;
    }strBackPath = "";
    }
    private void btnRestoreData_Click(object sender, System.EventArgs e)
    {
    if(MessageBox.Show("该操作将数据覆盖!!\n\n如果选择[是],将原来的数据覆盖\n\n如果选择[否],将取消恢复","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.No)
    return;
    return;
    this.Cursor = Cursors.WaitCursor;
    if( RestoreData( Global.MainIni.IniReadValue("DataBase","Server"), 
    Global.MainIni.IniReadValue("DataBase","UID"), 
    Encrypt.Decrypt3DES( Global.MainIni.IniReadValue("DataBase","PWD"), Encrypt.strKey ) ,
    Global.MainIni.IniReadValue("DataBase","DataBase"),
    strRestorePath ) 
    )
    {
    this.Cursor = Cursors.Arrow;
    MessageBox.Show("数据恢复成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    this.proBar.Value = 0;}

    }public bool RestoreData( string ServerName, string UserName, string Password,string strDbName,string strFileName )
    {
    SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ; 
    try 

    svr.Connect(ServerName,UserName,Password) ; 
    SQLDMO.QueryResults qr = svr.EnumProcesses(-1) ; 
    int iColPIDNum = -1 ; 
    int iColDbName = -1 ; 
    for(int i=1;i<=qr.Columns;i++) 

    string strName = qr.get_ColumnName(i) ; 
    if (strName.ToUpper().Trim() == "SPID") 

    iColPIDNum = i ; 

    else if (strName.ToUpper().Trim() == "DBNAME") 

    iColDbName = i ; 

    if (iColPIDNum != -1 && iColDbName != -1) 
    break ; 
    } for(int i=1;i<=qr.Rows;i++) 

    int lPID = qr.GetColumnLong(i,iColPIDNum) ; 
    string strDBName = qr.GetColumnString(i,iColDbName) ; 
    if (strDBName.ToUpper() == strDbName.ToUpper()) 
    svr.KillProcess(lPID) ; 
    } }
    catch(Exception err) 

    throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message)) ; 


    try
    {
    SQLDMO.Restore res = new SQLDMO.RestoreClass() ; 
    res.Action = 0 ; 
    SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step); 
    res.PercentComplete += pceh; 
    res.Files = strFileName ; res.Database = strDbName ; 
    res.ReplaceDatabase = true ; 
    res.SQLRestore(svr) ; 
    return true;

    catch(Exception err) 

    throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message)) ; 

    finally 

    svr.DisConnect() ; 
    } }
      

  5.   

    public bool BackUpDB( string ServerName, string UserName, string Password, string strDbName,string strFileName ) 

    SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ; 
    try 

    svr.Connect(ServerName,UserName,Password) ; 
    SQLDMO.Backup bak = new SQLDMO.BackupClass(); 
    bak.Action = 0 ; 
    bak.Initialize = true ; 
    SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step); 
    bak.PercentComplete += pceh; 
    bak.Files = strFileName; 
    bak.Database = strDbName; 
    bak.SQLBackup(svr); 
    return true ; 

    catch(Exception err) 

    throw(new Exception("数据库备份失败"+err.Message)) ; 

    finally 

    svr.DisConnect() ; 

    }
      

  6.   

    这是从我自己的 SQL-Server 的项目中拷贝下来的原代码,是用 SQL_DMO 来操作的,
    你看看对你有没有帮助。
      

  7.   

    如果是sql server用自带的备份向导比较好
      

  8.   

    backup database dbname
    不过楼主要注意了,重复备份时,可能数据库中的数据会重复,而不是覆盖!
    可以找个数据库操作下!