1.简介
微软的SQL SERVER可始支持数据库文件体系,即使用数据库中的文件表表实现“共享文件夹”文件系统,是从SQL 数据库的2012 版开始提供的。比它高的版本都支持。它实现了共享文件与数据表的一致操作。
打开文件资源管理器,SQL SERVER资源管理器。在文件资源管理器中修改此共享文件夹的内容,例如创建子文件夹,新建文件,文件夹/文件改名,复制、粘贴,删除等所有操作,都会同步变化到SQL SERVER资源管理器(刷新)里。
下面的例子是用Sql Server 2014简易版实现的。
2.配置
2.1在配置管理,启用FILESTREAM设置
1. 开始菜单 –> 所有程序 –> Microsoft SQL Server 2014 –> 配置工具–>选择Configuration Tools。
2. 在服务列表中,单击 SQL Server服务器
3. 在 SQL Server配置管理器中,找到已安装的 SQL Server 实例,右键该实例 –> 点击属性

4. SQL Server属性对话框 –> FILESTREAM 选项卡
5. 勾选 Transact-SQL访问启用FILESTREAM 复选框
6. 如果要在Windows中读取和写入 FILESTREAM 数据勾选针对文件I/O流访问启用 FILESTRAM,在Windows共享名框中输入 Windows 共享名称。
这里配置后,FileTable创建好后,就可以想操作本地文件一样在FileTable中操作文件。
7. 如果希望远程访问存储在该共享中的 FILESTREAM 数据,勾选允许远程客户端针对 FILESTREAM 数据流访问

8. 应用,重启Sqlserver服务器
2.2 在Management Studio配置
— 第一步 更改FILESTRAM设置
— 更改FILESTRAM设置
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
— 重启服务器
— 第二步
–创建FileTable用到的数据库 DB
CREATE DATABASE DB
ON
PRIMARY ( NAME = DBMDF,
FILENAME = 'C:\DB\DBMDF.mdf'), -- C:\DB路径必须存在
FILEGROUP FileStreamGroupFirst CONTAINS FILESTREAM( NAME = FileTableSample,
FILENAME = 'C:\DB\DBMDFStream') -- C:\DB路径下MyFileStream文件夹必须不存在
LOG ON ( NAME = DBLDF,
FILENAME = 'C:\DB\dblog.ldf')
— 为DB数据库启用数据库非事务性访问级别
–为了允许对 SQL Server 中存储文件进行非事务性访问,须在FileTable的数据上设置数据库非事务性访问级别。
–修改数据库非事务性访问级别
ALTER DATABASE DB SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'MyDirectory' ) -- 指定数据库访问级别和指定目录名字 --查看数据库访问级别 SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc FROM sys.database_filestream_options; GO
— 在DB数据库中创建 FileTable 表,支持多个别名
use DB CREATE TABLE MyFiles AS FileTable; CREATE TABLE MyFiles2 AS FileTable; CREATE TABLE MyFiles3 AS FileTable; GO
3.在文件资源管理器验证,根目录有三级。
键入\\localhost ,看到结果:

会看到:

会看到(请进入第一个MyFiles):

这里是空的:

在这里点击右键,选择新建文件夹,等完成后进入:

在这里点击右键,选择新建文件夹,等完成后进入:
会看到,这里还是空的:

在这里点击右键,选择新建微软Word文档,使用Word进行修改并存盘:

在文件资源管理器的工作已完成,下面打开
4.在Management Studio 打开DB数据库,会看到:

鼠标右键点击第一个,选择前1000行

在文件资源管理器里打开刚才创建的数据库胡目录,C:\DB会看到:

进入 DBMDFStream,会看到刚才创建的三个文件表。

这里看的创建创建胡文件表所对应的FILESTREAM,为了提高性能,他们是独立于数据库文件单独存放的。