第一步、开启数据库的FILESTREAM支持
实际环境为Sharepoint2010 和 SQL Server2008 R2;数据库默认安装的时候可能没有开启FILESTREAM,此时需要我们核实是否已经开启。打开SQL配置管理器,如下图所示
在开启FILESTREAM之后,在数据库中执行下列语句
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
第二、配置内容数据库与文件系统的映射
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 filestreamuse [WSS_Content]
alter database [WSS_Content] add file (name = RBSFilestreamFile,
filename = ‘C:\SharePointData\FileData‘) to filegroup RBSFilestreamProvider其中[WSS_Content]为你sharepoint内容数据库的名称,‘C:\SharePointData\FileData’为需要将BLOB文件存储的位置。
第三、安装RBS提供程序
将RBS_x64.msi复制到场中得每个服务器(如果有多个服务器),以管理员身份运行CMD,将命令提示行路径定位到安装文件目录下运行下面代码。
msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="sp2010" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
其中 WSS_Content 为内容数据库名称 ,sp2010为数据库实例名。
不建议直接运行安装RBS提供程序(RBS_x64.msi),因为如果直接运行此程序,程序会安装一个30天得执行计划,因此建议采用上述提示行的方式安装。
如果只有一个服务器则安装好上面的就可以了,如果有多个服务器,则必须在每个服务器上均安装此提供程序,不过安装代码有所区别,如下:
msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi DBNAME="WSS_Content" DBINSTANCE="sp2010" DDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"
在安装完成上述操作后可检查内容数据库中是否多出以“mssqlrbs”开头的表,如果有说明安装成功,如果没有则需要将RBS_X64卸载,重新执行上述步骤。
第四、为内容数据库启用RBS
启动sharepoint shell
运行下列代码:
(1) $cdb = Get-SPContentDatabase "WSS_Content"
获取到指定的内容数据库(SPContentDatabase)对象实例,绿色所标注的"WSS_Content"需要更换成在你的环境中,实际的内容数据库名称。
(2) $rbss = $cdb.RemoteBlobStorageSettings
获取内容数据库的RBS设置(SPRemoteBlobStorageSettings)对象实例。
(3) $rbss.Installed()
检查在内容数据库上是否安装了RBS,如果需要,更新相应的属性值。
(4) $rbss.Enable()
在内容数据库上启用RBS。
(5) $pvdName = $rbss.GetProviderNames()[0]
获取第一个注册到内容数据库上的RBS Provider的名称。
(6) $rbss.SetActiveProviderName($pvdName)
为内容数据库设置要激活的RBS Provider。然后,你可以执行"$rbss"来查看它的一些属性值,如果设置正确,它输出的内容应该如上图所示。
如果你启用RBS FILESTREAM Provider的内容数据库中,已经存储了一个网站集,那么在你启用了RBS Provider之后,网站集里面的文档,并不会自动的马上通过FILESTREAM,转存到NTFS文件系统上。只有新增的文档才会被存储到NTFS文件系统上,网站集里面之前上载的文档,仍然会保存在内容数据库里面。如果你希望现在将那些旧的文档,统统转存到我们所指定的NTFS文件系统中,那么可以继续在SharePoint 2010 Management Shell中执行下面这个指令:
(7) $rbss.Migrate()
如果你希望设置一个文档大小阈值,只有大小超过此阈值的文档,才通过RBS FILESTREAM Provider存储到NTFS文件系统上,而小于此阈值的文档,仍然存储在内容数据库中,那么可以在SharePoint 2010Management Shell中继续执行下面的指令(假设阈值是1048000字节,也就是1M):
(8) $rbss.MinimumBlobStorageSize = 1048000(9)$rbss.Update()
上述步骤操作成功后,可在文档库上传一个超过100KB (如果设置了阈值,则上传超过阈值的大小)的文档,然后检查C:\SharePointData\FileData中是否有新添加的文件。