查看完整版本: SQL Server 2005 数据库快照(database Snapshot)

猪猪 2007-2-9 22:49

SQL Server 2005 数据库快照(database Snapshot)

信息来源: softj Blog
[font=宋体][size=10pt]数据库快照([/size][/font][font=Verdana][size=10pt]atabase snapshot[/size][/font][font=宋体][size=10pt])是一个只读的,静态的数据库视图。一个数据库可以有多个数据库快照[/size][/font][font=Verdana][size=10pt],[/size][/font][font=宋体][size=10pt]每个数据库快照在被显性的删除之前将一直存在。数据库快照将保持和源数据库快照被创建时刻一致,所以可被用来做一些报表。并且由于数据库快照的存在,我们可以很容易的把数据库回复到快照创建时刻。[/size][/font]
[font=宋体][size=10pt]数据库快照提供了一个把数据库回复到一个特定时间点的有效途径。一个数据库快照将记录从这个数据库快照被创建后已经提交的所有事务,这样你在对数据库进行错误操作后也不会发出[/size][/font][font=Verdana][size=10pt]“[/size][/font][font=宋体][size=10pt]如果上天能够再给我一次机会的话,我。。。。。。[/size][/font][font=Verdana][size=10pt]”[/size][/font][font=宋体][size=10pt]的感慨。由于是只记录数据库发生的改变,也不是在当前的那一时刻数据库的状态,所以数据库文件并不会很大,如下例:[/size][/font]
[font=Verdana][size=10pt][/size][/font]
[align=left][align=left][/align][/align][align=left][align=left][font=Verdana][size=9pt]--我们先来为数据库Northwind创建一个数据库快照,命名为[color=#000000]NORTHWIND_DBSS1200,并让此数据库快照的文件存储在[font=Verdana][size=9pt]C:\NORTHWIND_DATA_1200.SS[color=#000000]文件中[/color][/size][/font][/color][/size][/font][/align][/align][font=Verdana][size=9pt]CREATE[/size][/font][font=Verdana][size=9pt] [color=blue]DATABASE[/color] NORTHWIND_DBSS1200 [color=blue]ON [/color][/size][/font]
[font=Verdana][size=9pt]([/size][/font][font=Verdana][size=9pt] [color=blue]NAME[/color] [color=gray]=[/color] NORTHWIND[color=gray],[/color] [color=blue]FILENAME[/color] [color=gray]=[/color] [/size][/font]
[font=Verdana][size=9pt]'C:\NORTHWIND_DATA_1200.SS'[/size][/font][font=Verdana][size=9pt] [color=gray]) [/color][/size][/font]
[font=Verdana][size=9pt]AS[/size][/font][font=Verdana][size=9pt] SNAPSHOT [color=blue]OF[/color] NORTHWIND[color=gray]; [/color][/size][/font]
[align=left][align=left][font=Verdana][size=9pt]GO[/size][/font][/align][/align]
[font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]可以看到这个数据库快照文件的属性,如下:可以看到现在[/size][/font][font=Verdana][size=9pt]Size on disk[/size][/font][font=宋体][size=9pt]为[/size][/font][font=Verdana][size=9pt]128K[/size][/font]

[align=left][align=left][/align][/align][font=Verdana][size=9pt]USE[/size][/font][font=Verdana][size=9pt] NORTHWIND [/size][/font]
[font=Verdana][size=9pt]GO [/size][/font]

[align=left][align=left][font=Verdana][size=9pt][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]现在Northwind数据库进行更新操作[/size][/font][/size][/font][/align][/align][font=Verdana][size=9pt]UPDATE[/size][/font][font=Verdana][size=9pt] DBO[color=gray].[/color]CUSTOMERS [/size][/font]
[align=left][align=left][font=Verdana][size=9pt]SET[/size][/font][font=Verdana][size=9pt] COMPANYNAME[color=gray]=[/color][color=red]'NEWEGG.COM'[/color][/size][/font][/align][/align][font=Verdana][size=9pt][color=red][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]可以看到现在[/size][/font][font=Verdana][size=9pt]Size on disk[/size][/font][font=宋体][size=9pt]为[/size][/font][font=Verdana][size=9pt]384K[/size][/font]
[/color][/size][/font]
[align=left][align=left][/align][/align][align=left][align=left][font=Verdana][size=9pt][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]看一下[/size][/font][font=Verdana][size=9pt]Northwind[/size][/font][font=宋体][size=9pt]数据库中被更新的列中存储的内容是已经被更新过的[/size][/font][/size][/font][/align][/align][font=Verdana][size=9pt]SELECT[/size][/font][font=Verdana][size=9pt] [color=blue]DISTINCT[/color]  COMPANYNAME [color=blue]FROM[/color] NORTHWIND[color=gray].[/color]DBO[color=gray].[/color]CUSTOMERS [/size][/font]

[font=Verdana][size=9pt]
[/size][/font][font=Verdana][size=9pt][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]看一下[/size][/font][font=Verdana][size=9pt]NORTHWIND_DBSS1200[/size][/font][font=宋体][size=9pt]数据库中被更新的列中存储的内容还是被更新以前的内容[/size][/font]
[/size][/font][font=Verdana][size=9pt]SELECT[/size][/font][font=Verdana][size=9pt] [color=blue]DISTINCT[/color]  COMPANYNAME  [color=blue]FROM[/color] NORTHWIND_DBSS1200[color=gray].[/color]DBO[color=gray].[/color]CUSTOMERS [/size][/font]

[align=left][align=left][/align][/align][align=left][align=left][font=Verdana][size=9pt]--IF AN ERROR DAMAGES A DATABASE, YOU MAY CHOOSE TO REVERT THE DATABASE TO A DATABASE SNAPSHOT THAT PREDATES THE ERROR. REVERTING OVERWRITES THE ORIGINAL SOURCE DATABASE WITH THE REVERTED DATABASE.[/size][/font] [/align][/align][font=Verdana][size=9pt]
[/size][/font][font=Verdana][size=9pt]RESTORE[/size][/font][font=Verdana][size=9pt] [color=blue]DATABASE[/color] NORTHWIND [color=blue]FROM[/color] [/size][/font]
[font=Verdana][size=9pt]DATABASE_SNAPSHOT [color=gray]=[/color] [color=red]'NORTHWIND_DBSS1200' [/color][/size][/font]
[align=left][align=left][font=Verdana][size=9pt]GO[/size][/font][/align][/align][font=Verdana][size=9pt][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]确认[/size][/font]
[/size][/font][font=Verdana][size=9pt]SELECT[/size][/font][font=Verdana][size=9pt] [color=blue]DISTINCT[/color]  COMPANYNAME [color=blue]FROM[/color] NORTHWIND[color=gray].[/color]DBO[color=gray].[/color]CUSTOMERS [/size][/font]

[font=Verdana][size=9pt]
[/size][/font][font=Verdana][size=9pt][font=Verdana][size=9pt]--[/size][/font][font=宋体][size=9pt]删除数据库快照[/size][/font]
[/size][/font][font=Verdana][size=9pt]DROP[/size][/font][font=Verdana][size=9pt] [color=blue]DATABASE[/color] NORTHWIND_DBSS1200 [/size][/font]
[font=宋体][size=9pt]从数据库快照中恢复数据库到快照创建的时刻[/size][/font]
页: [1]
查看完整版本: SQL Server 2005 数据库快照(database Snapshot)