[SQLServer大对象]——FileTable初体验
阅读导航
在我接触FileTable之前,存储文件都是存储文件的链接和扩展名到数据,其实并没有实际的把文件存储到数据库。
FileTable不同于一般的表,他可以存储非结构数据和元数据(如:文件、文档),存储的文件可以像普通的文件一样通过一个路径被访问,而且不必对客户端程序修改。
FileTable 不支持内存映射文件。 “记事本”和“画图”是两个常见的使用内存映射文件的示例应用程序。 不能在 SQL Server 所在的计算机上使用这些应用程序来打开存储在 FileTable 中的文件。 但是,可以从远程计算机使用这些应用程序来打开存储在 FileTable 中的文件,因为在这些情况下不使用内存映射功能
启用FILESTREAM设置
1. 开始菜单 –> 所有程序 –> Microsoft SQL Server Code-Named 2012 –> 配置工具 –>选择SQL配置管理器。
当然这么一个接着一个的用鼠标点,有点不像搞IT的同学,那么专业一点,使用命令 SQLServerManager10.msc,如果是SQL2005使用 SQLServerManager.msc 打开。
2. 在服务列表中,单击 SQL Server服务器
3. 在 SQL Server配置管理器中,找到 FILESTREAM 的 SQL Server 实例,右键该实例 –> 点击属性
4. SQL Server属性对话框 –> FILESTREAM 选项卡
5. 勾选 Transact-SQL访问启用FILESTREAM 复选框
6. 如果要在Windows中读取和写入 FILESTREAM 数据勾选针对文件I/O流访问启用 FILESTRAM,在Windows共享名框中输入 Windows 共享名称。
这里配置后,FileTable创建好后,就可以想操作本地文件一样在FileTable中操作文件。
7. 如果希望远程访问存储在该共享中的 FILESTREAM 数据,勾选允许远程客户端针对 FILESTREAM 数据流访问
8. 应用

更改FILESTRAM设置
在SQL Server Managerment studio中,使用Transact-SQL修改配置
1: EXEC sp_configure filestream_access_level, 2
2: RECONFIGURE
执行之后,需要重新启动 SQL Server 服务
创建启动 FILESTRAM 的数据库
在SQL Server Managerment studio中,使用Transact-SQL创建数据库
1: CREATE DATABASE Archive
2: ON
3: PRIMARY ( NAME = ArchiveMDF,
4: FILENAME = 'C:\MyData\archdat.mdf'), -- C:\MyData路径必须存在
5: FILEGROUP FileStreamGroupFirst CONTAINS FILESTREAM( NAME = ArchiveFILESTREAM,
6: FILENAME = 'C:\MyData\MyFileStream') -- C:\MyData路径下MyFileStream文件夹必须不存在
7: LOG ON ( NAME = ArchiveLDF,
8: FILENAME = 'C:\MyData\archlog.ldf')
9: GO
运行该脚本后
C:\MyData\MyFileStream 文件夹中会出现filestream.hdr 文件和 $FSLOG 文件夹。filestream.hdr 文件是重要的系统文件,它包含 FILESTREAM 头信息。
启用数据库非事务性访问级别
为了允许对 SQL Server 中存储文件进行非事务性访问,须在FileTable的数据上设置数据库非事务性访问级别。
修改数据库非事务性访问级别
1: ALTER DATABASE Archive
2: SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'MyDirectory' ) -- 指定数据库访问级别和指定目录名字
创建数据库时设置非事务性访问级别
1: CREATE DATABASE Archive
2: WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'MyDirectory' )-- 指定数据库访问级别和指定目录名字
查看数据库访问级别
1: SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
2: FROM sys.database_filestream_options;
3: GO
FileTable
FileTable 是用户表,具有预定义的结构,为了存储 FILESTREAM 数据、文件和目录信息以及文件属性。因此,创建 FileTable 时不需要指定列,但也可以指定,在此我只用最简单的方式创建和使用FileTable。
不指定用户定义值
1: CREATE TABLE DocumentStores AS FileTable;
2: GO
指定用户定义值
1: CREATE TABLE DocumentStores AS FileTable
2: WITH
3: (
4: FileTable_Directory = 'DocumentStores',
5: FileTable_Collate_Filename = database_default
6: );
7: GO
在没有指定用户定义值时,FILETABLE_DIRECTORY 的值将为 FileTable 的名称,FILETABLE_COLLATE_FILENAME 的值仍为database_default。
此时,就可以在数据库Archive的数据库 –> Tables –> FileTables,可以看到之前创建的FileTable表DocumentStores
在FileTable上右键 –> 浏览,可以直接复制文件到这个目录,图中我新建一个文本文档。

也可以使用语句进行查询

FileTable注意
不能将现有表转换为FileTable。
必须完成上面的步骤启用FILESTREAM设置和更改FILESTRAM设置。
由于FileTable 包含一个 FILESTREAM 列,因此FileTable 需要有效的 FILESTREAM 文件组。
不能在tempdb或任何其他系统数据库中创建FileTable。
不能将FileTable作为临时表。
不能更改 FILETABLE_COLLATE_FILENAME 的值。
不能更改、删除或禁用 FileTable 系统定义的列。
不能将新的用户列、计算列或持久化计算列添加到 FileTable。
删除FileTable时,将删除 FileTable 的所有列以及与该表关联的所有对象,如索引、约束和触发器。
删除FileTable时,FileTable 目录及其子目录将从数据库的 FILESTREAM 文件和目录层次结构中消失。
[SQLServer大对象]——FileTable初体验的更多相关文章
- [SQLServer大对象]——FileTable初体验 (转载)
阅读导航启用FILESTREAM设置更改FILESTRAM设置启用数据库非事务性访问级别FileTable 在我接触FileTable之前,存储文件都是存储文件的链接和扩展名到数据,其实并没有实际的把 ...
- [SQLServer大对象]——FileTable从文件系统迁移文件
阅读导航 从文件系统中迁移文件到FileTable 批量加载文件到FileTable 如何批量加载文件到FileTable 通过博文[SQLServer大对象]——FileTable初体验,已经可以将 ...
- FileTable初体验
FileTable初体验 阅读导航 启用FILESTREAM设置 更改FILESTRAM设置 启用数据库非事务性访问级别 FileTable 在我接触FileTable之前,存储文件都是存储文件的链接 ...
- Scrapy初体验(一) 环境部署
系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- EF Code First 初体验
Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...
- python窗体——pyqt初体验
连续两周留作业要写ftp的作业,从第一周就想实现一个窗体版本的,但是时间实在太短,qt零基础选手表示压力很大,幸好又延长了一周时间,所以也就有了今天这篇文章...只是为了介绍一些速成的方法,还有初学者 ...
随机推荐
- 树莓派安装Transmission-daemon出现的问题
1,安装时发现默认的源里面没有transmission-daemon包 pi@fynn:/etc/apt/sources.list.d $ sudo apt-get install transmiss ...
- 分布式事务操作之Spring+JTA
什么是分布式事务?在网上找了一段比较容易理解的"定义". 分布式事务是指事务的参与者.支持事务的服务器.资源管理器以及事务管理器分别位于分布系统的不同节点之上,在两个或多个网络计算 ...
- vs2015 无法启动IIS Express Web服务器
今天在VS2015上装了 之后无法启动IIS Express Web服务器. 然后我去查看了windows日志发现vs创建的虚拟目录不见了(至于是不是以上原因导致的没去查明) 然后在vs2015中点击 ...
- OD使用教程3
reverseMe爆破: 跳转指令 让跳转已实现,把z的1改成0 按F8走,继续把z的1改成0,实现跳转 根据跳转指令,改变s或o,使跳转不实现 指令如上使跳转不实现 继续按f8往下走然后成功
- 再牛逼的梦想,也抵不住SB似的坚持
说起梦想,哪都是好几年前的事了.自从毕业之后,梦想不知道去哪了.可能一次次的失败,找不到了梦想的方向了吧! 自从毕业去了深圳,为了能够在这个城市安稳下来,白天正常上班晚上在街上摆地摊给人下载音乐和电影 ...
- android调用系统相机并获取图片
如果不是特别的要求,通过拍照的方式取得图片的话,我们一般调用系统的拍照来完成这项工作,而没必要再自己去实现一个拍照功能.调用系统相机很简单,只需要一个intent就可以跳转到相几界面,然后再通过onA ...
- html5+css3 制作音乐播放器
//css// body , html{ margin:0; padding:0; font:12px Arial, Helvetica, sans-serif; } .Mus ...
- Pair Project:电梯控制程序
12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自 ...
- eclipse maven testng
安装过程: 1.eclipse官网下载:
- 【OC基础语法考试】
OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...