【IT专家网独家】SQL Server 2008推出了一个新的特性叫做数据库备份压缩。这个特性使数据库管理员可以压缩SQL Server 2008数据库备份而不是使用未压缩的本地SQL Server数据库备份或使用一个第三方工具。默认情况下,在SQL Server2008中数据库备份压缩是关闭的。现在这个特性只在SQL Server2008企业版中可用。但是,SQL Server2008的所有版本允许恢复压缩的数据库备份。

  使用数据库备份压缩特性,数据库管理员就可以执行全面的、不同的和事务型的日志压缩备份。首先它是在SQL Server实例级别的,其次它可以在备份时指定WITH COMPRESSION条件语句。这篇文章提供了对怎样配置和使用SQL Server 2008中的数据库培芬压缩特性的按步指导。

  使用GUI配置数据库备份压缩

  1. 使用SQL Server管理套件连接到SQL Server 2008实例。

  2. 在对象管理器中,右键单击服务器和选择属性来查看服务器属性窗口。

  3. 在备份和恢复下,压缩备份显示了备份压缩默认选项的当前设置。这个设置决定了服务器级别对压缩备份的默认:

  如果没有选压缩备份,新的备份在默认情况下是不压缩的。

  如果选择了压缩备份,那么新的备份在默认情况下会被压缩。

  4. 用户需要是sysadmin 或serveradmin 固定服务器角色的成员,来改变数据库备份压缩的默认设置。

SQL Server

使用TSQL配置数据库备份压缩

 

USE MASTER 
GO 
EXEC sp_configure 'backup compression default', '1' 
GO 
RECONFIGURE WITH OVERRIDE 
GO

 

      怎样使用TSQL解压一个数据库备份

  下面的TSQL代码可以用来执行解压完全本地的SampleDB 数据库备份,它的大小是277MB。完成完全的解压本地备份的时间是18.287秒。

 

BACKUP DATABASE SAMPLEDB 
TO DISK = N'D:\DatabaseBackups\SampleDB_UnCompressed.Bak' 
WITH INIT, STATS = 20

 

SQL Server

  怎样使用TSQL来执行一个压缩的数据库备份

  下面的TSQL代码可以用来对SampleDB 数据库执行完全的压缩备份。完成这个压缩完全备份所花费的时间是6.910秒。 

 

BACKUP DATABASE SAMPLEDB
TO DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
WITH INIT, STATS = 20

 


SQL Server

  在这个案例中,与本地SQL Server数据库备份相比,我们可以完成数据库备份规模的90%压缩。

  你可以运行下面的TSQL代码在压缩字段中查找一个值。如果这个值是1,那么这意味着这个数据库备份是压缩了的,如果它是0,那么它意味着这个数据库备份没有被压缩或者它是一个本地备份。

 

RESTORE HEADERONLY
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'

 

  注意:数据库备份压缩显著地提高了CPU的使用,并因此在执行数据库备份时它对其它的数据库操作有轻微的影响。你需要仔细地计划数据库备份工作可以执行备份的这个时间。

  恢复一个压缩的数据库备份

  下面的TSQL代码将从压缩的备份恢复SampleDB数据库,它的完成时间是8.565秒。

 

RESTORE FILELISTONLY
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
GO
RESTORE DATABASE SampleDB
FROM DISK = N'D:\DatabaseBackups\SampleDB_Compressed.Bak'
WITH MOVE N'SampleDB_Data'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB.mdf',
MOVE N'SampleDB_Log'
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB_1.ldf',
RECOVERY,
STATS = 20
GO

 

SQL Server

 恢复未压缩的数据库备份

  下面的TSQL代码将从未压缩的备份恢复SampleDB 数据库,它的完成时间是15.9891秒。

 


RESTORE FILELISTONLY 
FROM DISK = N'D:\DatabaseBackups\SampleDB_Uncompressed.Bak' 
GO 
RESTORE DATABASE SampleDB 
FROM DISK = N'D:\DatabaseBackups\SampleDB_Uncompressed.Bak' 
WITH MOVE N'SampleDB_Data' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB.mdf', 
MOVE N'SampleDB_Log' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\SampleDB_1.ldf', 
RECOVERY, 
STATS = 20 
GO

 

SQL Server

  用来评估数据库备份压缩的性能计算器(Performance Counters)

  处理器对象的%处理器时间计算器。

  物理磁盘对象的%磁盘时间计算器& Avg 磁盘队列长度。

  SQLServer 备份设备对象的设备吞吐量字节/秒计算器。t

  SQLServer数据库对象的备份/恢复吞吐量/秒计算器。