在SharePoint 2010中部署RBS

分类:             SharePoint              2015-01-28 10:12     62人阅读     评论(0)     收藏     举报

一、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数据还可以接受数据库的事务管理,可进行数据备份以及数据恢复。

RBS将SharePoint 中的BLOB数据分离存储

  可见,RBS在不降低数据的可管理性的同时,还能为我们提高SharePoint数据服务的性能以及可拓展性,无疑是企业在部署SharePoint时一项必不可少的工具。下文将主要介绍如何进行RBS的安装,如何启用RBS的垃圾文件回收,以及如何卸载RBS。

二、安装RBS

  通过RBS中自带的FILESTREAM Provider,我们可以将SharePoint中的BLOB文件保存在本地的文件系统中,也可以通过远程的数据库服务器将这些数据保存在其他的文件系统中。

  A. BLOB保存在本地文件系统

  1. 通过SQL Server Configuration Manager,启用数据库的FileStream特性。然后通过以下语句,设置fielstream的可访问级别。

    EXEC sp_configure filestream_access_level, 2 
    RECONFIGURE

  2. 为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‘

  3. 为该内容数据库增加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

  4. 安装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

    通过下面语句检查是否安装成功

    select * from dbo.sysobjects where name like ‘rbs%‘

  5. 在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身份认证连接上远程的数据库。

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

    EXEC sp_configure filestream_access_level, 2 
    RECONFIGURE

  2. 为SharePoint的内容数据库和远程数据库都加增加主密钥

    if not exists (select * from sys.symmetric_keys where name = 
    N‘##MS_DatabaseMasterKey##‘) create master key encryption by password = 
    N‘password01!‘

  3. 为该远程的数据库增加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

  4. 安装RBS,通过直接执行RBS_X64.msi,截图如下:

  5. 在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的文件来测试实验效果。

三、 启动垃圾回收

  1. 在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"/>

  1. 为了马上进行清除,我们通过以下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‘

  2. 通过在CMD中找到RBS安装目录下的Matainer目录,通过执行以下的命令启动RBS文件的回收

    Microsoft.Data.SqlRemoteBlobs.Maintainer.exe -ConnectionStringName WSS_Content_ConnStr -Operation GarbageCollection  -GarbageCollectionPhases rdo

  3. 强制FILESTREAM进行"垃圾收集

    CHECKPOINT

四、 卸载RBS

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

  1. SharePoint中卸载

    $cdb=Get-SPContentDatabase <ContentDbName>

    $rbs=$cdb.RemoteBlobStorageSettings

    $rbs.GetProviderNames()

    $rbs.SetActiveProviderName("")

    $rbs.Migrate()

    $rbs.Disable()

  2. 启动回收

    "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

  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")

    Now you can remove the file and filegroup for filestream:

    ALTER DATABASE yourdbname Remove file RBSFilestreamFile;

    ALTER DATABASE yourdbname REMOVE FILEGROUP RBSFilestreamProvider;

时间: 2024-12-17 17:09:46

在SharePoint 2010中部署RBS的相关文章

在SharePoint 2010中部署RBS (转)

一.RBS(Remote BLOB Storage)简单介绍 在SharePoint的大部分企业应用案例中,SharePoint都是要承担着非常繁重的文件管理工作,这些文件类型包含了Word文档,Excel文档甚至是数据量庞大的音频.视频文件.对于这些文件,SharePoint默认都是将它们以BLOB的数据形式存储在内容数据库其中.这就非常easy导致SharePoint的数据库容量被这些BLOB数据所高速消耗,并且用户在使用SharePoint进行文件的管理的时候,须要频繁地对这些大数据量的B

sharepoint 2010中启用RBS及所遇问题

首先,介绍下环境 机器名 作用 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 Serv

解决在SharePoint 2010/2013部署自己的Event Handler后,抛出”不能加载被引用的第三方的程序集&quot;的问题

今天在处理客户的一个问题的时候,我们已经把我们SharePoint EventHandler依赖的第三方的TIBCO.EMS.dll注册到GAC里面了,但是日志里面还是抛出了不能加载被引用的第三方的程序集的异常. 在描述解决方案之前,我在这里把相关背景交代一下,我们知道SharePoint提供了Event handler(用户操作事件钩子)让SharePoint用户开发自己的业务逻辑.SharePoint的Event Handler说白了就是,当SharePoint用户操作SharePoint的

SharePoint 2010 中使用Ztree和EasyUI样式冲突问题

<style type="text/css"> /*解决ztree和SharePoint样式冲突问题*/ .ztree li a { display: inline-block !important; padding: 1px 3px 0 0 !important; height: 18px !important; } .ztree li ul { margin: 0 !important; padding: 0 0 0 18px !important; } /*解决tre

SharePoint 2010 中新建项目时显示的“新”“New”字样探讨

SharePoint 2010 中新建项目时显示的"新""New"字样探讨 在SharePoint 2010 中,当我们新建项目时,会发现新项目右上角出现"新"字样.见图: 但是请思考一下,为什么下面第二个项目不一样呢?说明"新"字样出现的时间是有限制的,如果超出了某个时间,会自动消失.你知道"新"字样会出现多久吗?一天?两天? 默认情况下,"新"字样持续2天,由days-to-show

笑男手札:如何隐藏SharePoint 2010中调查(Survey)的保存并关闭(Save and Close)按钮

今天遇到一个case,收益匪浅,留此随笔记录: 利用JavaScript将SharePoint 2010中,新调查(Survey)页面的保存并关闭(Save and Close)按钮隐藏. 这个请求的原因还是因为客户对于页面的按钮功能有误解,如下图: 可以看到,有的调查由于设计的原因,会在回答调查的新页面中出现保存并关闭(Save and Close)按钮. 有些客户在进行调查时,认为点击这个按钮,就已经完成了所有的问卷.其实,这个按钮的作用只是保存当前已经完成的调查内容,而并不是全部内容.Ne

VSTO学习笔记(四)从SharePoint 2010中下载文件

原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给COM加载项添加一些功能:从SharePoint 2010的文档库中下载一个Excel文档到本地. 示例代码下载 本系列所有示例代码均在 Visual Studio 2010 Ultimate RC + Office 2010 Professional Plus Beta x64 上测试通过. 1.首先

SharePoint 2010 中创建超链接到Pop-Up对话框

SharePoint 2010 中创建超链接到Pop-Up对话框 SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面,省事多了,而且不会让用户迷惑,在不同页面中穿梭.问题是在你的页面中,如何创建自定义的超链接,放在Pop-Up对话框里呢? 其实方法真的很简单,使用一个SharePoint内置的JavaScript功能就可以了.(PS:在SharePoint 2010中测试可用,因为我没有2013..) 这里给出两种方法.加到快速

SharePoint 2010中一些必须知道的限制

最大文件名长度是123个字符. 一个文档库(library)里最多可以存放10000个文档 一个视图(view)里最多显示5000个条目(item) 推荐的单个内容数据库(content database)的容量不要大于200GB 文件名中禁止包含的特殊字符有 " # % & * : < > ? \ / { | } ~ } SharePoint 2010中一些必须知道的限制