Windows任务计划程序备份、还原数据库

1、创建Windows任务
        控制面板 -> “查看方式”切换到“大图标”模式 -> 管理工具 -> 
        任务计划程序 -> 创建任务... -> 任务名称( backup_dbFinance) -> 切换到“操作”选项卡 -> 新建... -> 
        浏览需要执行的程序(选择新建的backup.cmd文件) -> 切换到“触发器”选项卡 -> 新建... -> 设置执行时间

2、新建backup.cmd文件,内容如下:
        sqlcmd -S iZ251rc6j9iZ -E -i d:\backup\backup.sql

        注意:
        iZ251rc6j9iZ:数据库服务器名称
        d:\backup\backup.sql:sql脚本目录地址


3、新建backup.sql文件,内容如下:
        DECLARE @BackupName VARCHAR(200)
        SET @BackupName = 'd:\backup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
        BACKUP DATABASE dbFinance 
        TO DISK = @BackupName

         注意:建议就用d:\backup目录,换了一个目录(D:\dbBackup),莫名其妙的执行失败O~~M~~G~~


4、删除30天之前备份文件:
        EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
        解释说明:
        DECLARE @OLD_DATE DATETIME  
        SET @OLD_DATE = GETDATE() - 30  
        EXECUTE MASTER.dbo.xp_delete_file   
        0,                                           --0: 备份文件,1: 维护计划文本报告  
        N'd:\backup\',                 --文件路径  
        N'bak',                                   --文件扩展名  
        @OLD_DATE,                     --在此时间之前的文件一律删除  
        1                                             --删除子文件夹中的文件 

5、新建backup.sql文件(备份 + 删除N天之前备份文件),内容如下:
        DECLARE @BackupName VARCHAR(200)
        DECLARE @OLD_DATE DATETIME
        
        SET @OLD_DATE = GETDATE() - 30
        SET @BackupName = 'd:\dbBackup\dbFinance' + convert(nvarchar(10),GETDATE(),120) + '.bak'
        
        BACKUP DATABASE dbFinance TO DISK = @BackupName
        EXECUTE master.dbo.xp_delete_file 0,N'd:\backup',N'bak',@OLD_DATE,1
        
        注意:建议就用D:\backup目录,换了一个目录(D:\dbBackup),莫名其妙的执行失败。O~~M~~G~~

6、还原数据库
        还原方法1:
        选择“数据库”三个字 -> 右键 -> 还原数据库 -> 设备 -> 浏览(...) -> 添加 -> 选择bak文件 -> 确定
        注意:如果提示错误,选择“选项”选项卡 -> 复选框选中状态“覆盖现有数据库(WITH REPLACE)(O)”


        高版本中有“关闭到目标数据库的现有连接”选项,如下图:



低版本中没有“关闭到目标数据库的现有连接”选项,如下图:



还原时可能还提示“System.Data.SqlClient.SqlError: 因为数据库正在使用,所以无法获得对数据库的独占访问权”。解决方法如下:

选中要还原的数据库 --> 右键属性 --> 选项 --> 状态 --> 限制访问 --> 

将“MULTI_USER”改为“SINGLE_USER”(此时数据库就会显示为单用户模式) --> 然后再重新执行还原数据库操作。



        还原方法2:
        RESTORE DATABASE dbArchive
        FROM DISK = N'E:\dbArchive2016-11-14.bak' WITH REPLACE, NOUNLOAD, STATS = 10

        GO


5、还原数据库时,提示还原成功,可是数据库列表提示“正在还原...”的处理办法
        RESTORE DATABASE 数据库名称 WITH RECOVERY







  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值