原文地址html
当完整备份数据库的时候,咱们有时候可能会遇到一种极端状况,好比服务器上C,D,E三个盘符都只剩下5G空间了数据库
可是若是要完整备份业务库须要12G的空间,那么这时候怎么办呢?服务器
使用文件组备份吗?可是数据库没有作表分区,没有分多个文件组,就只有一个主文件组啊spa
这时候咱们可使用备份文件分割3d
我使用本身机器示范一下,个人机器上有一个Temp2的数据库,数据库大小为1GBcode
备份htm
咱们作一个Temp2数据库的完整备份blog
DECLARE @CurrentTime VARCHAR(50), @FileName VARCHAR(200) SET @CurrentTime = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-','_'),' ','_'),':','') --(Temp2 数据库完整备份) SET @FileName = 'C:\Temp2_FullBackup_' + @CurrentTime+'.bak' BACKUP DATABASE [Temp2] TO DISK=@FileName WITH FORMAT
能够看到须要31MB大小get
那么如何分割备份文件呢?方法很简单it
刚才是备份到C盘,如今咱们备份到C盘和D盘
DECLARE @CurrentTime VARCHAR(50), @FileName VARCHAR(200),@FileName2 VARCHAR(200) SET @CurrentTime = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-','_'),' ','_'),':','') --(Temp2 数据库完整备份) SET @FileName = 'C:\Temp2_FullBackup_Partial1_' + @CurrentTime+'.bak' SET @FileName2 = 'D:\Temp2_FullBackup_Partial2_' + @CurrentTime+'.bak' BACKUP DATABASE [Temp2] TO DISK=@FileName, DISK=@FileName2 WITH FORMAT
C盘
D盘
能够看到每一个备份文件的大小是平均的,都是16MB,若是是分红3个备份文件,那么就除以3,就是每一个备份文件的大小
固然,若是你要查询备份文件的信息,不管查询哪一个备份文件都是能够查询出来的
RESTORE FileListOnly From Disk='C:\Temp2_FullBackup_Partial1_2014_12_19_150533.bak' RESTORE FileListOnly From Disk='D:\Temp2_FullBackup_Partial2_2014_12_19_150533.bak' RESTORE HeaderOnly From Disk='C:\Temp2_FullBackup_Partial1_2014_12_19_150533.bak' RESTORE HeaderOnly From Disk='D:\Temp2_FullBackup_Partial2_2014_12_19_150533.bak'
还原
USE [master] RESTORE DATABASE [Temp2] FROM DISK = N'D:\Temp2_FullBackup_Partial1_2014_12_19_150533.bak', DISK = N'D:\Temp2_FullBackup_Partial2_2014_12_19_150533.bak' WITH FILE = 1, MOVE N'Temp' TO N'E:\DataBase\Temp2.mdf', MOVE N'Temp_log' TO N'E:\DataBase\Temp2_log.ldf', NOUNLOAD, REPLACE, STATS = 5 GO
还原的时候只须要指定全部的备份分割文件的路径就能够了,固然咱们通常在服务器搬迁的时候都会把这些备份文件一块儿放到新服务器的同一个盘符下面,方便还原
而不会一个放C盘,一个放D盘,一个放E盘
还原好了,咱们查询一下数据
还原出来的数据库没有问题,能够收工了
总结
有时候当服务器的任何一个盘符的空间都不足以放下一个完整备份文件,可是又急须要作一个完整备份,那么能够采起这种办法
固然,你也能够插入一个移动硬盘,将数据库备份到一个移动硬盘里去,可是当你作集群搬迁,只能远程到服务器去作备份的时候,这种办法就比较有用了
还有一个就是不须要用winrar等压缩软件来压缩分包了,SQL Server自己就能够作