位置:凯图新闻网 > 军事军迷 > 正文 >

如何使用 SQL Server FILESTREAM 存储非结构化数据?

2020年05月21日 14:54来源:未知手机版

喜游游,玛戈隆特,www.kabu4.com

原标题:如何使用SQLServerFILESTREAM存储非结构化数据?

作者|ALEN?BRI?

译者|火火酱,责编|Carol

封图|CSDN付费下载于视觉中国

在本文中,我将解释如何使用SQLServerFILESTREAM来存储非结构化数据。同时,还会介绍FILESTREAM的优缺点。

在SQLServer的早期版本中,非结构化数据的存储在维持结构化和非结构化数据间一致性、管理备份/还原过程、性能问题、可扩展性等方面提出了许多挑战。在SQLServer2008之前的MSSQL早期版本中,存在各种用于存储非结构化数据的机制。这些信息通常被以文件的形式存储在共享文件夹中,其访问权限被授予了某些用户。

这些文件的UNC路径通常作为表(varchar(n))中的一列存储于数据库中,以便应用程序逻辑可以访问特定的文件。但文件的安全性、管理其访问权并对其进行维护方面存在一定问题。

后来的二进制大对象(BinaryLargeObjects,BLOB)概念在一定程度上有助于存储非结构化数据。这个概念的主要优点是数据库中的集成管理和事务一致性。在这种情况下,安全问题(以前的文件解决方案)得到了解决。但仍存在一些问题,即2GB的限制以及日志文件过载。

为了解决这些问题,SQLServer2008首次引入了名为FILESTREAM的增强功能。

它不是VARBINARY(MAX)这样的数据类型,而是通过VARBINARY列设置的attribute/property,表明数据应该被直接存储在文件系统上。这些数据仍然是系统的组成部分,并保持事务一致性。

以下是FILESTREAM的一些特征:

二进制数据作为单独的文件存储在数据库之外。可以通过WIN32API对这些单独的文件进行操作。T-SQL语句适用。通过FILESTREAM存储在文件系统中的对象已经取消了VARBINARY(MAX)列的2GB文件大小限制。FILESTREAM还可以被用在压缩文件、磁盘、卷中。

要使用FILESTREAM,必须将其激活。FILESTREAM可在两个级别上启用。第一级是SQLServer级别。该级别在安装SQLServer时被启用。如果没这样做的话,可以选中SQLServerFILESTREAM选项卡上的复选框,通过SQLServer配置管理器来启用(图1)。

图1.使用SQLServer配置管理器在SQLServer级别启用FILESTREAM

启用FILESTREAM的第二个级别是SQLServerInstance(实例)级别。通过执行脚本1中提供的T-SQL脚本来实现。

EXECsp_configurefilestream_access_level,2

RECONFIGURE

脚本1:在ServerInstance级别启用FILESTREAM

表1列出了filestream_access_level的可能值。

描述

0

禁用FILESTREAM对此实例的支持.

1

启用FILESTREAM进行Transact-SQL访问.

2

启用FILESTREAM进行Transact-SQL和Win32流访问.

表1.filestream_access_level的可能值

下一步是创建一个数据库,可以在其中创建将使用FILESTREAM的表。脚本2给出了一个T-SQL脚本示例,该脚本能够创建可以使用FILESTREAM的数据库。

CREATEDATABASETest_FILESTREAM

ON

PRIMARY(

NAME=Test_FILESTREAM_Prmary,

FILENAME='d:sqlbaza2019mssqldataFILESTREAMTest_FILESTREAM.mdf'),

FILEGROUPFileStreamGroupCONTAINSFILESTREAM(

NAME=Test_FILESTREAM_FM,

FILENAME='d:sqlbaza2019mssqldataFILESTREAMTest_FILESTREAM_FM')

LOGON(

NAME=Test_FILESTREAM_Log,

FILENAME='d:sqlbaza2019mssqldataFILESTREAMTest_FILESTREAM.log')

脚本2:创建可以使用FILESTREAM的数据库的示例

在文件系统上执行脚本2将创建一个$FSLOG文件夹和文件filestream.hdr。该filestream.hdr文件是FILESTREAM容器的头文件。

下一步要创建一个具有列VARBINARY(MAX)和FILESTREAM属性(脚本3)的表。

USETest_FILESTREAM

CREATETABLE[dbo].[Fajlovi]

本文地址:http://www.k2summit.cn/junshijunmi/2481612.html 转载请注明出处!

今日热点资讯