俺只会备份.
string sz_sql="BACKUP DATABASE [" + DataBaseName + "] TO  DISK = '" + this.txtPath.Text.Trim() + this.txtFileName.Text.Trim() + "'";执行这句话就可以了.其他两个好像较难实现.

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3620/3620605.xml?temp=.1921656
      

  2.   

    这个我做过:
    一般的备份还原代码不说了
    这里需要注意的一个问题,
    如果当前的数据库是User的话,
    如果你连接语句中的数据库的User的话
    还原的时候会出错
    因为有用户连接到USer的话不能备份
    必须关掉所有的到User的连接
    并且你连接到Northwind的上,在对User进行备份
      

  3.   

    to: OneDotRed(武装到眼神)   怎么引用?to: follishnet(徐芳波)      你说的我怎么不太明白?
    to all:  现在备份实现了,但是还原老是不成功,也不报错...
      

  4.   

    c#
    参见在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
    http://dev.csdn.net/develop/article/28/28564.shtm
    当不使用要恢复的数据库时以上方法可行,但当你使用了数据库时就必须杀死该进程
    代码如下: /// <summary>
    /// 还原数据库函数
    /// </summary>
    /// <param name="strDbName">数据库名</param>
    /// <param name="strFileName">数据库备份文件的完整路径名</param>
    /// <returns></returns>
    public bool RestoreDB(string strDbName,string strFileName) 

    //PBar = pgbMain ; 
    SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ; 
    try 

    //服务器名,数据库用户名,数据库用户名密码
    svr.Connect("localhost","sa","hai") ;

    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 ; 

                    //杀死使用strDbName数据库的进程
    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) ; 
    }

                    
    SQLDMO.Restore res = new SQLDMO.RestoreClass() ; 
    res.Action = 0 ; 
    res.Files = strFileName ;  res.Database = strDbName ; 
    res.ReplaceDatabase = true ; 
    res.SQLRestore(svr) ; 
    return true ; 

    catch

    return false;

    finally 

    svr.DisConnect() ; 

    }
    PS:关于这个问题这里已经有很多帖子问了。建议查找一下再!
      

  5.   

    谢谢,用wmt85(深山老翁)的方法不知道如何取得备份后的文件名称