博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拆分备份(还原)比较大的数据库为多个bak文件
阅读量:2230 次
发布时间:2019-05-09

本文共 2566 字,大约阅读时间需要 8 分钟。

工作中由于个别数据库比较大,生成的备份文件也比较大,不方便存储或者转移,可以将文件备份为多个小的bak文件。

比如一个200G的数据库,可以拆分备份为10个bak文件,则每个bak文件约在20G左右。

 

备份代码:

/************************************************************ * 拆分备份dbName数据库 ,数据库比较大,为了方便备份,将每个备份文件拆分为多个bak文件 * Time:   ************************************************************/   USE [master]------删除旧数据---------------------------------------------------------------1. xp_delete_file  --优点:兼容性好  --缺点:不能删除SQL Server之外创建的文件,包括RAR  --备注:维护计划中的“清理维护”也是调用此 扩展存储过程 来删除文件。  DECLARE @oldDate DATETIME  SET @oldDate = GETDATE() -0  --EXECUTE MASTER.dbo.xp_delete_file --        0,	--0: 备份文件,1: 维护计划文本报告  --     N'D:\DataBak\dbName\',	--文件路径  --     N'bak',	--文件扩展名  --     @oldDate,	--在此时间之前的文件一律删除  --     1                             --删除子文件夹中的文件   EXEC xp_cmdshell 'rd D:\DataBak\dbName',     no_output   --删除文件夹,为了清理旧备份 EXEC xp_cmdshell 'mkdir D:\DataBak\dbName',     no_output   --重新创建文件夹 DECLARE @BakCount INT DECLARE @n INT DECLARE @Sql NVARCHAR(MAX) DECLARE @FILENAME VARCHAR(500)DECLARE @DATABaseName VARCHAR(500)DECLARE @DATABakPath VARCHAR(500)SET @DATABakPath = 'D:\DataBak\'SET @BakCount = 5  --要拆分的数据库个数SET @DATABaseName = 'dbName'SET @n = 1SET @FILENAME = REPLACE(        REPLACE(            REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''),            ' ',            ''        ),        ':',        ''    ) + '';DECLARE @exeText VARCHAR(100)SET @exeText = 'mkdir ' + + @DATABakPath + @DATABaseName + '\' + @FILENAME --创建备份目录 EXEC xp_cmdshell @exeText,     no_output    SET @Sql = 'BACKUP DATABASE dbName TO DISK = N''' + @DATABakPath + @DATABaseName + '\' + @FILENAME + '\' +     @DATABaseName + '_' + @FILENAME + '_0.bak'''WHILE @n < @BakCountBEGIN    SET @Sql = @Sql + ',	DISK = N''' + @DATABakPath + @DATABaseName + '\' + @FILENAME + '\' +         @DATABaseName + '_' + @FILENAME + '_' + CONVERT(VARCHAR, @n) + '.bak'''        SET @n = @n + 1ENDEXEC (@Sql)   PRINT '-----------备份' + @DATABaseName + '完成---------------------' + CONVERT(VARCHAR(100), GETDATE(), 126)+ '---------------'

还原代码:

/***还原拆分备份的文件  文件如果比较多 可以参考备份代码 循环处理*****/RESTORE DATABASE dbName FROM DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_0.bak',DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_1.bak',DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_2.bak',DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_3.bak',DISK = 'E:\DataBak\dbName\20181101201523\dbName_20181101201523_4.bak' WITH MOVE 'dbName' TO 'D:\SqlDataBase\dbName.mdf',      MOVE 'dbName_log'      TO 'D:\SqlDataBase\dbName_log.ldf',     STATS = 5

 

转载地址:http://vokbb.baihongyu.com/

你可能感兴趣的文章
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>