转载于 春哥

一、启用FileTable

1、修改数据库引擎的属性

  打开“SQL Server配置管理器”,修改SQL Server数据库引擎的属性。使用此页可针对此 Microsoft SQL Server 2012安装启用 FILESTREAM。

(1)针对 Transact-SQL 访问启用 FILESTREAM
  选中此项可针对 Transact-SQL 访问启用 FILESTREAM。 必须选中此控制选项,才能使用其他控制选项。如果不启用此选项,就不能添加FileStream文件组。

(2)针对文件 I/O 流访问启用 FILESTREAM
  选中此项可针对 FILESTREAM 启用 Win32 流访问。

(3)Windows 共享名
  使用此控制选项可输入将用来存储 FILESTREAM 数据的 Windows 共享的名称。默认为该SQL Server实例的名称。

(4)允许远程客户端针对 FILESTREAM 数据启用流访问
  选中此控制选项可允许远程客户端访问此服务器上的此 FILESTREAM 数据。

2、修改服务器的属性

  打开“SQL Server Management Studio”,修改该实例的配置。默认配置如下:

上述选项解释如下:

(1)“FILESTREAM 访问级别”显示 SQL Server 实例上支持的 FILESTREAM 的当前级别。若要更改访问级别,请选择以下值之一:

已禁用
  无法将二进制大型对象 (BLOB) 数据存储在文件系统中。此为默认值。即filestream access level=0

已启用 Transact-SQL 访问
  可使用 Transact-SQL 访问 FILESTREAM 数据,但不能通过文件系统进行访问。即filestream access level=1

已启用完全访问
  FILESTREAM 数据可使用 Transact-SQL 以及通过文件系统进行访问。即filestream access level=0

注意:在首次启用 FILESTREAM 时,您可能需要重新启动计算机才能配置驱动程序。

(2)“FILESTREAM 共享名称”显示在安装过程中选择的 FILESTREAM 共享的只读名称。

  在本次实验中,我们将“FILESTREAM 访问级别” 设定为:已启用完全访问。

  如果是通过T-SQL脚本执行,则运行以下脚本:

EXEC sys.sp_configure N'filestream access level', N'2'
RECONFIGURE WITH OVERRIDE

注意:设置完成之后,重启实例。

3、配置防火墙

  若要在防火墙保护的环境中使用 FILESTREAM,客户端和服务器都必须能够将 DNS 名称解析为包含 FILESTREAM 文件的服务器。FILESTREAM 要求 Windows 文件共享端口 139 和 445 处于打开状态。

二、配置文件组

1、添加文件组

  完成上述操作之后,就可以为该数据库添加专用于FileStream的文件组。

  如果是通过脚本操作,请运行以下脚本:

ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM 

2、添加文件

  完成上述操作之后,就可以为该数据库添加FilStream类型的数据库文件。

  在本例中,系统并没有为“FileStream数据”的文件类型创建mdf或ndf文件,而是在文件夹C:\SqlData下面自动创建以逻辑名称命名的文件夹,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的头文件。当这个数据库被删除时,mdf、ndf、log连同这个文件夹都会被删除。

  如果是通过脚本操作,请运行以下脚本:

ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]

注意:在上例中,在运行脚本之前,必须存在C:\SqlData,建议使用右侧的选择按钮选择路径。如果路径不存在,就会报错:

  同时不能存在重复的文件夹,即不能存在C:\SqlData\FileData。否则也会报错:

3、启动非事务访问

  FileTable 使 Windows 应用程序可以获取 FILESTREAM 数据的 Windows 文件句柄而不需要 SQL Server 事务。为了允许对 SQL Server 中存储的文件进行此非事务性访问,必须为要包含 FileTable 的每个数据库在数据库级别上指定所需的非事务性访问级别。

选项解释如下:

(1)FILESTREAM 非事务访问
  为从文件系统到 FileTables 中存储的 FILESTREAM 数据的非事务性访问指定以下选项之一:OFF、READ_ONLY 或 FULL。

  如果在服务器上未启用 FILESTREAM,则该值将设置为 OFF 并且被禁用。在本次实验中,将其设置为FULL。

(2)FILESTREAM 目录名称
  为与所选数据库相关联的 FILESTREAM 数据指定目录名称。在 FileTable 文件夹层次结构中,此数据库级目录将成为在实例级别为 FILESTREAM 指定的共享名称的子级以及在数据库中创建的 FileTable 的父级。

  如果启用非事务性访问时没有提供目录名称,则在以后必须提供它,这样才能在数据库中创建 FileTable。

  如果是通过脚本执行,如下:

ALTER DATABASE  db01
    SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )

注意:更改现有数据库时,调用带 DIRECTORY_NAME FILESTREAM 选项的 ALTER DATABASE (Transact-SQL) 语句。使用这些选项更改目录名称时,数据库必须以独占方式锁定,没有打开的文件句柄。

说明:为检查是否在数据库上启用了非事务性访问,可以查询目录视图,脚本如下:

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
    FROM sys.database_filestream_options 

三、创建FileTable

1、创建第一个FileTable

  “SQL Server Management Studio”只提供一个脚本模板,要想创建FileTable还是得用脚本完成:

USE db01
CREATE TABLE ImageTable1 AS FILETABLE

  官方的范本为:

USE [db01]
CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
WITH
(FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)

2、创建第二个FileTable

CREATE TABLE ImageTable2 AS FILETABLE

3、获取共享路径

  文件表创建之后,就会相应的产生一个文件表共享目录,该目录路径可以通过内建函数获取:

SELECT FileTableRootPath('ImageTable1')

  本次实验所返回的结果为:\\SQL1\SqlFile\ImageFiles\ImageTable1

4、查看

  通过Windows资源管理器,可见已经创建了以GUID命名的文件夹。

  通过SQL Server Management Studio,查看表的结构。

四、操作

1、向文件夹中添加文件

  通过 “Windows资源管理器”,向文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一个文件A01.GIF。然后运行脚本:

select * from ImageTable1

  结果如下:

  可见, SQL Server自动在Table中添加了记录。

2、文件改名

  运行以下脚本:

update ImageTable1 set name='Cup.GIF' where name='A01.GIF' 

  通过“Windows资源管理器”,查看文件夹\\SQL1\SqlFile\ImageFiles\ImageTable1,可见文件A01.GIF已经被改名为Cup.GIF 。

3、查看共享文件夹

  我们可以继续复制其他文件,然后通过“Windows资源管理器”,查看文件夹。

4、删除文件

  可以使用脚本删除,例如:

Delete ImageTable1 where name='Cup.GIF'

  或者,通过“Windows资源管理器”直接删除该文件。

五、备份和还原

1、备份数据库

  使用 SQL Server 备份数据库时,FILESTREAM 数据将与数据库中的结构化数据一起备份。

2、部分备份

  如果不想将 FILESTREAM 数据与关系数据一起备份,则可以使用部分备份将 FILESTREAM 文件组排除在外。

六、相关说明

详见 http://msdn.microsoft.com/zh-cn/library/gg492086.aspx

1、AlwaysOn

  在包含 FILESTREAM 或 FileTable 数据的数据库属于某一 AlwaysOn 可用性组时:

  FILESTREAM 和 FileTable 函数接受或返回虚拟网络名称 (VNN),而非计算机名称。有关这些函数的详细信息,请参阅 Filestream 和 FileTable 函数 (Transact-SQL)。

  通过文件系统 API 对 FILESTREAM 或 FileTable 数据进行的所有访问都应该使用 VNN,而非计算机名称。

2、表分区

  FileTable 不支持分区。通过对多个 FILESTREAM 文件组的支持,在大多数方案中可以解决纯向上扩展问题,而不必使用分区(不像 SQL 2008 FILESTREAM)。

3、复制

  FileTable 不支持复制和相关功能(包括事务性复制、合并复制、更改数据捕获和更改跟踪)。

4、视图

可以像为任何其他表一样为 FileTable 创建视图。但是对于为 FileTable 创建的视图有以下注意事项:

  视图将不具有任何 FileTable 语义,也就是说,视图中的列(包括“文件属性”列)的行为与常规视图列一样,不具有任何特殊语义,对于表示文件/目录的行也是如此。

  可以基于“可更新视图”语义更新视图,但是基础表约束可能拒绝更新,就像在表中一样。

  可以通过将文件的路径添加为视图中的显式列,在视图中显示该路径。例如:

CREATE VIEW MP3FILES AS SELECT column1, column2, …, GetFileNamespacePath() AS PATH, column3,… FROM Documents

SQL Server 2012 开发新特性:文件表相关推荐

  1. SQL Server 2012 安全新特性:包含数据库

    SQL Server 2012 新特性(二)安全新特性:包含数据库 一.启用功能 1.修改服务器(实例)的属性 否则,在修改数据库的属性时会报错: 2.修改服务器(实例)的安全性 否则,连接时报错: ...

  2. SQL Server 2012 管理新特性:AlwaysOn

    Server 2012 新特性(一)管理新特性:AlwaysOn 一.准备环境 1.准备4台计算机 域控制器DC1,IP地址192.168.1.1,子网掩码255.255.255.0,默认网关192. ...

  3. SQL Server 2012 开发新功能 序列对象(Sequence)

    众所周知,在之前的sqlserver版本中,一般采用GUID或者identity来作为标示符,但是identity是一个表对象,只能保证在一张表里面的序列,当我们遇到以下情况时, 表1 ID 订单类型 ...

  4. SQL Server 2008 R2 新特性之一

    2008年8月6日,微软发布了SQL Server 2008正式版,时至今日,大部分企业还在使用SQL Server 2000和2005. SQL Server 2008 中还是增加了不少新特性的 , ...

  5. [译]用Visual Studio2012来开发SQL Server 2012商业智能项目

    出自微软官方分析服务和PowerPivot官方博客. 原文地址: http://blogs.msdn.com/b/analysisservices/archive/2013/03/06/sql-ser ...

  6. Win7 安装SQL SERVER 2012需要SP1补丁

    在操作系统Win7上安装SQL Server 2012时,报如下错误: 也就是说SQL Server 2012如要要安装在Windows 7 上,则至少需要安装SP1补丁.否则就会弹出上面提示信息.关 ...

  7. sql数据库服务器端口修改,SQL SERVER 2012更改默认的端口号为1772

    打开开始菜单,找到sqlserver的配置管理器,点击打开 按下图配置右边窗口三项: 按下图配置右边三项: 按下图配置右边三项: 点击下图左边的SQL Server网络配置/MSSQLSERVER的协 ...

  8. 解读SQL Server 2012中的最新BI功能

    如果SQL Server 2008 R2的重点是让商务智能(BI)的使用者像使用自助服务一样便捷,那么SQL Server 2012则是让自助服务BI这一概念延伸至让IT人员更容易进行管理. 事实上, ...

  9. 《SQL Server 2012 学习日记 》——初识SQL Server 2012

    初识SQL Server 2012 1.1 SQL Server 2012 的优势 SQLServer 2012基于SQL Server 2008,其提供了一个全面的.灵活的和可扩展的数据仓库管理平台 ...

最新文章

  1. python3环境下“No module named nrrd”的解决办法
  2. centos 6.3 安装reids
  3. ECCV 2018 | CornerNet:目标检测算法新思路
  4. 艾默生变频器ev1000故障代码_国产变频器型号大全,梳理国产变频的前世今生!...
  5. 新基建系列之:中国城市人工智能发展指数报告
  6. Theory and tools for the conversion of analog to spiking convolutional neural networks
  7. 【转】软件开发常用术语
  8. M3 Build6801 Discovery support Virtual Hard Disks
  9. MIMO-OTFS in High-Doppler Fading Channels:Signal Detection and Channel Estimation(4)
  10. [转] C# mysql 事务回滚
  11. 同步(双向)BUCK电路设计
  12. Win10加Ubuntu20.04双系统安装教程
  13. 016画笔工具、铅笔工具、颜色替换工具和混合器画笔工具
  14. GD32E230_timer2解析SIF通讯协议
  15. ionic开发记账软件《易跟金》
  16. 【C# 教程系列第 11 篇】什么是抽象类、抽象方法
  17. Windows 7中C:/Users/用户名/AppData里面的文件概述
  18. 【安卓学习笔记】界面编程入门
  19. EmguCV入门(一)
  20. word添加参考文献和标注的详细简单方法

热门文章

  1. cocos2dx-js 截屏 (原生 + H5)
  2. MySql表大小、行大小和列大小的限制
  3. ajax数据显示,使用js通用模板
  4. nsautoreleasepool研究
  5. leetcode - Minimum Depth of Binary Tree
  6. centOS 6.4 vsftpd 500 illegal port command
  7. 《ArcGIS Runtime SDK for Android开发笔记》——数据制作篇:紧凑型切片制作(Server缓存切片)...
  8. AJAX(XMLHttpRequest)进行跨域请求方法详解(二)
  9. ApacheCN 大数据译文集(二) 20211206 更新
  10. PyTorch 1.0 中文官方教程:torch.nn 到底是什么?