代码改变世界

MOSS2010之大文件存储方案

2012-09-12 10:50  温森特  阅读(3285)  评论(6编辑  收藏  举报

最近在项目中客户提出了一个要求,要将企业内的文档文件、视频文件和设计工程文件等等统统放入到MOSS2010中。这样MOSS系统将成为一个文件管理的大容器,即在统一的企业门户平台内,实现现有企业的文档统一管理的信息化需求。

针对这一需求,微软的MOSS2010 提供了一个套RBS(Remote Blob Storage)对大文件的存储解决方法。在 MOSS 2010 中,二进制大型对象 (BLOB) 是一个文件,在默认情况下,这些 BLOB(又称为非结构化数据)与元数据或结构化数据 一起内嵌存储在 MOSS2010 内容数据库中。因为 BLOB 可能非常大,所以将 BLOB 数据从 SQL Server 数据库移动到商用或内容可寻址存储中可能很有帮助,为此,微软的MOSS2010  提供了 RBS,在MOSS2007的时候,微软也提供过类似的借口。

闲话少说,开始进行逐步的进行配置(有图有真相,哈哈!),整个过程可以大概的分为四个步骤:

第一步,配置SQL2008的FILESTREAM 功能 :默认情况下,FILESTREAM 功能已在您安装 SQL Server 2008 时安装,但未启用它。您必须在运行 SQL Server 2008(承载 SharePoint Server 2010 数据库)的计算机上启用并配置 FILESTREAM。打开SQL服务配置向导,找到SQL服务运行实例,右键属性,如下图,设置好后,这样第一步骤就完成了,我们将SQL的 FILESTREAM 功能开启。

 

 

第二步,配置MOSS的内容数据库的 BLOB 存储:首先打开SQL Server Management Studio,找到内容数据库(怎样找内容数据库,本章不再描述),新建查询,然后依次执行如下的SQL script.

第一段脚本:

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

  第二段脚本:

use [WSS_Content]
if not exists 
(select groupname from sysfilegroups 
where groupname=N'RBSFilestreamProvider')
alter database [WSS_Content]
add filegroup RBSFilestreamProvider contains filestream

第三段脚本: 

use [WSS_Content] 
alter database [WSS_Content]
 add file (name = RBSFilestreamFile, filename = 
'c:\Blobstore'
to filegroup RBSFilestreamProvider

  在运行第二段脚本的时候,如果报“filestream 功能被禁用”这个错误,需要我们手工的运行脚本启动FILESTREAM功能,

USE master
GO

EXEC sp_configure filestream_access_level, 2
RECONFIGURE

运行完这三段脚本,在服务器的C盘下,将出现一个Blobstore文件夹,如下图,这样第二步基本完成。

 

  第三步,MOSS的Web服务器上安装 RBS ,首先我们需要从微软网站下载一个软件,RBS_x64.msi ,下载地址如下:http://go.microsoft.com/fwlink/?linkid=165839&clcid=0x804

  打开命令行,运行如下的命令,见如下贴图,大约等上一分钟左右,命令行将运行完成,运行完成后命令行没有任何提示,但是,你可以在数据中发现增加了许多新mssqlrbs_为表名头的的表,这说明运行成功了。为了大家以后使用方便使用,我把命令行拷贝出来,如下:

msiexec /qn /lvx* rbs_install_log.txt /i RBS-x64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="DBInstanceName" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1 

  “DBInstanceName”是服务器SQL的实例名称,需要根据你安装的SQL实例进行替换。

 

 

  第四步,启用MOSS内容数据库的 RBS,特别说明的是,RBS只能使用 PowerShell 启用它,微软现在将 MOSS2010 产品与 PowerShell 紧密结合,将逐步取缔命令行的方式。话归正题,我们将运行如下的PowerShell命令,也可以逐步一行一行的运行,运行效果如下图,为了以后使用方便,我将命令行命令贴在如下:



$cdb = Get-SPContentDatabase WSS_Content
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])
$rbss

 

 

 

  看到这个界面,基本部署完成了,剩下的工作,就是测试部署的效果了,可以往MOSS2010 的文档库中上传一下文件,这个时候,你会发现,在Blobstore文件夹下多出一些文件,这些文件就是刚刚上传的文件,但是,我们看不到文件的名称等等信息,我们可以将文件拷贝出来,给它加上后缀名,再打开,这个时候,就会发现,原来MOSS只是将文件的后缀名称和文件名称去掉了,存在SQL数据库中,主体的文件实体放在了文件夹中。到此,本实验圆满成功。