设为首页 收藏本站
查看: 984|回复: 0

[经验分享] 在SharePoint 2010中部署RBS

[复制链接]

尚未签到

发表于 2015-9-25 09:03:48 | 显示全部楼层 |阅读模式
  一、RBS(Remote BLOB Storage)简介
  在SharePoint的大部分企业应用案例中,SharePoint都是要承担着非常繁重的文件管理工作,这些文件类型包括了Word文档,Excel文档甚至是数据量庞大的音频、视频文件。对于这些文件,SharePoint默认都是将它们以BLOB的数据形式存储在内容数据库当中。这就很容易导致SharePoint的数据库容量被这些BLOB数据所快速消耗,而且用户在使用SharePoint进行文件的管理的时候,需要频繁地对这些大数据量的BLOB数据进行读写访问,很容易在SQL端造成性能瓶颈。
  针对这一问题,MOSS 2007在SP1之后提供了ISPExternalBinaryProvider接口,用户可以通过这个接口开发自定义应用,将BLOB数据存储在Content DB之外,以减少SQL Server的负载。而在SharePoint 2010中,可以使用SQL Server 2008及其以上版本提供的Remote Blob Storage (RBS) 这一新特性。通过RBS内置的FILESTREAM Provider,我们只需要通过简单的配置,就可以将BLOB数据存储在文件系统当中或者是存储在其他专门用于存储BLOB数据的服务器上面,完全不需要做进行开发。同时,这些存储在文件系统当中的BLOB数据还可以接受数据库的事务管理,可进行数据备份以及数据恢复。
DSC0000.png
  RBS将SharePoint 中的BLOB数据分离存储
  可见,RBS在不降低数据的可管理性的同时,还能为我们提高SharePoint数据服务的性能以及可拓展性,无疑是企业在部署SharePoint时一项必不可少的工具。下文将主要介绍如何进行RBS的安装,如何启用RBS的垃圾文件回收,以及如何卸载RBS。
  二、安装RBS
  通过RBS中自带的FILESTREAM Provider,我们可以将SharePoint中的BLOB文件保存在本地的文件系统中,也可以通过远程的数据库服务器将这些数据保存在其他的文件系统中。
    A. BLOB保存在本地文件系统


  • 通过SQL Server Configuration Manager,启用数据库的FileStream特性。然后通过以下语句,设置fielstream的可访问级别。   EXEC sp_configure filestream_access_level, 2
    RECONFIGURE

  • 为SharePoint的内容数据库加增加主密钥   use [WSS_Content]
    if not exists (select * from sys.symmetric_keys where name =
    N'##MS_DatabaseMasterKey##') create master key encryption by password =
    N' password01'

  • 为该内容数据库增加FILESTREAM文件组和文件   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

  • 安装RBS,可通过直接执行RBS_X64.msi文件来安装程序,数据库连接截图如下: DSC0001.png
    DSC0002.png
      也可以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
      通过下面语句检查是否安装成功
      select * from dbo.sysobjects where name like 'rbs%'

  • 在SharePoint的Power Shell中启用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()
    B. BLOB保存在远程文件系统
  要想通过RBS FILESTREAM Provider将BLOB保存在远程的文件系统中,基本过程和保存在本地文件系统过程相似,但还必须保证两个前提,一个是SharePoint数据库和远程数据库的版本都必须使用企业版或开发者版,另一个是这两台服务器必须保证存储在同一个域环境中,以保证SharePoint的系统管理员能够通过Windows身份认证连接上远程的数据库。


  • 通过SQL Server Configuration Manager,启用远程数据库的FileStream特性。然后通过以下语句,设置fielstream的可访问级别。   EXEC sp_configure filestream_access_level, 2
    RECONFIGURE

  • 为SharePoint的内容数据库和远程数据库都加增加主密钥   if not exists (select * from sys.symmetric_keys where name =
    N'##MS_DatabaseMasterKey##') create master key encryption by password =
    N'password01!'

  • 为该远程的数据库增加FILESTREAM文件组和文件   use [Remote_Content]
    if not exists (select groupname from sysfilegroups where
    groupname=N'RBSFilestreamProvider') alter database [WSS_Content]
    add filegroup RBSFilestreamProvider contains filestream
      use [Remote _Content]
    alter database [WSS_Content] add file (name = RBSFilestreamFile,
    filename = 'c:\blobstore') to filegroup RBSFilestreamProvider

  • 安装RBS,通过直接执行RBS_X64.msi,截图如下: DSC0003.png
    DSC0004.png

  • 在SharePoint的Power Shell中启用RBS   $cdb = Get-SPContentDatabase "WSS_Content"
      $rbss = $cdb.RemoteBlobStorageSettings
    $rbss.Installed()
    $rbss.Enable()
    $pvdName = $rbss.GetProviderNames()[0]
    $rbss.SetActiveProviderName($pvdName)
      $rbss.Migrate()
  通过以上的步骤就完成了将SharePoint中的BLOB文件存于文件系统的功能。我们可以在SharePoint中添加超过1MB的文件来测试实验效果。
  
  三、 启动垃圾回收


  • 在RBS安装目录下的Matainer目录中,我们通过记事本打开Microsoft.Data.SqlRemoteBlobs.Maintainer.exe文件,以完成垃圾回收器的配置。其中关键在于连接字符串:   <add name ="WSS_Content_ConnStr" connectionString="Data Source=localhost\sharepoint; Initial Catalog=WSS_Content; Integrated Security=True" providerName="System.Data.SqlClient"/>
DSC0005.png


  • 为了马上进行清除,我们通过以下3条SQL指令将这3个时间间隔参数都设置为0。   exec mssqlrbs.rbs_sp_set_config_value 'delete_scan_period','time 00:00:00'
      exec mssqlrbs.rbs_sp_set_config_value 'orphan_scan_period','time 00:00:00'
      exec mssqlrbs.rbs_sp_set_config_value 'garbage_collection_time_window','time 00:00:00'

  • 通过在CMD中找到RBS安装目录下的Matainer目录,通过执行以下的命令启动RBS文件的回收   Microsoft.Data.SqlRemoteBlobs.Maintainer.exe -ConnectionStringName WSS_Content_ConnStr -Operation GarbageCollection -GarbageCollectionPhases rdo

  • 强制FILESTREAM进行"垃圾收集   CHECKPOINT
  四、 卸载RBS
  在使用RBS过程中,往往会由于需求的变动而进行RBS的卸载重装,如果卸载不恰当的话,往往会使得数据库中残留着一些垃圾数据,甚至会导致下一次安装无法顺利进行。所以,下面将介绍如何对RBS进行完整的卸载。


  • SharePoint中卸载   $cdb=Get-SPContentDatabase <ContentDbName>
      $rbs=$cdb.RemoteBlobStorageSettings
      $rbs.GetProviderNames()
      $rbs.SetActiveProviderName("")
      $rbs.Migrate()
      $rbs.Disable()

  • 启动回收   "C:\Program Files\Microsoft SQL Remote Blob Storage 10.50\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe" -connectionstringname RBSMaintainerConnection -operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores -GarbageCollectionPhases rdo -ConsistencyCheckMode r -TimeLimit 120
  • 点击RBS.msi安装文件以卸载RBS

  • 在数据库中删除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")
      Now you can remove the file and filegroup for filestream:
      ALTER DATABASE yourdbname Remove file RBSFilestreamFile;
      ALTER DATABASE yourdbname REMOVE FILEGROUP RBSFilestreamProvider;
      

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118452-1-1.html 上篇帖子: SharePoint 2013开发入门探索(二)- 列表操作 下篇帖子: 使用VS2005搭建典型高效的SharePoint开发环境,提高生产效率,包含远程调试,自动部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表