IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

在SQL Server 2008中配置文件流(FILESTREAM)(2)

2008年08月11日
IT专家网/

  怎样创建一个文件流数据库

  当你创建数据库时,文件流特性使用一个特殊的文件组类型。你需要在创建数据库语句中至少为一个文件组指定CONTAINS FILESTREAM 条件从句。 

Use Master
Go
IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'FileStreamDB')
DROP DATABASE FileStreamDB
GO

USE Master
GO
CREATE DATABASE FileStreamDB ON PRIMARY
  ( NAME = FileStreamDB_Data,
    FILENAME = N'D:FileStreamFileStreamDB_Data.mdf',
    SIZE = 10MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 15%),
 FILEGROUP MyDBData
  ( NAME = MyFileStream_Data,
    FILENAME = N'D:FileStreamFileStreamDB_Data.ndf',
    SIZE = 10MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 5MB),
FILEGROUP FileStream CONTAINS FILESTREAM
  ( NAME = FileStream,
    FILENAME = N'D:FileStreamFileStreamData')
LOG ON
  ( NAME = 'FileStreamDB_Log',
    FILENAME = N'D:FileStreamFileStreamDB_Log.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB);
 GO

 

  下面的图片显示了FileStreamDB数据库的属性,这个数据库是通过执行上面的语句来创建的。

SQL Server 2008

  下面的截屏显示了在D:FileStream folder下为FileStreamDB 数据库创建的文件。你将看到一个叫做FileStreamData的文件夹,它将存储所有的varbinary(max)值。

SQL Server 2008

  在D:FileStreamFileStreamData文件夹里你将看到一个叫做$FSLOG的子文件夹和一个叫做filestream.hdr的文件,这个文件是一个用于文件流容器的头文件。

SQL Server 2008

  怎样创建一个数据表来存储文件流数据

  如果一个表需要存储文件流数据,那么这个表应该定义一个ROWGUIDCOL字段。这是用于存储引擎跟踪NTFS文件系统中的实例用的。这个字段将用来存储文件流数据,它应该有varbinary(max)数据类型和FILESTREAM属性。在SQL Server 2008中,varbinary(max)数据类型可以存储超过2GB的数据。下面的TSQL查询可以用来创建FileStreamTable表:

      USE FileStreamDB
  Go
  CREATE TABLE dbo.FileStreamTable
  (   
    FS_ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
    FSData VARBINARY(MAX) FILESTREAM
  );

  怎样插入数据到FileStreamTable中

  执行下面的TSQL来插入文件流数据到FileStreamDB数据库中的FileStreamTable表中。

   USE FileStreamDB
  Go
  INSERT INTO FileStreamTable
  VALUES(newid(), CAST ('Inserting data into FileStreamTable........' As VARBINARY(MAX)))
  Go

  如果这个数据成功插入了,那么你将看到在:FileStreamFileStreamData文件夹下创建了一个新的文件夹。

  文件流的优点

  · BLOB数据现在可以保存在NTFS系统中,并且它处于SQL Server 2008的控制之下。

  · SQL Server将维护所有BLOB数据的事务一致性。

  · 对于要以FILESTREAM来存储的文件没有规模限制。只要你在磁盘上具有空间,那么你就可以存储更大的FILESTREAM文件。

  · 当激活了文件流的数据库被备份后,在指定FileStreamData文件夹下的所有BLOB文件都将被备份,它们将帮助数据库管理员轻松地管理BLOB。

  · 可以通过TSQL和具有很好流性能的NTFS流APIs轻松地访问数据。

  文件流的缺点

  · 数据库镜像不能配置在激活了文件流的数据库上。

  · 数据库快照不能快照文件流数据库中的文件流数据。

  总结

  SQL Server 2008的文件流特性帮助公司更有效地管理它们的BLOB数据,因为它们可以在NTFS文件系统中存储数据并利用SQL Server事务一致性的好处。数据库管理员现在可以轻松地进行公司的文件流数据备份,只需要对文件流数据库进行备份就可以了,不用对每一个BLOB文件进行单独备份。这使得他们可以节省很多时间,而且不会再因为没有备份一些文件而丢失数据。

发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

SQL Server2008行数据和页数据压缩解密
SQL Server2008行数据和页数据压缩解密本文将为大家介绍SQL Server 2008行数据和页数据的一些处理方法,希望能对DBA的管...
如何修改天融信NGFW4000防火墙用户认证数据库
如何修改天融信NGFW4000防火墙用户认证数据库对象本文主要是如何修改天融信NGFW4000防火墙用户认证数据库对象的介绍。...

本类热点