SqlServer2012 File Table文件表
SQL Server 2012 提供一种特殊的“文件表”,也称为“FileTable”。 FileTable 是一种专用的用户表,它包含存储 FILESTREAM 数据的预定义架构以及文件和目录层次结构信息、文件属性。FileTable 功能为 SQL Server 中存储的文件数据提供对 Windows 文件命名空间的支持以及与 Windows 应用程序的兼容性支持。即可以在 SQL Server 中将文件和文档存储在称作 FileTable 的特别的表中,但是从 Windows 应用程序访问它们,就好像它们存储在文件系统中,而不必对客户端应用程序进行任何更改。
在实例级别启用 FILESTREAM:(参考 启用和配置 FILESTREAM )
右键SQLserver服务——属性——FILESTREAM ——勾选——重启服务
更改此 SQL Server 实例的 FILESTREAM 访问级别 :(参考 filestream access level 服务器配置选项)
1
2
|
exec sp_configure N 'filestream access level' ,2
reconfigure with override
|
可能需要配置将防火墙配置为进行 FILESTREAM 访问。
数据库级别创建 FILESTREAM 文件组:
数据库必须首先具有 FILESTREAM 文件组,然后您才能在该数据库中创建 FileTable。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-- 创建数据库时创建 FILESTREAM 文件组
CREATE DATABASE FileStreamDB
ON
PRIMARY (
NAME = FileStreamDB,
FILENAME = 'G:\database\FileStreamDB.mdf' ,
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB
),
FILEGROUP FileStreamGroup CONTAINS FILESTREAM(
NAME = FileStreamFile,
FILENAME = 'G:\database\FileStreamFile' ,
MAXSIZE = 50 MB
)
LOG ON (
NAME = FileStreamDB_log,
FILENAME = 'G:\database\FileStreamDB_log.ldf'
)
WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL , DIRECTORY_NAME = N 'FileStreamPath' )
GO
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-- 或者在当前数据库中添加 FILESTREAM 文件组
ALTER DATABASE [AdventureWorks2012]
ADD FILEGROUP FileStreamGroup CONTAINS FILESTREAM;
ALTER DATABASE [AdventureWorks2012]
ADD FILE
(
NAME = FileStreamFile,
FILENAME = 'G:\database\FileStreamFile' ,
MAXSIZE = 50 MB
)
TO FILEGROUP FileStreamGroup
GO
|
创建文件时 filename 只指定目录,并且目录 FileStreamFile 在文件系统不存在,创建后会自动生成该目录文件夹
在数据库级别上指定 非事务性访问级别 和 FileTable目录(数据库须独占):
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 在数据库级别上指定 非事务性访问级别 和 FileTable目录(数据库须独占)
ALTER DATABASE [AdventureWorks2012]
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL , DIRECTORY_NAME = N 'FileStreamPath' )
-- 启用后即可查看到其状态信息
SELECT DB_NAME(database_id) [ database ],non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options
WHERE non_transacted_access_desc <> 'OFF'
SELECT DB_NAME(database_id) [ database ],directory_name
FROM sys.database_filestream_options
WHERE directory_name IS NOT NULL
|
将新表创建为 FileTable :(参考 CREATE TABLE (Transact-SQL) )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
USE [AdventureWorks2012]
GO
CREATE TABLE [DocumentStore]
AS FileTable
WITH (
--文件目录,不区分大小写,不指定则为filetable名称[DocumentStore]
FileTable_Directory = N 'FileStreamPath' ,
FileTable_Collate_Filename = database_default --排序规则
);
GO
-- 更改目录
ALTER TABLE [DocumentStore]
SET ( FILETABLE_DIRECTORY = N 'FileStreamPath' );
GO
|
每个目录创建都会在文件系统中生成一个文件夹:
相关查询:(FileTable 架构)
1
2
3
4
5
6
7
8
9
|
-- 查看 FileTable 信息
SELECT * FROM sys.filetables;
SELECT * FROM sys.tables WHERE is_filetable = 1;
-- FileTable 的相关对象
SELECT parent_object_id,OBJECT_NAME(parent_object_id) AS 'FileTable'
,object_id,OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object' ;
|
至此,已经配置完成!~
现在查看文件表,没有记录。可以查看该表的 UNC 路径,在系统文件中打开该路径。
1
2
3
4
5
6
7
|
-- 查看 FileTable
SELECT * FROM [dbo].[DocumentStore]
-- 获取特定 FileTable 或当前数据库的根级 UNC 路径。
SELECT FileTableRootPath();
SELECT FileTableRootPath(N 'DocumentStore' );
SELECT FileTableRootPath(N 'dbo.DocumentStore' );
|
在该路径中,可以直接将系统其它文件拷贝进去:
再查看 FileTable ,数据已经自动记录
1
2
|
-- 查看 FileTable
SELECT * FROM [dbo].[DocumentStore]
|
1
2
3
4
5
|
-- 也可以用GetFileNamespacePath查看 FileTable 中文件或目录的 UNC 路径。
SELECT
file_stream.GetFileNamespacePath()
,file_stream.GetFileNamespacePath(1, 0)
FROM [dbo].[DocumentStore]
|
删除表 FileTable 中的记录,文件也会被删除:
1
2
3
4
|
-- 删除表 FileTable 中的记录,文件也会被删除
DELETE FROM [dbo].[DocumentStore] WHERE stream_id = 'BA483ECA-AE0E-E511-8367-005056C00008'
SELECT * FROM [dbo].[DocumentStore]
|
若要获取执行某些管理任务所需的独占访问权限,可能必须暂时禁用非事务性访问权限。
禁用完全非事务性访问权限:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
ALTER DATABASE [AdventureWorks2012]
SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF );
GO
-- 关闭后,路径无法打开
-- \\Kk-pc\mssqlserver\FileStreamPath\FileStreamPath
-- 此时文件表 [DocumentStore] 仍可正常操作
ALTER DATABASE [AdventureWorks2012]
SET FILESTREAM ( NON_TRANSACTED_ACCESS = READ_ONLY );
GO
-- 只读状态,路径可拷贝文件出来,但无法拷贝文件到该目录
-- \\Kk-pc\mssqlserver\FileStreamPath\FileStreamPath
-- 此时文件表 [DocumentStore] 仍可正常操作
|
重新启用完全非事务性访问权限:
1
2
3
4
|
-- 重新启用完全非事务性访问权限
ALTER DATABASE [AdventureWorks2012]
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL );
GO
|
禁用 FileTable 命名空间将会禁用所有系统定义的约束并触发使用 FileTable 创建的约束。
1
2
3
4
|
-- 禁用 FileTable 命名空间
-- (禁用后路径 \\Kk-pc\mssqlserver\FileStreamPath\FileStreamPath 不可访问)
ALTER TABLE [DocumentStore] DISABLE FILETABLE_NAMESPACE;
GO
|
1
2
3
|
-- 重新启用 FileTable 命名空间
ALTER TABLE [DocumentStore] ENABLE FILETABLE_NAMESPACE;
GO
|
更多注意的事情还需要到参考官方文档:FileTable 与其他 SQL Server 功能的兼容性
转载于:https://www.cnblogs.com/lvdongjie/p/7754506.html
SqlServer2012 File Table文件表相关推荐
- GCC编译过程以及对应FILE文件表
gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理:生成.i的文件[预处理器cpp] (2).编译:将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] (3).汇编:有汇编变 ...
- html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
HTML文件表单,接受Word文档(HTML file form, accept Word documents) 我在这里遇到了一个奇怪的问题. (不管怎样,或者我只是忽略了一些非常简单的东西.) 我 ...
- linux文件 i节点结构,Linux 文件描述符 文件表项 i节点结构
Linux的VFS(虚拟文件系统)学习起来很痛苦,看源码不太明智,看完分析完就忘且太浪费时间,懂了后也无法应用在实际场合中.所以这里只是讨论下文件描述符,文件表项(file结构体)和inode,理清实 ...
- SQL Server 2012 开发新特性:文件表
转载于 春哥 一.启用FileTable 1.修改数据库引擎的属性 打开"SQL Server配置管理器",修改SQL Server数据库引擎的属性.使用此页可针对此 Micros ...
- mysql myisam can't open table_Can’t open file:'[Table]mytable.MYI'
Can't open file:'[Table]mytable.MYI' 更新时间:2011年01月03日 14:10:08 作者: 也许很多人遇到过类似Can't open file: '[Ta ...
- ArcSDE 日志文件表(一)
今天跟大家介绍一下ArcSDE日志文件表,一直都想好好研究一下这块,因为基本上不太受大家重视,感兴趣的用户不是很多,但是一旦出现多用户并发查询或者版本操作的时候,这个东西就显得非常重要了,而且根据不同 ...
- Oracle bigfile 大文件表空间会影响rman等备份效率
Database 是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成.表空间内的逻辑存储单位为段(segment),段又可以继续划分为数据扩展(extent).而数据扩展是由一组连续 ...
- Apple System: Error: ENFILE: file table overflow
2019独角兽企业重金招聘Python工程师标准>>> 在MAC上跑nodejs,遇到了一个问题:file table overflow 主要意思就是说文件打开太多了,超过了限制,产 ...
- Truncate Table 删除表内容避免产生过多日志
数据库每天在进行频繁操作和记录,LOG文件会特别大且增长的比较快,有时候一天就5000M,每天删除一次也很不方便.有没有方法能避免生成日志或不产生日志呢?不产生日志的方法目前我还没找到,但我们在平常的 ...
最新文章
- 重磅!如何高效学习单目深度估计
- 马斯克直聘AI人才:高中毕没毕业无所谓,但是编程能力得过硬
- TestBird频现国内手游“盛宴” 开发商互相介绍用得很赞
- leetcode算法题--连续差相同的数字
- 如何将APACHE许可证应用于您的工作
- HDOJ 2041 超级楼梯
- StarUML启动报RPC服务器不可用错误
- LCM在Kernel中的代码分析
- 一文读懂机器学习的常用模型评价指标
- python生成器 图片分类_Python内置类型(6)——生成器
- ZooKeeper系列(四)
- c盘保护软件_电脑C盘空间越来越小?简单操作这几步,可以释放大量空间
- Docker的镜像基本原理和概念
- 24小时BTC全网合约成交数据显示:多头占优
- 在Eclipse中使用JDBC访问MySQL数据库的配置方法
- Zipf law 定律
- 直播app系统源码,自定义弹框的简单写法Demo
- 第三部分 数据结构 -- 第二章 队列-1362:家庭问题(family)
- 《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.3节外部或内部主动式信息搜集...
- docx文件转pdf,使用aspose words 转pdf,并且解决表格格式错乱
热门文章
- CopyTranslator v0.0.8 Zouwu RC1 发布
- 从Android上的相机裁剪图像
- php返回json套数组_教你PHP怎么不用框架写优雅的中小网站
- python中sys模块有问题_python中sys模块之输入输出错误流
- my.ini修改后服务无法启动_教你发布vue+.netCore项目到服务器
- java 动态规划求最短路径_使用分支界定和动态规划解决最短路径问题(原)
- 数据库: asc和desc的意思
- java freemarker_Java: FreeMarker的配置和使用
- 工作失职的处理决定_员工工作失误处罚处理决定书范本(3篇)
- Android花屏分析,Unity游戏在手机上运行时的花屏现象