首页SQLServerSQLSERVER备份与恢复 › 数据库备份与恢复 之六 带有FILESTREAM功能的数据库备份和恢复

数据库备份与恢复 之六 带有FILESTREAM功能的数据库备份和恢复

从SQL Server 2008开始,数据库引入了FILESTREAM这个功能。对于BLOB数据,如Images, Video, Word文档等等,可以存放在文件系统中,而不是在数据库文件里。这对数据库备份和恢复有什么影响呢。我们通过一个例子,来检查一下带有FILESTREAM功能的数据库备份和恢复方案。

 

第一步,在数据库服务级别,启动FILESTREAM,我们可以打开数据库的配置管理器,找到数据库服务,并右键点击属性。找到FILESTREAM的设置,启用FILESTREAM。然后执行下面的语句,随后重新启动数据库服务。

EXEC sp_configure filestream_access_level, 2

RECONFIGURE

 

启用FILESTREAM

第二步,把们建一个数据库TESTFSDB。由于FILESTREAM使用一种特殊类型的文件组,所以必须至少为一个文件组指定CONTAINS FILESTREAM子句。

CREATE DATABASE TESTFSDB

GO

 

ALTER DATABASE TESTFSDB

ADD FILEGROUOP [FSGroup] CONTAINS FILESTREAM

GO

 

ALTER DATABASE TESTFSDB

ADD FILE (NAME=N’FSDATA’, FILENAME=N’D:\FSData’) TO FILEGROUPFSGroup

GO

 

执行上面语句后,filestream.hdr文件和$FSLOG文件夹会出现在D:\FSData目录下。Filestream.hdr文件是FILESTREAM容器的头文件。Filestream.hdr文件是重要的系统文件,包含FILESTREAM标头信息。请不要删除或者修改此文件。事实上,这个文件已经被数据库占用,在数据库服务启动状态下,是无法删除此文件的。

 

第三步,创建一个表,表名为FSTable。要使用FILESTREAM功能,我们必须要有一个字段,类型为VARBINARY(MAX)并指定FILESTREAM属性,而且还需要有另外一个字段是UNIQUEIDENTIFIER类型并指定ROWGUIDCOL属性。

use TESTFSDB

go

CREATE TABLE FSTable

(

[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,

[FileName] NVARCHAR(100) ,

[BlobData] VARBINARY(MAX) FILESTREAM NULL

)

 

第四步,插入相应的数据。

INSERT INTO FSTable

SELECT NEWID(), 'File1', * FROM

OPENROWSET(BULK N'D:\temp\Image.jpg', SINGLE_BLOB) AS Document

 

INSERT INTO FSTable

SELECT NEWID(), 'File2', * FROM

OPENROWSET(BULK N'D:\temp\Image.jpg', SINGLE_BLOB) AS Document

数据插入后,我们可以看到,在D:\FSData文件夹子目录9ead5f8f-4e8b-459d-9e9c-205dabbee0ff下,有两个文件生成。我们可以把这两个文件复制出来,重命名为.jpg格式,然后用图形软件打开它。

 

第五步,对数据库做一个全备份和日志备份。

BACKUP DATABASE [TESTFSDB] TO DISK='C:\temp\TESTFSDB.bak'

BACKUP LOG [TESTFSDB] TO DISK='C:\temp\TESTFSDB.bak'

 

第六步,我们关闭数据库服务,并且删除整个D:\FSData文件夹和TESTFSDB数据库。随后,重新启动数据库服务,并依据TESTFSDB.bak文件对数据库TESTFSDB进行恢复。我们会发现,D:\FSData会被重新创建。并且查询表FSTable,我们能得到正确的数据。

 

通过上面的实验,我们可以知道,对于有FILESTREAM功能的数据库,在进行备份和恢复时,会自动包含FILESTREAM数据。并不需要额外做文件级别的备份和恢复。

转载本站文章请注明出处:就是他吧 http://www.94taba.com/?p=176

上一篇:

下一篇: