java对mssql数据库的备份和恢复

java对数据库的备份和恢复要用到的数据库连接方法DB.getMsConn:

用到的存储过程(该存储过程由网上收集+个人修改):

 

  CREATE       PROCEDURE     DBbackup     
                      @bakequip         int,                   --     备份设备:磁盘&磁带     
                      @bakpath           varchar(50),   --     带全路径的备份文件名     
                      @baktype           int,                   --     完全备份&增量备份     
                      @baklog             int,                   --     ‘0’备份日志     
                      @bakdb               int,                   --     ‘0’备份数据库     
                      @kind     varchar(7),                 --备份还是恢复     
      @retmsg     varchar(20)     out          --返回信息     
  AS     
        DECLARE     @DevName_data         varchar(50)     
        DECLARE     @DevName_log       varchar(50) 
        DECLARE   @db_path   varchar(100) 
        DECLARE   @log_path   varchar(100) 
   SELECT        @DevName_data  =@bakpath +  '.dat' 
   SELECT        @DevName_log  = @bakpath   +  'log.dat'
  SELECT         @db_path = @bakpath +  '.dat'     
  SELECT         @log_path= @bakpath   +  'log.dat'
        DBCC     CHECKDB(llp)     
  IF NOT  EXISTS (SELECT * FROM sysdevices WHERE NAME=@DevName_log OR NAME=@DevName_data)
        BEGIN
        EXEC   sp_addumpdevice   'disk',   @DevName_data,@db_path 
        EXEC   sp_addumpdevice   'disk',   @DevName_log,@log_path 
 IF     @kind='backup'     
        BEGIN     
                IF     @bakequip=0     
                BEGIN     
                        IF     @baktype=0     
                        BEGIN     
                                IF     @bakdb=0     
                                BEGIN         
                                        BACKUP     DATABASE     llp     TO     DISK=@Devname_data     
                                        WITH     INIT     
                                END     
                                IF     @baklog=0     
                                BEGIN                             
                                        BACKUP     LOG     llp     WITH     NO_LOG                             
                                        BACKUP     LOG     llp     TO     DISK=@DevName_log   
                                        WITH     INIT,NO_TRUNCATE     
                                END     
                        END     
                        ELSE     BEGIN     
                                IF     @bakdb=0     
                                BEGIN     
                                        BACKUP     DATABASE     llp     TO     DISK=@DevName_data 
                                        WITH     NOINIT     
                                END     
                                IF     @baklog=0     
                                BEGIN     
                                        BACKUP     LOG     llp     WITH     NO_LOG                             
                                        BACKUP     LOG     llp     TO     DISK=@DevName_log   
                                        WITH     NOINIT,NO_TRUNCATE     
                                END     
                        END                     
                END     
                SET  @retmsg='数据库备份成功!'     
        END     
        IF     @kind='restore'             
        BEGIN     
                RESTORE DATABASE llp  FROM  DISK=@DevName_data  WITH REPLACE     
                SET @retmsg='恢复数据库成功!'     
        END     
END
ELSE
  BEGIN 
  EXEC   SP_DropDevice   @Devname_data 
  EXEC   sp_dropdevice   @devname_log 
   EXEC   sp_addumpdevice   'disk',   @DevName_data,@db_path 
  EXEC   sp_addumpdevice   'disk',   @DevName_log,@log_path
        IF     @kind='backup'     
        BEGIN     
                IF     @bakequip=0     
                BEGIN     
                        IF     @baktype=0     
                        BEGIN     
                                IF     @bakdb=0     
                                BEGIN         
                                        BACKUP     DATABASE     llp     TO     DISK=@Devname_data     
                                        WITH     INIT     
                                END     
                                IF     @baklog=0     
                                BEGIN                             
                                        BACKUP     LOG     llp     WITH     NO_LOG                             
                                        BACKUP     LOG     llp     TO     DISK=@DevName_log   
                                        WITH     INIT,NO_TRUNCATE     
                                END     
                        END     
                        ELSE     BEGIN     
                                IF     @bakdb=0     
                                BEGIN     
                                        BACKUP     DATABASE     llp     TO     DISK=@DevName_data 
                                        WITH     NOINIT     
                                END     
                                IF     @baklog=0     
                                BEGIN     
                                        BACKUP     LOG     llp     WITH     NO_LOG                             
                                        BACKUP     LOG     llp     TO     DISK=@DevName_log   
                                        WITH     NOINIT,NO_TRUNCATE     
                                END     
                        END                     
                END     
                SET  @retmsg='数据库备份成功!'     
        END     
        IF     @kind='restore'             
        BEGIN     
    DECLARE hCForEach CURSOR FOR
    SELECT s='kill '+CAST(spid AS VARCHAR) FROM master..sysprocesses
    WHERE dbid=DB_ID('llp')
    EXEC sp_msforeach_worker '?'
                RESTORE DATABASE llp  FROM  DISK=@DevName_data  WITH REPLACE     
                SET @retmsg='恢复数据库成功!'     
        END     
END
        RETURN     0
GO

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值