标题: SQL Server 2008之备份压缩 [打印本页] 作者: superadmin 时间: 2007-12-24 14:12 标题: SQL Server 2008之备份压缩 经过漫长的等待之后,即将发布的SQL Server 2008数据库终于内置了压缩备份技术。在此之前的SQL Server 2005,等版本都只能通过第三方备份软件(如SQLZip等)进行压缩。
本文将以SQL Server 2008 的11月CTP测试版为例,为大家详细介绍如何分别在压缩和不压缩的情况下进行全备份(Full)、差异备份(Differential)和事务日志备份(Transactional log),以及怎样在默认设置下启动压缩功能。
首先让我们创建一个名为“MyDB”的数据库,如下所示:
以下是引用片段:
USE [master]
GO
/****** Object: Database [MyDB]
Script Date: 12/10/2007 01:08:14 ******/
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDB')
DROP DATABASE [MyDB]
GO
USE [master]
GO
CREATE DATABASE [MyDB] ON PRIMARY
( NAME = N'MyDB_Data',
FILENAME =
N'F:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\ MSSQL\DATA\MyDB_Data.mdf' ,
SIZE = 2176KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'MyDB_log',
FILENAME =
N'F:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\MyDB_log.LDF' ,
SIZE = 504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [MyDB] SET RECOVERY FULL
GO
接下来,在“MyDB”数据库中创建一个名为“MyTable”的表,如下所示:
USE [MyDB]
GO
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]')
AND type in (N'U'))
DROP TABLE [dbo].[MyTable]
GO
USE [MyDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTable](
[id] [int] NULL,
[name] [char](100) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
然后在“MyTable”表中添加10000行数据,如下所示:作者: superadmin 时间: 2007-12-24 14:17
USE [MyDB]
GO
declare @myid int
set @myid=1
while @myid<=10000
begin
insert into MyTable select @myid, 'A'+convert(varchar(10),@myid)
set @myid =@myid +1
end
使用下面的T-SQL指令选择数据(详见图一):
以下是引用片段:
use MyDB
go
Select * from MyTable
go
图一
在D盘创建一个Backup文件夹,如图二所示:
图二
接下来让我们进行一次全备份,如下所示(结果详见图三):
Backup Database MyDB to disk ='d:\Backup\MyDB_Full.bak' with init
图三
在“MyDB”数据库的“MyTable”表中再添加更多的数据行(例如1000行),如下所示:
以下是引用片段:
USE [MyDB]
GO
declare @myid int
set @myid=1
while @myid<=1000
begin
insert into MyTable select @myid, 'A'+convert(varchar(10),@myid)
set @myid =@myid +1
end
接下来,进行一次事务日志备份,如下所示(结果详见图四):
Backup log MyDB to disk ='d:\Backup\MyDB_TLog_1.bak' with init作者: superadmin 时间: 2007-12-24 14:26
以下是引用片段:
USE [MyDB]
GO
declare @myid int
set @myid=1
while @myid<=1000
begin
insert into MyTable select @myid, 'A'+convert(varchar(10),@myid)
set @myid =@myid +1
end
紧接着进行一次事务日志备份,如下所示(结果详见图六):
Backup log MyDB to disk ='d:\Backup\MyDB_TLog_new.bak' with COMPRESSION