SQL Server - FileTable
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相关推荐
- SQL Server中的文件流
This article will discuss SQL Server FILESTREAM including installation, configuration, enabling and ...
- SQL Server FILESTREAM查询和文件组
In this series of the SQL Server FILESTREAM (see TOC at bottom), We have gone through various aspect ...
- SQL FILESTREAM和SQL Server全文搜索
In this article, the latest in our series on the SQL FILESTREAM feature, we are going to look at the ...
- 使用SSIS包导入SQL Server FILESTREAM数据
初始配置 (Initial configuration) We have been exploring the SQL Server FILESTREAM feature in this ongoin ...
- SQL Server FILESTREAM数据库损坏和修复
This article will cover corruption and recovery scenarios in the context of SQL Server FILESTREAM in ...
- SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...
- SQL Server 的历史与发展方向
一.SQL Server 的历史 1.婴童时期 Ashton-Tate/Microsoft SQL Server 1.0 于1988年发布.由 Ashton-Tate.Sybase 和 Microso ...
- SQL SERVER 自带系统存储过程分类
目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...
- 【软件周刊】微软发布 Mac 版 Visual Studio,SQL Server 2016 SP1 紧跟节奏
2019独角兽企业重金招聘Python工程师标准>>> 上周有不少关于微软的新闻,而且隔三差五就弄个大新闻.先是宣布推出针对苹果 Mac 环境的 Visual Studio for ...
最新文章
- 客快物流大数据项目(六):Docker与虚拟机的形象比喻及组件介绍
- 【MATLAB】矩阵分析之向量和矩阵的范数运算
- 无线可穿戴产品致胜设计六大策略
- python用turtle库绘制树图形_使用Python中的Turtle库绘制简单的图形
- 在ubuntu系统中删除软件的三种最佳方法
- c#重写了窗体的OnKeyDown事件,但是不执行
- python一节课多久_第一节课 python简介
- Eclispe创建jsp文件,提示错误:“The import Xxx cannot be resolved“的解决方案
- 组队训练3回放 ——hnqw1214
- raw socket 使用 BPF 过滤报文
- LncRNADisease:IncRNA相关疾病数据库简介
- 有哪些免费软件下载网站,安全靠谱的软件分享网站
- INT_MAX和INT_MIN的含义和用法
- java计算机毕业设计四六级在线考试系统源码+系统+数据库+lw文档+mybatis+运行部署
- 积化和差、和差化积公式及记忆
- Express-get和post
- 欧拉角、轴角与四元数
- 想要做好软件测评,在这之前这20个小技巧得知道
- 使用css和js实现鼠标拖尾特效
- 使用soapUI测试WebService
热门文章
- php xingnengfenxi_PHP 性能分析第三篇: 性能调优实战
- 样条曲面_用SolidWorks曲面制作一个:台灯底座造型
- 计算机基础知识187,中职计算机基础 (187)(11页)-原创力文档
- python shell怎么打开测试,python脚本第一篇,运行时间测试
- quartz 每30秒执行一次_Net Core 使用 Quartz
- linux配置git(一)安装git
- ubuntu安装minisat_minisat 安装指南
- 武义机器人_喜报!武义县壶山小学获评浙江省中小学新型教学空间优秀案例
- quickselect java,实现快速选择
- wps如何保存最终状态_怎么让word显示最终状态