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

日期: 2013-04-21 作者:Ashish Kumar Mehta翻译:沈宏 来源:TechTarget中国 英文

数据库的大小随着业务扩大而不断增长,作为一个DBA应确保按时完成数据库备份。   然而有些情况下,特定的驱动器上没有足够的空间来容纳整个SQL Server备份,或者数据库备份需要很长时间才能完成。解决这一问题的方法是将SQL Server备份拆分成多个文件以减少备份时间,并使用多个驱动器来存储备份文件。   为什么要拆分数据库备份?   1、通过将数据库备份拆分为多个文件,可以实现更快的数据库备份。

数据库备份写入位于多个驱动器上的多个文件中,即可轻松实现更高的I/O,从而减少执行数据库备份所需的时间。   2、使用“拆分文件备份”选项,可以很容易地将大的备份文件拆分为多个大小相同的文件。  ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

数据库的大小随着业务扩大而不断增长,作为一个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:DBBackupsAdventureWorks2008R2_SplitFile1.BAK', DISK = N'D:DBBackupsAdventureWorks2008R2_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:DBBackupsAdventureWorks2008R2_SplitFile1.BAK', DISK = N'D:DBBackupsAdventureWorks2008R2_SplitFile2.BAK' WITH FILE = 1, MOVE N'AdventureWorks2008R2_Data' TO N'D:DBRestoreDatabaseFromSplitFiles_Data.mdf', MOVE N'AdventureWorks2008R2_Log' TO N'D:DBRestoreDatabaseFromSplitFiles_Log.LDF', NOUNLOAD, STATS = 10
  GO

作者

Ashish Kumar Mehta
Ashish Kumar Mehta

数据库管理器等相关领域资深作者。在数据库管理、性能调优、数据库开发和Microsoft SQL Server等技术培训方面有超过十年的丰富经验。

翻译

沈宏
沈宏

相关推荐