首先,介绍下环境
机器名 | 作用 |
RBS3 | 域控制器+sql server 2008 r2 |
RBS2 | sharepoint 2010 前端 |
RBS1 | sharepoint 2010 管理中心 |
web应用程序 | 网站集 | 内容数据库 | 是否启用RBS |
sharepoint - 80 | http://rbs1 | WSS_Content | 否 |
http://rbs1/sites/newOne | WSS_Content_newOne | 是 |
一.在数据库服务器上启用FileStream
1.按照如下路径打开SQL Server配置管理器
开始->所有程序->Microsoft SQL Server 2008 R2->配置工具->SQL Server 配置管理器
2.右键单击“SQL Server 服务”->属性,切换到FILESTREAM 标签,将该属性页设置成如图所示的情景
点击“确定”后重启SQL Server 服务.
二。为每个需要启用RBS的内容数据库设置BLOB存储
这里只需要给WSS_Content_newOne启用RBS。
打开SQL Server Management Studio,新建查询,按顺序输入并执行以下脚本,实际应用时把下文中的WSS_Content_newOne替换成实际的内容数据库
1.
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
2.
use [WSS_Content_newOne] if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##') create master key encryption by password = N'p@ssw0rd'
3.
use [WSS_Content_newOne] if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider') alter database [WSS_Content_newOne] add filegroup RBSFilestreamProvider contains filestream
4.
use [WSS_Content_newOne] alter database [WSS_Content_newOne] add file (name = RBSFilestreamFile, filename = 'c:Blobstore') to filegroup RBSFilestreamProvider
三。在每台web服务器上安装RBS客户端。官网提供的RBS安装程序无效,我用这个版本的RBS.将RBS安装文件拷到web前端服务器和管理中心服务器的c盘
1.在管理中心服务器用管理员身份运行命令提示行,输入如下命令,(将WSS_ConentnewOne替换成实际的内容数据库,rbs3替换成实际的数据库实例)
msiexec /qn /lvx* c: bs_install_log.txt /i c:RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content_newOne" DBINSTANCE="rbs3" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1
注意c盘下的日志文件(rbs_install_log.txt)大小如果不在增大了,说明已经安装完毕。打开这个日志文件,在最后的20行,如果有“产品: SQL 远程 Blob 存储 – 已成功完成安装”等字样,说明安装成功。
2.在web前端等其他sharepoint服务器场的服务器重复执行以下命令(注意上下两条命令是不同的哦,将WSS_ConentnewOne替换成实际的内容数据库,rbs3替换成实际的数据库实例)
msiexec /qn /lvx* c: bs_install_log.txt /i c:RBS.msi DBNAME="WSS_Content_newOne" DBINSTANCE="rbs3" ADDLOCAL=Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer
四。为每个内容数据库启用RBS(注意替换内容数据库名称哦)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
$cdb = Get-SPContentDatabase "WSS_Content_newOne" $rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $rbss.SetActiveProviderName($rbss.GetProviderNames()[0]) $rbss.Migrate() $rbss
五。验证
上传一个1M左右的图片后,看看数据库服务器的c:Blobstore目录下的某个目录中是否有新文件,可以用图片编辑工具打开的
六。疑问
我目前的环境(如上)是一个web程序下有多个网站集,每个网站集都对应一个内容数据库。我并不是把所有的内容数据库都启用RBS,我只给其中一个内容数据库启用RBS。
在启用RBS之前http://rbs1/sites/newOne和http://rbs2/sites/newOne都可以访问,但是在给WSS_Content_newOne启用了RBS之后,只有http://rbs1/sites/newOne能够访问,而http://rbs2/sites/newOne总是提示该页无法显示。如果一个web应用程序只用一个内容数据库的话,则不会出现此问题。该问题让我头疼不已,目前还没有解决。如有遇到相同问题,并且完美解决的大神,还望赐教啊!