FileTable是SQL Server 2012的新特性之一。它是基于SQL Server 2008的FILESTREAM特性上而来的,允许我们把Windows文件存储在SQL Server中,让SQL Server可以存储非结构化的数据。也就是存是存在SQL Server中,像backup这种SQL Server这种操作也可以兼顾到,但是对于文件的访问时是通过Windows文件系统来访问的。FileTable和Windows文件的命名空间达到兼容,还可以和SQL Server的全文索引(fulltext)和语义搜索(semantic search)结合。以往我们都是通过文件服务器来管理文件,由于SQL Server提供了对文件管理的支持和整合,所以FileTable成了和应用程序相结合起来管理文件的一个好的办法,而且它又具备了一些SQL Server的特性,比如backup的支持,而应用程序可以如常的从文件系统的角度去访问文件。

和Windows达到兼容性

既然和Windows达到兼容性,那么FileTable(或者它自身具备的FileStream的特性)就应该是和具备Windows API的一些特性,如:

1)非事务型流数据访问和就地(原)文件更新;

2)层级命名空间(文件目录结构和文件);

3)文件属性,如文件创建日期和修改日期;

4)对Windows文件和目录的管理;

FileTable的结构

FileTable的结构是固定是。表中的每一行数据代表了一个文件,表中的栏位代表了文件的一些属性列,像文件创建时间和修改时间,以及文件的路径。参考FileTable Schema

我们都知道FILESTREAM是基于Windows文件系统的共享功能,那么FileTable也不例外。我们通过在FILESTREAM共享路径下创建根路径给一张FileTable。FileTable和T-SQL也是结合的,允许被更新和查询数据。

Windows文件系统和SQL Server间的整合

对FILETABLE根目录的任何改动,比如对文件的创建更新删除都会反映到FILETABLE表中。

事务性和非事务性

FileTable作为一张SQL Server表,表的数据更新是支持事务性的。但是由于对文件的操作是属于一个Windows文件系统的操作行为,是不具备事务性的。而FILESTREAM其实是支持事务性的。

FileTable和FileStream的关系

FileTable依赖于FileStream特性。FileTable本身是需要启用non-transactional access选项,但是不代表说FileStream本身是必须开启这个选项的。也就是如果我不使用FileTable,我再添加FILESTREAM FILEGROUP的时候是不需要启用non-transactional access选项。其次,FileStream可能包含FileTable的数据和其他应用程序的数据,然后FileTable的non-transactional access选项并不对其他的数据造成影响。

使用FileTable前先开启FileStream功能,这个功能要么你在安装的时候就勾选启用选项,要么你就开启server-level configuration。需要说明由于filestream功能使用了139和445端口,所以防火墙要允许139(inbound)和445(inbound)端口。

EXEC sp_configure filestream_access_level, 2
RECONFIGURE

再开启数据库的filestream功能

ALTER DATABASE JerryDB
SET FILESTREAM
(
NON_TRANSACTED_ACCESS = FULL,
DIRECTORY_NAME = N'FileTable1'
);

加入一个FILESTREAM FILEGROUP到当前数据库

ALTER DATABASE JerryDB
ADD FILEGROUP FILESTREAM_FG
CONTAINS FILESTREAM;

为当前的文件组添加一个共享路径

ALTER DATABASE JerryDB
ADD FILE
(
NAME= 'FILESTREAM_File1',
FILENAME = 'F:\Database Log Files\FILESTREAM_File1'
)
TO FILEGROUP FILESTREAM_FG;

数据库的配置完成后就可以创建filetable了。除了下面两个选项,还可以指定表的主键约束等三个约束的名字

CREATE TABLE DemoFileTable AS FILETABLE
WITH
(
FILETABLE_DIRECTORY = 'FileTable1',
FILETABLE_COLLATE_FILENAME = database_default
);
GO

创建完表之后你可以通过Windows Explorer在FileStream共享路径下新建、删除、修改文件,共享路径为

\\SERVERNAME\FILESTREAM_WINDOWS_SHARE_NAME\FILESTREAM_TABLE_NAME\FILETABLE_DIRECTORY\

结果也会反映到FileTable中。你甚至可以更新文件的名字、创建日期、修改日期等。这些改动同样会反映到文件本身的NTFS文件系统属性。

获取文件完整路径

SELECT FileTableRootPath()+[file_stream].GetFileNamespacePath(),
GetPathLocator(FileTableRootPath()+[file_stream].GetFileNamespacePath()),
path_locator
FROM [JerryDB].[dbo].[DemoFileTable]

参考:

FileTable Schema

FileTables (SQL Server)

Full Text Searches on Documents in FileTables

FileTable Feature in SQL Server 2012

转载于:https://www.cnblogs.com/jenrrychen/p/5170340.html

SQL Server - FileTable相关推荐

  1. SQL Server中的文件流

    This article will discuss SQL Server FILESTREAM including installation, configuration, enabling and ...

  2. SQL Server FILESTREAM查询和文件组

    In this series of the SQL Server FILESTREAM (see TOC at bottom), We have gone through various aspect ...

  3. SQL FILESTREAM和SQL Server全文搜索

    In this article, the latest in our series on the SQL FILESTREAM feature, we are going to look at the ...

  4. 使用SSIS包导入SQL Server FILESTREAM数据

    初始配置 (Initial configuration) We have been exploring the SQL Server FILESTREAM feature in this ongoin ...

  5. SQL Server FILESTREAM数据库损坏和修复

    This article will cover corruption and recovery scenarios in the context of SQL Server FILESTREAM in ...

  6. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引

    SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn  ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...

  7. SQL Server 的历史与发展方向

    一.SQL Server 的历史 1.婴童时期 Ashton-Tate/Microsoft SQL Server 1.0 于1988年发布.由 Ashton-Tate.Sybase 和 Microso ...

  8. SQL SERVER 自带系统存储过程分类

    目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...

  9. 【软件周刊】微软发布 Mac 版 Visual Studio,SQL Server 2016 SP1 紧跟节奏

    2019独角兽企业重金招聘Python工程师标准>>> 上周有不少关于微软的新闻,而且隔三差五就弄个大新闻.先是宣布推出针对苹果 Mac 环境的 Visual Studio for ...

最新文章

  1. 客快物流大数据项目(六):Docker与虚拟机的形象比喻及组件介绍
  2. 【MATLAB】矩阵分析之向量和矩阵的范数运算
  3. 无线可穿戴产品致胜设计六大策略
  4. python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
  5. 在ubuntu系统中删除软件的三种最佳方法
  6. c#重写了窗体的OnKeyDown事件,但是不执行
  7. python一节课多久_第一节课 python简介
  8. Eclispe创建jsp文件,提示错误:“The import Xxx cannot be resolved“的解决方案
  9. 组队训练3回放 ——hnqw1214
  10. raw socket 使用 BPF 过滤报文
  11. LncRNADisease:IncRNA相关疾病数据库简介
  12. 有哪些免费软件下载网站,安全靠谱的软件分享网站
  13. INT_MAX和INT_MIN的含义和用法
  14. java计算机毕业设计四六级在线考试系统源码+系统+数据库+lw文档+mybatis+运行部署
  15. 积化和差、和差化积公式及记忆
  16. Express-get和post
  17. 欧拉角、轴角与四元数
  18. 想要做好软件测评,在这之前这20个小技巧得知道
  19. 使用css和js实现鼠标拖尾特效
  20. 使用soapUI测试WebService

热门文章

  1. php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战
  2. 样条曲面_用SolidWorks曲面制作一个:台灯底座造型
  3. 计算机基础知识187,中职计算机基础 (187)(11页)-原创力文档
  4. python shell怎么打开测试,python脚本第一篇,运行时间测试
  5. quartz 每30秒执行一次_Net Core 使用 Quartz
  6. linux配置git(一)安装git
  7. ubuntu安装minisat_minisat 安装指南
  8. 武义机器人_喜报!武义县壶山小学获评浙江省中小学新型教学空间优秀案例
  9. quickselect java,实现快速选择
  10. wps如何保存最终状态_怎么让word显示最终状态