FILESTREAM 和 SharePoint 2010

Tags: No Tags
Comments: No Comments
Published on: 2011 年 07 月 19 日

[原文发表地址] FILESTREAM with SharePoint 2010

[原文发表时间] 3 May 2011 7:00 AM

FILESTREAM是SQL Server 2008中的一个新功能,它使得非结构化的数据能在NTFS文件系统中进行存储。在 sharepoint2010中支持FILESTREAM(本地或者远程)通过在内容可寻址或商业存储中存储大型的二进制非结构化数据,从而减少资金花费.

非结构化数据

非结构化数据指的是没有绑定到已定义的模型或不能很好适用于SharePoint关系表的信息,它可以是Microsoft Office文档文件格式,视频,音频,和相关的文件类型。

结构化数据

SharePoint中的结构化数据指的是和它对应的非结构化数据或BLOB相关联的元数据。关系数据库经常被作为结构化数据的例子。

SQL Server和非结构化数据存储

在SQL Server有三种方法用来存储非结构化数据,它们是 RBS,SQL BLOB和FILESTREAM:

· 远程BLOB存储器(RBS),在这个方法中SharePoint依赖SQL Server中的一个新层来读写存储于数据库之外的独立BLOB存储器(文件系统或专用的BLOB存储器)上的BLOB数据。

· SQL BLOB指的是SharePoint中传统的BLOB存储器, BLOB 数据与结构化的元数据一起被保存在内容数据库

  • FILESTREAM

FILESTREAM概述

FILESTREAM在varbinary(max)数据类型上实现,它告知数据库引擎在文件系统中存储非结构化的数据要通过包含有文件系统目录的FILESTREAM文件组,而不是文件本身(也称为数据容器)。数据容器是数据引擎存储器和文件系统存储器之间的接口。二进制数据类型varbinary是针对存储在SharePoint 2010内容数据库中的大型二进制对象而设计的,它指向 是可变长度二进制数据。(MAX)指的是最大值,即允许存储的最大值2^31-1字节或2GB。远程BLOB存储器并没有提供一种机制超出SharePoint限制的2GB文件大小。在SharePoint中,远程BLOB数据被RBS中的内容数据库中的唯一标识所引用(详见说明)。

clip_image001

FILESTREAM在性能方面有如下优点1)FILESTREAM使用NT系统缓存来缓存文件数据,从而减少对数据库引擎性能的影响2)没有使用SQL Server缓冲池;因此内存可被用于查询操作。

在用SharePoint存储大的BLOB数据时FILESTREAM的价值会得到体现,如视频文件或超过1MB的BLOB数据会从FILESTREAM中获益。

特殊考虑

FILESTREAM及业务可持续型管理

数据库镜像不支持FILESTREAM,这是由于不能在主服务器上创建FILESTREAM文件组,而且数据库镜像不能为包含FILESTREAM文件组的数据库配置。如果FILESTREAM提供程序被用来本地存储BLOB数据(在相同的内容数据库中),那么此数据库就不能配置为数据库镜像。

如果FILESTREAM提供程序用以在独立的SQL数据库或使用第三方BLOB存储器中存储BLOB数据,则内容数据库可以被镜像;然而,数据库镜像只应用在内容数据库中,而不用在BLOB数据中. BLOB数据需要被单独处理,并和对应的相关元数据(内容数据库中)保持同步。对于FILESTREAM BLOB数据库,可以通过日志传送来实现。

想了解FILESTREAM和SQL Server远程BLOB存储器之间的不同之处请查阅

http://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.

FILESTREAM Office Web 应用程序缓存

Word和PowerPoint Web使用Office Web应用程序缓存来创建一个基于浏览器的文档版本,通过文档的缓存版本增加性能和减少服务器机器上的资源开销,或者使用Office Web应用程序缓存使得对相同文档进行多个请求得以实现。

Office Web应用程序缓存出现在两个不同层次,在服务器文件系统和基于每个网站应用程序的“特定的”站点集合上。正如图片呈现给用户的过程一样,文档和演示文稿请求要通过Office Web应用程序的两个缓存来实现。 当Office Web应用程序功能被启用时,Web应用程序中的所有网站集合都使用这两个缓存存储单元。

配置了FILESTREAM的内容数据库将会在配置文件指定的位置存储文档和演示文稿的副本。推荐在没有配置FILESTREAM的数据库上配置Office Web应用程序缓存。

SharePoint 2010配置FILESTREAM

下面的指导说明是用于以演示为目的的单服务器部署和实现本地FILESTREAM提供程序的。

在目标SQL Server实例上启用FILESTREAM

1.在开始菜单上,指向所有程序,指向Microsoft SQL Server 2008 (R2),指向配置工具,然后点击SQL Server配置管理器。

2.在服务清单中右击SQL Server服务,然后点打开

3.在SQL Server配置管理器嵌入式管理单元中,指出你想启用FILESTREAM的SQL Server实例的位置。

4.右击那个实例,选择属性

5.在SQL Server属性对话框中,点选FILESTREAM选项卡。

6.选择Enable FILESTREAM for Transact-SQL access复选框。

7.如果想要从Windows中读写FILESTREAM数据,点击Enable FILESTREAM for file I/O streaming access。在Windows Share Name框中输入Windows共享名字。

8.如果远程客户需要访问保存在这个共享上的FILESTREAM数据,选择允许远程客户访问FILESTREAM数据的权限。

9.点击应用。

10.点击开始,所有程序,Microsoft SQL Server 2008 (R2),然后点SQL Server Management Studio.

11.在SQL Server Management Studio中,点新查询打开查询编辑器。

12. 在查询编辑器中输入下面的Transact-SQL代码:

EXEC sp_configure filestream_access_level, 2

在查询编辑器中输入下面的Transact-SQL代码:RECONFIGURE

设置RBS数据存储器

1.点击开始,所有程序,Microsoft SQL Server 2008 (R2),然后点SQL Server Management Studio.

2.展开数据库。

3.选择你想创建BLOB存储器的内容数据库,然后点击新查询。

4.在SQL Server Management Studio中点击新查询打开查询编辑器。

5.在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

if not exists (select * from sys.symmetric_keys where name = N’##MS_DatabaseMasterKey##’) create master key encryption by password password = N’Admin Key Password !2#4′

在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

if not exists(select groupname from sysfilegroups where groupname=N’RBSFilestreamProvider’)alter database [Database Name] add filegroup RBSFilestreamProvider contains filestream

在查询编辑器中,输入Transact-SQL代码:

use [Database Name]

alter database [Database Name] add file (name = RBSFilestreamFile, filename = ‘c:\BlobStore’) to filegroup RBSFilestreamProvider

安装Microsoft SQL Server 2008 R2 Remote Blob Store

在Microsoft SQL Server 2008 R2功能包处http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en下载Microsoft SQL Server 2008 R2 Remote Blob Store x64包,

以管理员权限打开命令行提示符,执行下面的命令来安装之前下载的RBS.MSI:

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Database Name>" DBINSTANCE="<Instance Name>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

备注

在上面的声明中给RBS.MSI指定完整路径,即C:\Users\Administrator\Desktop\RBS.MSI。根据你需要的环境修改DBNAME 和DBINSTANCE的值。

启用远程BLOB存储器

1.在开始菜单上点击所有程序。

2.点击Microsoft SharePoint 2010 Products

3.点击SharePoint 2010 Management Shell

4.在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来设置将要配置的内容数据库: $database=Get-SPContentDatabase –Identity “Database Name”

在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来获取决定内容数据库如何使用Microsoft SQL Server Remote Blob存储器的执行环境的对象:

$rbs=$database.RemoteBlobStorageSettings

在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来决定是否已经为选中的内容数据库安装了RBS:$rbs.Installed()

备注

$rbs.Installed()的结果应该是True,如果结果是False的话,可以通过审核rbs_install_log.txt来验证RBS.MSI是否已经成功地安装了。确保安装语句运行在SharePoint 2010 Management Shell下,输入下面的语句来为选中的内容数据库启用RBS:$rbs.Enable()

在SharePoint 2010 Management Shell中输入Windows PowerShell语句来为选中的内容数据库设置RBSprovider:$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])

$rbs

备注

$rbs的结果是:

clip_image002

表1

表1的附件

Enabled指定对于选中的内容数据库RBS是否已启用。

ActiveProviderName是将要存入SQL Remote Blob存储器的新文件的名字。如果新文件没有用SQL Remote Blob存储器保存的话该项将会为空。

MinimumBlobStorageSize指的是考虑是否值得使用RBS存储的BLOB的最小尺寸,超出了指定的MinimumBlobStorageSize的BLOB数据将被保存到RBS。

FILESTREAM性能数据显示了超过1MB的BLOB数据具有最高效的流性能。请查看http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx

clip_image003

配置MinimumBlobStorageSize:

1.在开始菜单点击所有工程。

2.点击Microsoft SharePoint 2010 Products

3.点击SharePoint 2010 Management Shell

4.在SharePoint 2010 Management Shell中输入下面的Windows PowerShell语句来配置MinimumBlobStorageSize为1MB:

$database = Get-SPContentDatabase “Database Name”

$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

$database.Update()

UpgradePersistedProperties指被删除或更改了的字段名或值的集合。

验证安装

验证FILESTREAM配置和RBS安装:

1.点击开始,点所有程序,接着点Microsoft SQL Server 2008,然后点SQL Server Management Studio

2.展开数据库。

3. 选择想要创建BLOB存储器的内容数据库,然后点击新查询。

4.在SQL Server Management Studio中,点击新查询打开查询编辑器。

5.在查询编辑器中输入下面的Transact-SQL代码:

USE [Database Name]

SELECT * FROM dbo.DatabaseInformation

保证RBSCollectionId和RBSProvider两行都可用。

测试RBS数据存储器

1.在一个网站的已配置好的内容数据库中选择一个想要的文档库。

2.上载一个大于1 MB的文件。

3.在有数据存储器的计算机上点击打开,然后点计算机。

4.浏览RBS数据存储器目录。

5.浏览文件并打开最近修改(而不是$FSLOG)的文件夹。在那个文件夹下打开最近修改的文件。验证这个文件和你上载的文件有相同的大小和内容。如果不同,请确认RBS已经正确安装并启用。

数据存储器 目录结构与下面的图例相似。

clip_image004

备注

当在上传一个大于MinimumBlobStorageSize的文档

出现事件错误:“ The URL ‘<Document Library>/File’ is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web.”时,请打开SQL Server Configuration Manager,启用Enable FILESTREAM for file I/O streaming access并重新启动SQL Server (MSSQLSERVER)服务。

附加资源

No Comments - Leave a comment

Leave a comment


Welcome , today is 星期六, 2017 年 02 月 25 日