(一)FileTable介绍
FileTable 功能为 SQL Server 中存储的文件数据提供对 Windows 文件命名空间的支持以及与 Windows 应用程序的兼容性支持。 FileTable 使得应用程序可以集成其存储和数据管理组件,可对非结构化数据和元数据提供集成的 SQL Server 服务(包括全文搜索和语义搜索)。
换言之,您可以在 SQL Server 中将文件和文档存储在称作 FileTable 的特别的表中,但是从 Windows 应用程序访问它们,就好像它们存储在文件系统中,而不必对您的客户端应用程序进行任何更改。
FileTable 功能是在 SQL Server FILESTREAM 技术的基础上生成的。
FileTable 将消除使用 SQL Server 来存储和管理非结构化数据的一个巨大障碍,这些数据目前作为文件存储在文件服务器上。 企业可以将这些数据从文件服务器移到 FileTable,以利用 SQL Server 提供的集成管理和服务。 同时,它们可以保持现有 Windows 应用程序的 Windows 应用程序兼容性,将这些数据视为文件系统中的文件。
注意事项
FileTable 不支持内存映射文件。 “记事本”和“画图”是两个常见的使用内存映射文件的示例应用程序。 不能在 SQL Server 所在的计算机上使用这些应用程序来打开存储在 FileTable 中的文件。 但是,可以从远程计算机使用这些应用程序来打开存储在 FileTable 中的文件,因为在这些情况下不使用内存映射功能。
参考:http://msdn.microsoft.com/zh-cn/library/ff929144.aspx
(二)启用FileTable之前的先决条件及filetable配置
FileTable 扩展了 SQL Server 的 FILESTREAM 功能。 因此,在创建和使用 FileTable 前,必须在 Windows 级别和 SQL Server 实例上启用 FILESTREAM 用于文件 I/O 访问。
1、在实例级别启用filestream
在“开始”菜单中,依次指向“所有程序”、SQL Server 2014、“配置工具”,然后单击“SQL Server 配置管理器”。
在服务列表中,右键单击“SQL Server 服务”,然后单击“打开”。
在“SQL Server 配置管理器”管理单元中,找到要在其中启用 FILESTREAM 的 SQL Server 实例。
右键单击该实例,然后单击“属性”。
在“SQL Server 属性”对话框中,单击“FILESTREAM”选项卡。
选中“针对 Transact-SQL 访问启用 FILESTREAM”复选框。
如果要在 Windows 中读取和写入 FILESTREAM 数据,请单击“针对文件 I/O 流访问启用 FILESTREAM”。 在“Windows 共享名”框中输入 Windows 共享的名称。
如果远程客户端必须访问存储在此共享中的 FILESTREAM 数据,请选择“允许远程客户端针对 FILESTREAM 数据启用流访问”。
单击“应用”。
在 SQL Server Management Studio 中,单击“新建查询”以显示查询编辑器。
在查询编辑器中,输入以下 Transact-SQL 代码:
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
单击“执行”。
重新启动 SQL Server 服务。
最佳实践:http://msdn.microsoft.com/zh-cn/library/cc645923.aspx
2、将防火墙配置为进行 FILESTREAM 访问
若要在防火墙保护的环境中使用 FILESTREAM,客户端和服务器都必须能够将 DNS 名称解析为包含 FILESTREAM 文件的服务器。 FILESTREAM 要求 Windows 文件共享端口 139 和 445 处于打开状态。
例:在运行 Windows 7 的计算机上打开 Windows 文件共享端口
在“控制面板”中,打开“Windows 防火墙”。
在左窗格中,单击“高级设置”。 如果系统提示您输入管理员密码或进行确认,请键入密码或提供确认。
在“高级安全 Windows 防火墙”对话框的左窗格中,单击“入站规则”,然后在右窗格中单击“新建规则”。
按照“新建入站规则”向导中的说明添加 TCP 端口 139。
重复上述步骤添加 TCP 端口 445。
关闭“高级安全 Windows 防火墙”对话框。
4、创建启用了 FILESTREAM 的数据库
数据库必须首先具有 FILESTREAM 文件组,然后您才能在该数据库中创建 FileTable。
对于 FILESTREAM 文件组,FILENAME 引用一个路径。 最后一个文件夹的路径必须存在,但最后一个文件夹不能存在。 在该示例中,c:\data 必须存在。 但是,在执行 CREATE DATABASE 语句时,filestream1 子文件夹不能存在。
例如:这里我创建了一个启用了filestream的数据库:archive
在运行上面的示例后,filestream.hdr 文件和 $FSLOG 文件夹将出现在 c:\Data\filestream1 文件夹中。
filestream.hdr 文件是 FILESTREAM 容器的头文件。filestream.hdr 文件是重要的系统文件。 它包含 FILESTREAM 标头信息。 请勿删除或修改此文件。
通过SSMS来查看创建完成的数据库,如图所示。
查看该数据库的文件组属性,如图所示。
5、 在数据库级别启用非事务性访问并配置filetable的存放目录
FileTable 使 Windows 应用程序可以获取 FILESTREAM 数据的 Windows 文件句柄而不需要事务。 为了允许对 SQL Server 中存储的文件进行此非事务性访问,您必须为要包含 FileTable 的每个数据库在数据库级别上指定所需的非事务性访问级别。
执行下面的命令来检查是否已经启用了非事务性的访问,如图,并没有数据库启用非事务性访问,状态都为OFF。
非事务性访问的可用级别为 FULL、READ_ONLY 和 OFF。我们可以使用下面的语句来启用。如图。
下图的命令实际上在启用archive数据库的非事务性的访问的同时,也创建了一个文件表的存放目录:filetable002,如图。
设置现有数据库的非事务性访问级别和存放目录完成后,再查询如图。
5、创建一个filetable
使用下图的语句在archive数据库中创建filetable,如图。
表的名称为documentstore
表存放的文件夹为document
创建完成后如图所示。
这里,我们直接右击创建好的filetable,选择浏览filetable目录,如图。
可以直接使用windows资源管理器来浏览该目录,同时也可以直接在目录中新建、删除文档,如图。
变化的目录和文件同时反映在文件表中.
注意:filetable的存放文件夹为document,该文件夹默认自动放在filetable的存放目录filetable002下面。
完整的路径为\\sqltest\mssqlserver\filetable002\document
即:\\计算机名称\实例名称\文件表存放目录
关于文件表的内容就学习到这里,更多内容请参考:
http://msdn.microsoft.com/zh-cn/library/gg509097.aspx