欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL Server 2008中的FileStream介绍

程序员文章站 2023-02-19 23:08:55
很多朋友并不知道filestream 这个功能。因为filestream 一般在安装的时候默认是不启用的,在sql server 2008中,引入了filestream,使...

很多朋友并不知道filestream 这个功能。因为filestream 一般在安装的时候默认是不启用的,在sql server 2008中,引入了filestream,使用它可以将非机构化大型数据(如文本文档、图像和视频)等以varbinary(max)的形式存储在文件系统中。使用数据库的备份还原功能可以将这些数据一起备份还原。

在选择数据库文件路径那个窗口,有一个标签是"filestream"。如果在安装的时候你没有启用,安装后可以通过以下设置来开启filestream 功能。

1. 打开 sql server 配置管理器, 在sql server 服务下找到你要启用的sql server服务(默认实例一般是 mssqlserver),右击该服务,选择属性,在属性窗口你可以看到filestream 标签,选中" 针对 transact-sql 访问启用 filestream"

2.执行以下命令在ssms

复制代码 代码如下:

exec sp_configure filestream_access_level, 2
reconfigure

3.创建支持filestream 的数据库

复制代码 代码如下:
[sql]
  create database test
  on
  ( name = test_dat,
  filename = 'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\testdat.mdf' ),
  filegroup testgroup1 contains filestream
  ( name = testgroup_dat ,
  filename = 'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\testgroup1.ndf')
  log on
  ( name = sales_log,
  filename = 'c:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\testlog.ldf' ) ;

  当然你也可以用以下脚本,在已存在的数据库添加一个文件组用于支持filestream.
复制代码 代码如下:

  [sql]
  alter database test
  add filegroup filestreamrecord
  contains filestream
  go
  --add a file for storing database photos to filegroup
  alter database test
  add file
  (
  name= 'filestreamrecord',
  filename = 'd:\program files\microsoft sql server\mssql11.mssqlserver\mssql\data\testfilestreamrecord.ndf'
  )
  to filegroup filestreamrecord
  go

4. 创建可以存储filestream 的数据表
复制代码 代码如下:

  create table filestreamrecording
  [sql]
  (
  id int,
  rowguidcolumn uniqueidentifier
  not null unique rowguidcol,
  filestreamcolumn varbinary(max) filestream
  );
  [sql]
  [sql]

5.使用
复制代码 代码如下:
[sql]
  insert into filestreamrecording values(1, newid(), 0x00);
  insert into filestreamrecording values(2, newid(), 0x00);
  insert into filestreamrecording values(3, newid(), 0x00);
  go
  select filestreamcolumn.pathname() as 'pathname' from filestreamrecording;

具体的使用可参考联机帮助或在线帮助。