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]
参考:
Full Text Searches on Documents in FileTables
FileTable Feature in SQL Server 2012
SQL Server ->> FileTable的更多相关文章
- SQL Server 2012 新特性:FileTable
FileTable是基于FILESTREAM的一个特性.有以下一些功能: 一行表示一个文件或者目录. 每行包含以下信息: file_Stream流数据,stream_id标示符(GUID). 用户表示 ...
- SQL Server 2012新特性(1)T-SQL操作FileTable目录实例
在SQL Server 2008提供FileStream,以借助Windows系统本身的API来强化SQL Server对于非结构化数据的支持后,SQL Server 2012更是推出了像Contai ...
- 【转】使用SQL Server 2012的FileTable轻松管理文件
一 .FileStream和FileTable介绍 我们经常需要把结构化数据(int.Char等)和非结构化数据(如Varbinary(max))一起存储,那我们在怎么存储的呢? 1. 在SQL Se ...
- SQL SERVER 2014 各个版本支持的功能
转自:https://technet.microsoft.com/library/cc645993 转换箱规模限制 功能名称 Enterprise Business Intelligence Stan ...
- SQL Server 2012 各版本功能比较
有关不同版本的 SQL Server 2012 所支持的功能的详细信息. 功能名称 Enterprise 商业智能 Standard Web Express with Advanced Service ...
- SQL SERVER 自带系统存储过程分类
目录存储过程 用于实现 ODBC 数据字典功能,并隔离 ODBC 应用程序以使其不受基础系统表更改的影响. 变更数据捕获存储过程 用于启用.禁用.或报告变更数据捕获对象. 游标存储过程 用于实现游标变 ...
- SQL Server主要系统视图说明
SELECT * FROM sys.all_columns --显示属于用户定义对象和系统对象的所有列的联合--https://docs.microsoft.com/zh-cn/sql/relatio ...
- SQL Server Replication 总结
合并复制中,数据库架构的更改要重新生成发布端的快照 在SQL Server 合并复制中,如果在发布端做了数据库架构的更改(例如新建表,更改表结构等),原则上来说都需要重新生成发布端的快照,订阅端才能同 ...
- SQL Server 2017 on Linux
此文转载,原文地址:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-whats-new CTP 2.0 The CTP 2.0 ...
随机推荐
- es第三篇:Search APIs
大多数search API都是可以操作多个索引的,除了explain API. 当执行一个search API时,可以指定routing参数,去搜索特定的主分片及其副本分片.routing参数值可以是 ...
- Python+Selenium之常用模块
要用webdriver:from selenium import webdriver eg: driver = webdriver.Chrome() driver.maximize_wind ...
- jQuery练习 | 复选框及编辑模式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- DBA 需要掌握的知识框架及工作内容
知识框架 1. 数据库的工作原理以及体系结构 2. 数据库管理(管理数据库和数据库对象) 3. 数据库备份和恢复 4. 数据库故障处理 5. 数据库补丁安装及升级 6. 数据库性能 工作内 ...
- (转)虚拟路由器冗余协议【原理篇】VRRP详解
原文:http://blog.51cto.com/zhaoyuqiang/1166840 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的指定路由方法有两种 ...
- 关于table-layout的用法
定义:tableLayout 属性用来显示表格单元格.行.列的算法规则. 自动表格布局:auto(默认) 在自动表格布局中,列的宽度是由列单元格中没有折行的最宽的内容设定的. 此算法有时会较慢,这是由 ...
- 【linux】虚拟机内装Linux系统的ssh访问
一般在虚拟机内安装一个Linux系统,虚拟机网络设置为桥接后,Linux系统会在安装的过程中自动设置其为dhcp配置,会给其随机分配一个ip,这个ip可以用命令 "ifconfig" ...
- 【Lua】Lua + openresty遍历文件目录
OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 今天用OpenRest ...
- html的列表
1.无序列表(最常用) 先看个例子:如下图: 使用的 html标签为 <ul> <!--ul是UnorderList的缩写,意为无序列表:li是ListItem的缩写,列表项- ...
- Gradient descent and others
Batch gradient descent Procedure 在循环中跌倒公式\(\theta_j:=\theta_j-\alpha{1\over{m}}\sum_{i=1}^m(h_{\thet ...