SqlServer FileTable验证笔记

SqlServer FileTable启用步骤

1、启用FileTable的先决条件:数据库必须首先具有 FILESTREAM 文件组,然后您才能在该数据库中创建 FileTable。 有关此先决条件的详细信息,请参阅 创建启用了 FILESTREAM 的数据库注:FileTable最好用独立的数据库上) 

2、在命令行用SqlServerManagerXX.msc打开Sql配置管理器 (注:xx是对应版本,如12对应版本是sqlserver2014

A、右键单击该实例,然后单击属性。在“SQL Server 属性对话框中,单击“FILESTREAM”选项卡。

B、选中针对 Transact-SQL 访问启用 FILESTREAM”复选框。如果要在 Windows 中读取和写入 FILESTREAM 数据,请单击针对文件 I/O 流访问启用 FILESTREAM”。 在“Windows 共享名框中输入 Windows 共享的名称。

C、如果远程客户端必须访问存储在此共享中的 FILESTREAM 数据,请选择允许远程客户端针对 FILESTREAM 数据启用流访问。单击应用

D、在查询分析器内执行如下配置:

EXEC sp_configure filestream_access_level, 2

RECONFIGURE

E、上述配置完后,重启SqlServer实例

3、创建FileTable对应的数据库。

--    创建数据库时创建 FILESTREAM 文件组

CREATE DATABASE BigFileDb

ON

PRIMARY ( 

    NAME = ArchiveMDF, 

    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\BigFileDb.mdf',     --  路径“..\MSSQL\Data\”必须存在

    SIZE = 5MB,

    MAXSIZE = 25MB,

    FILEGROWTH = 5MB

),

FILEGROUP FileStreamGroupFirst CONTAINS FILESTREAM(

     NAME = ArchiveFILESTREAM, 

     FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\BigFileDbStream',   -- 路径“..\MSSQL\Data\”下“BigFileDbStream”文件夹必须不存在

     MAXSIZE = 50 MB

)

LOG ON (

    NAME = ArchiveLDF,

    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\BigFileDb.ldf'

)

WITH FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'BigFileDbDir' ) -- 指定数据库访问级别和指定目录名字, “BigFileDbDir”是网络共享文件的逻辑目录

GO

(注意事项:禁用 FILESTREAM 计算机系统中的短文件名。 创建短文件名需要花费相当长的时间。 若要禁用短文件名,可先以管理员身份运行Cmd,并执行:

Fsutil 8dot3name set 1 表示计算机禁用短文件名。定期对 FILESTREAM 计算机系统进行碎片整理。使用 64-KB NTFS 簇。 压缩卷必须设置为 4-KB NTFS

4、此时BigFileDb内的共享目录尚无写权限,必须创建FileTable后,才可往目录内读、写文件

--  创建FILETABLE

USE BigFileDb

GO

CREATE TABLE PictureDir

AS FileTable

WITH ( 

    --文件目录,不区分大小写,不指定则默认为filetable名称[FileStore]

    FileTable_Directory = N'PictureDir',

    FileTable_Collate_Filename = database_default    --排序规则

)

GO

5、 select FileTableRootPath('dbo.picturefiles') 获取文件表的网络路径后,就可直接往此目录用访问文件方式拷贝或删除文件。

6、Select * from PictureFiles 可查看当前表对应文件目录内所有子目录及文件。

posted @ 2020-06-06 09:17  千年海岩  阅读(270)  评论(0编辑  收藏  举报