示例采用sql server 2012 数据库。系统 windows 2008R2 SP1 。
一、启用FilesStream
打开Sql server 2012 的“配置工具”,然后打开“Sql Server 配置管理器”,选择“Sql Server 服务”,找到“SQL Server (MSSQLSREVER)”,右击“属性”,找到“FILESSTREAM”栏,操作如图:
1、通过SQL Server Configuration Manager,启用数据库的FileStream特性。然后通过以下语句,设置fielstream的可访问级别:
1
2
|
EXEC sp_configure filestream_access_level, 2 RECONFIGURE |
二、为SharePoint的内容数据库加增加主密钥
1
2
3
4
|
use [WSS_Content] if not exists ( select * from sys.symmetric_keys where name = N '##MS_DatabaseMasterKey##' ) create master key encryption by password = N '输入密码' |
三、为该内容数据库增加FILESTREAM文件组和文件
1
2
3
4
5
6
7
|
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:lobstore' ) to filegroup RBSFilestreamProvider |
四、安装RBS
1、可通过直接执行RBS_X64.msi文件来安装程序,官方下载Sql Server2013 RBS.msi
通过下面语句检查是否安装成功
select * from dbo.sysobjects where name like 'rbs%'
五 启用RBS
$cdb = Get-SPContentDatabase "WSS_Content"
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$pvdName = $rbss.GetProviderNames()[0]
$rbss.SetActiveProviderName($pvdName)
$rbss.Migrate()//该命令可以将SharePoint内容数据库中原有的BLOB迁移到文件系统中
$rbss.MinimumBlobStorageSize = 1048000 //该命令用于设置存于文件系统中的文件最小值,当文件小于该值的时候,将还是照常保存在数据库中。
$cdb.Update()
六、垃圾回收机制
我强调几点:
-
通常我们删除文档,并非真的删除,而是保存在SharePoint回收站里,回收站有两层,一层是用户操作,可以删除或者还原,跟PC 电脑差不多;第二层是网站集回收站,一般需要管理员才能操作,这层删除后,文件就不能通过sharepoint 还原了。
-
垃圾回收是一个持续缓慢的过程,可以隔段时间查看存放文件的文件夹大小来判断。
七、卸载RMS
1、SharePoint中卸载
$cdb=Get-SPContentDatabase <ContentDbName>
$rbs=$cdb.RemoteBlobStorageSettings
$rbs.GetProviderNames()
$rbs.SetActiveProviderName("")
$rbs.Migrate()
$rbs.Disable()
2、管理员方式运行CMD,启动回收
C:Program FilesMicrosoft SQL Remote Blob Storage 11.0MaintainerMicrosoft.Data.SqlRemoteBlobs.Maintainer.exe" -connectionstringname RBSMaintainerConnection -operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores -GarbageCollectionPhases rdo -ConsistencyCheckMode r -TimeLimit 120
3、点击RBS.msi安装文件以卸载RBS
4、在数据库中删除RBS
exec mssqlrbs.rbs_sp_uninstall_rbs 0
ALTER TABLE [mssqlrbs_filestream_data_1].[rbs_filestream_configuration] DROP column [filestream_value]
ALTER TABLE [mssqlrbs_filestream_data_1].[rbs_filestream_configuration] SET (FILESTREAM_ON = "NULL")
现在你可以删除文件和文件流filegroup:
ALTER DATABASE yourdbname Remove file RBSFilestreamFile;
ALTER DATABASE yourdbname REMOVE FILEGROUP RBSFilestreamProvider;