您的位置: 网界网 > 软件 > 正文

将SQL Server备份拆分成多个文件

2013年04月29日 21:08:34 | 作者:Ashish Kumar Mehta | 来源:TechTarget中国 | 查看本文手机版

摘要:本文介绍了将SQL Server备份拆分成多个文件的方法,这样可以减少备份时间,并使用多个驱动器来存储备份文件。

标签
SQL
备份拆分
数据库备份

数据库的大小随着业务扩大而不断增长,作为一个DBA应确保按时完成数据库备份

然而有些情况下,特定的驱动器上没有足够的空间来容纳整个SQL Server备份,或者数据库备份需要很长时间才能完成。解决这一问题的方法是将SQL Server备份拆分成多个文件以减少备份时间,并使用多个驱动器来存储备份文件。

为什么要拆分数据库备份?

1、通过将数据库备份拆分为多个文件,可以实现更快的数据库备份。数据库备份写入位于多个驱动器上的多个文件中,即可轻松实现更高的I/O,从而减少执行数据库备份所需的时间。

2、使用“拆分文件备份”选项,可以很容易地将大的备份文件拆分为多个大小相同的文件。

3、由于将数据库备份拆分成多个文件,每个文件将更小,DBA可以轻松地通过网络复制文件或复制到磁带中。

4、打开SQL Server管理控制台、展开“Databases”节点,然后右键单击想要以拆分文件方式进行完全备份的数据库,然后单击“Tasks”-“Back Up…”,如下面的屏幕快照所示。

1、在“Back Up Databases”对话框中,单击“Add...”按钮,在“Destination”区域中指定数据库备份文件的路径。在下面的屏幕快照中,可以看到 AdventureWorks2008R2数据库将备份拆分为两个文件。第一个条带化备份文件驻留在C盘上,第二个条带化备份文件驻留在D盘上。通过为备份文件指定两个不同的驱动器,可以减少数据库备份所需的时间。也就是说,SQL Server将使用多个线程同时执行备份。当选择条带化的数据库备份时,每个备份文件的大小完全相同,这有助于更有效地利用磁盘空间。假设,数据库完全备份的大小是10GB,你想要拆分备份文件并且每个文件的大小不能超过2GB。在执行备份时,可以将备份文件拆分写入到5个不同的文件上。完成备份后,你会发现每个文件大约是2GB的大小。

2、最后,单击“Backup Database”对话框中的“OK”按钮,启动条带化的数据库备份。备份成功后,将看到类似下面屏幕快照中所示的对话框。

请注意:如果使用的是SQL Server 2008企业版、SQL Server 2008 R2、SQL Server 2012的标准版或企业版,你甚至可以利用内置的数据库备份压缩功能来进一步减少数据库备份的大小。

使用以下所示的T-SQL代码,可以将AdventureWorks2008R2数据库的完全备份拆分成两个备份文件。

BACKUP DATABASE [AdventureWorks2008R2] TO DISK = N'C:\DBBackups\AdventureWorks2008R2_SplitFile1.BAK', DISK = N'D:\DBBackups\AdventureWorks2008R2_SplitFile2.BAK' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2008R2-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,STATS = 10

GO

3、打开SQL Server管理控制台;右键单击“Database”节点(+微信关注网络世界),然后从下拉菜单中选择“Restore Databases …”选项,如下面的屏幕快照中所示。

4、在“Restore Databases”对话框中,指定目标数据库的名称,在“From Device”输入框中指定恢复源并选择“Restore”复选框,如下面的屏幕快照中所示。需要注意的一个重要问题是要成功还原数据库需要两个数据库备份文件。

5、最后,在“Restore Database”对话框中单击“OK”按钮,启动从条带化的备份文件中还原数据库。一旦还原成功,你将会看到一个类似于下图所示的对话框。

如果在执行完整备份时没有指定两个拆分文件,那么最终会得到如下所示的错误消息。因此,需要确保两个拆分数据库备份的文件都安全完整,以便能在数据库发生故障时能够成功还原数据库。

Error Message

Msg 3132, Level 16, State 1, Line 1

The media set has 2 media families but only 1 are provided. All members must be provided.

Msg 3013, Level 16, State 1, Line 1

RESTORE DATABASE is terminating abnormally.

从多个文件中还原数据库

使用下面的T-SQL代码,可以从多个拆分文件中还原数据库:

RESTORE DATABASE [RestoreDatabaseFromSplitFiles] FROM DISK = N'C:\DBBackups\AdventureWorks2008R2_SplitFile1.BAK', DISK = N'D:\DBBackups\AdventureWorks2008R2_SplitFile2.BAK' WITH FILE = 1, MOVE N'AdventureWorks2008R2_Data' TO N'D:\DB\RestoreDatabaseFromSplitFiles_Data.mdf', MOVE N'AdventureWorks2008R2_Log' TO N'D:\DB\RestoreDatabaseFromSplitFiles_Log.LDF', NOUNLOAD, STATS = 10

GO

[责任编辑:软件频道 yu_xiang@cnw.com.cn]