用JSP+SQL SRVER2000开发一个B/S系统,要求在系统后台管理实现备份和还原数据库,不知道用什么方法好.
小弟有一种方法:把库中数据导出到excel里面,还原的时候直接调用EXCEL表导入数据到库中。但是库中有很多表,是不是要备份很多excel表,这样是不是太麻烦了.有没有一种方法,直接用代码实现调用sql server的备份与还原功能请各位高手指点,有现成代码更好,急!!!谢谢......

解决方案 »

  1.   

    数据量大,而且很重要地话,可以使用DBMS的备份功能啊如果数据量不大,可以在数据库中建立备份表,用代码的方式进行代码级地冗余备份。
      

  2.   

    楼上的前辈,能否详细的说明下这两种方法的实现呢?
    以前只做过导出数据到EXCEL表格.真的不懂.....谢谢!!!
      

  3.   

    使用DBMS的备份功能是不是要手工到数据库中去备份,还是可以用代码实现呢,该如何实现呢???
      

  4.   

    你用DataInputStream和DataOutputStream把数据库文件以二进制的形式copy出来就可以了啊!
    不过用的时候要注意以上两个流的构造函数哦!
      

  5.   

    好象可以这样做吧:
    把备份数据库写成存储过程,然后用JAVA语句调用存储过程来实现
    有没哪位写过的,贴个代码来看看吧
      

  6.   

    使用mysql管理工具,到官方网站上下载,教教你的客户使用就行了
      

  7.   

    这样还是不太好.
    我在用 SQL="restore  DATABASE  sanlin  from  DISK='sldb.bak'"; 还原数据库的时候出错.
     因为数据库正在使用,所以未能获得对数据库的排它访问权。
    请问这个问题该如何解决呢(jsp+sql server2000)
      

  8.   

    use  master  create    proc    killspid    (@dbname    varchar(20))      
    as      
    begin      
    declare    @sql    nvarchar(500)      
    declare    @spid    int      
    set    @sql='declare    getspid    cursor    for          
    select    spid    from    sysprocesses    where    dbid=db_id('''+@dbname+''')'      
    exec    (@sql)      
    open    getspid      
    fetch    next    from    getspid    into    @spid      
    while    @@fetch_status    <    >-1      
    begin      
    exec('kill    '+@spid)      
    fetch    next    from    getspid    into    @spid      
    end      
    close    getspid      
    deallocate    getspid      
    end      ----------
    String  url=new  String();  
    url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=master";  
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  Connection  con=DriverManager.getConnection(url,"sa","");  CallableStatement cst;
    cst=con.prepareCall("{Call killspid(?)}");
    cst.setString(1,"sldb.bak");
    cst.executeUpdate();这样无法还原,请高手帮忙修改代码,小弟很笨的.谢谢啦