SQL Server - FileTable 环境搭建
Step 1: 启用Filestream功能
-
在 “开始” 菜单中,依次指向 “所有程序”、 SQL Server 2016、 “配置工具”,然后单击 “SQL Server 配置管理器”。
-
在服务列表中,右键单击“SQL Server 服务”,然后单击“打开”。
-
在“SQL Server 配置管理器”管理单元中,找到要在其中启用 FILESTREAM 的 SQL Server 实例。
-
右键单击该实例,然后单击“属性”。
-
在 “SQL Server 属性” 对话框中,单击 “FILESTREAM” 选项卡。
-
选中“针对 Transact-SQL 访问启用 FILESTREAM”复选框。
-
如果要在 Windows 中读取和写入 FILESTREAM 数据,请单击“针对文件 I/O 流访问启用 FILESTREAM”。 在 “Windows 共享名” 框中输入 Windows 共享的名称。
-
如果远程客户端必须访问存储在此共享中的 FILESTREAM 数据,请选择 “允许远程客户端针对 FILESTREAM 数据启用流访问”。
-
单击 “应用”。
-
在 SQL Server Management Studio中,单击 “新建查询” 以显示查询编辑器。
-
在查询编辑器中,输入以下 Transact-SQL 代码:
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
-
单击 “执行”。
-
重新启动 SQL Server 服务。
Step 2-1 创建一个新的数据库
-- Create Database
CREATE DATABASE FileTableDB
ON PRIMARY
(Name = FileTableDB,
FILENAME = 'D:\FileTable\FTDB.mdf'),
FILEGROUP FTFG CONTAINS FILESTREAM
(NAME = FileTableFS,
FILENAME='D:\FileTable\FS')
LOG ON
(Name = FileTableDBLog,
FILENAME = 'D:\FileTable\FTDBLog.ldf')
WITH FILESTREAM (NON_TRANSACTED_ACCESS = FULL,
DIRECTORY_NAME = N'FileTableDB');
GO
Step 2-2查看FileStream 功能是否打开
-- Check the Filestream Options
SELECT DB_NAME(database_id),
non_transacted_access,
non_transacted_access_desc
FROM sys.database_filestream_options;
GO
Step 3创建一个新的filetable
-- Create FileTable Table
USE FileTableDB
GO
CREATE TABLE FileTableTb AS FileTable
WITH
(FileTable_Directory = 'FileTableTb_Dir');
GO
可以像其他sql table 一样使用select 语句去查询
SELECT * FROM FileTableTb
FileTable的数据字典如下表所示
文件属性名称 |
type |
Size |
默认 |
说明 |
文件系统可访问性 |
path_locator |
hierarchyid |
变量 |
一个标识此项的位置的 hierarchyid 。 |
此节点在分层 FileNamespace 中的位置。 |
可通过设置 Windows 路径值来创建和修改。 |
stream_id |
[uniqueidentifier] rowguidcol |
由 NEWID() 函数返回的值。 |
FILESTREAM 数据的唯一 ID。 |
不适用。 |
|
file_stream |
varbinary(max) |
变量 |
NULL |
包含 FILESTREAM 数据。 |
不适用。 |
file_type |
nvarchar(255) |
变量 |
NULL。 |
表示文件的类型。 |
自动计算。 无法设置。 |
名称 |
nvarchar(255) |
变量 |
GUID 值。 |
文件或目录的名称。 |
可使用 Windows API 创建或修改。 |
parent_path_locator |
hierarchyid |
变量 |
一个标识包含此项的目录的 hierarchyid 。 |
包含目录的 hierarchyid 。 |
自动计算。 无法设置。 |
cached_file_size |
bigint |
FILESTREAM 数据的大小(以字节为单位)。 |
虽然缓存文件的大小会自动保持更新,但在特殊情况下也可能会出现不同步的问题。 若要计算确切的大小,请使用 DATALENGTH() 函数。 |
||
creation_time |
datetime2(4) |
8 字节 |
当前时间。 |
文件的创建日期和时间。 |
自动计算。 也可以通过使用 Windows API 设置。 |
last_write_time |
datetime2(4) |
8 字节 |
当前时间。 |
上次更新文件的日期和时间。 |
自动计算。 也可以通过使用 Windows API 设置。 |
last_access_time |
datetime2(4) |
8 字节 |
当前时间。 |
上次访问文件的日期和时间。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_directory |
bit |
1 字节 |
FALSE |
指示行是否表示目录。 此值由系统自动计算,无法设置。 |
自动计算。 无法设置。 |
is_offline |
bit |
1 字节 |
FALSE |
脱机文件属性。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_hidden |
bit |
1 字节 |
FALSE |
隐藏文件属性。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_readonly |
bit |
1 字节 |
FALSE |
只读文件属性。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_archive |
bit |
1 字节 |
FALSE |
存档属性。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_system |
bit |
1 字节 |
FALSE |
系统文件属性。 |
自动计算。 也可以通过使用 Windows API 设置。 |
is_temporary |
bit |
1 字节 |
FALSE |
临时文件属性。 |
自动计算 |
Step 4 打开文件实际存储路径