在 SharePoint Server 中维护 RBS

 

**上一次修改主题:**2018-03-09

**摘要:**了解如何在 SharePoint Server 2016 和 SharePoint 2013 中执行与远程 BLOB 存储 (RBS) 关联的维护任务。

可通过使用 RBS Maintainer(它是 SQL Server 中的一项工具)在 SharePoint Server 中执行与 RBS 关联的大多数维护任务。RBS Maintainer 为 SharePoint Server RBS 部署执行定期垃圾回收和其他维护任务。您可以使用 Windows 任务计划程序或 SQL Server 代理为使用 RBS 的每个数据库计划这些任务。您必须使用命令行参数或通过 XML 文件来设置 RBS Maintainer。对于镜像或复制型数据库,可以针对任何单个实例运行 RBS Maintainer。

本文内容:

  • 配置 RBS 垃圾回收

  • RBS 和 BLOB 存储一致性检查

  • 运行 RBS Maintainer

配置 RBS 垃圾回收

SharePoint Server 会自动为未引用的或已删除的 BLOB 数据添加删除标记。SharePoint Server 通过查看 SharePoint Server 在删除时存储到内容数据库中的 BLOB ID 的列表来对 BLOB 的引用计数。在 RBS 存储表中存在但在内容数据库中不存在的任何 BLOB 引用会被视为由 SharePoint Server 删除并将被标记为删除。在内容数据库中不存在并且是在孤立项清理 时间段之前创建的 BLOB(下文中将进行说明)也会被视为由 SharePoint Server 删除并被标记为删除。

由于 SharePoint Server 会用表格形式列出内容数据库的 RBS 列中的 BLOB 引用,因此每个 RBS 列都必须有有效的索引,才能在 RBS 中注册。

SQL Server RBS Maintainer 工具将删除由 SharePoint Server 进行了删除标记的项。您应将清理任务安排在非高峰时段运行,以降低对常规数据库操作的影响。

RBS 垃圾回收分为以下三个步骤执行:

  • 引用扫描。第一步是将 SharePoint Server 内容数据库中的 RBS 表与 RBS 自己的内部表的内容进行比较,并确定哪些 BLOB 不再被引用。任何已取消引用的 BLOB 都将标记为待删除。

  • 删除传播。下一步是确定哪些 BLOB 被标记为待删除的时间段长于垃圾回收时间段的值,并将其从 BLOB 存储中删除。

  • 孤立项清理。最后一步确定是否有任何 BLOB 存在于 BLOB 存储中却不存在于 RBS 表中。如果存在这种情况,将会删除孤立的 BLOB。

配置 RBS 垃圾回收

可通过指定以下 RBS Maintainer 设置和数据库设置来配置垃圾回收工作:

  • Maintainer 计划。该设置确定运行 RBS Maintainer 的频率。

  • 任务持续时间。该设置确定单个 RBS Maintainer 任务可以运行的最长时间。默认设置为两个小时。

应配置 RBS Maintainer,尽可能降低其活动对常规活动产生的影响。若要了解数据库垃圾回收设置(例如,如何配置设置),请参阅 Running RBS Maintainer(运行 RBS Maintainer)。

RBS 和 BLOB 存储一致性检查

RBS Maintainer 会检查 RBS BLOB 引用的完整性并纠正发现的任何错误。它会对数据库执行多项一致性检查,例如验证 RBS 列是否存在索引,以及验证 SharePoint Server 引用的所有 BLOB 在 RBS 中是否存在。

辅助表一致性检查会验证 RBS 辅助表是否处于一致状态。执行的检查包括如下内容:

  • 验证每个 RBS 表列是否有有效的索引。

  • 验证 RBS 表列是否存在、已启用、具有有效索引并且具有正确的列类型。

尽管您可禁用以下一致性检查,但建议您不要这样做,因为这些检查可帮助确保 RBS 存储的一致性。默认情况下,将启用以下一致性检查:

  • 验证 SharePoint Server 所引用的所有 BLOB 在 RBS 表中是否存在。

  • 验证是否有任何 BLOB 同时标记为正在使用和已删除。

将会记录发现的任何问题,RBS Maintainer 会通过创建缺少的索引条目、撤消注册缺少的列或者将正在使用的 BLOB 标记为未删除来尝试修复这些问题。

运行 RBS Maintainer

RBS 需要在运行 RBS Maintainer 之前,为使用 RBS 的每个数据库定义一个连接字符串。该字符串存储在 <RBS installation path>\Microsoft SQL Remote Blob Storage 10.50\Maintainer 文件夹下的配置文件中,该文件通常是在安装过程中创建的。可以通过结合运行 RBS Maintainer 中列出的命令行参数执行 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 程序来手动运行 RBS Maintainer。

您必须为使用 RBS 的每个数据库计划单独的 RBS Maintainer 任务。以下步骤介绍了如何计划 RBS Maintainer 任务。

计划 RBS Maintainer 任务的具体步骤

  1. 确认您具有对 RBS 安装文件夹的“写入”权限。

  2. 针对要执行的 RBS Maintainer 任务向 *<RBS 安装目录>\*Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config 文件中添加一个连接字符串。RBS 安装程序将使用安装期间提供的连接信息创建一个名为 RBSMaintainerConnection 的连接字符串。但是,必须为每个额外的数据库添加新的连接字符串。

    如果您使用的是 Windows 身份验证,则无需对连接字符串加密。可通过运行以下命令来添加未加密的连接字符串:

    aspnet_regiis -pef connectionStrings . -prov DataProtectionConfigurationProvider
    rename web.config Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config

    如果您使用的是 SQL 身份验证,则必须以加密形式存储 RBS Maintainer 连接字符串。因此,若要添加连接字符串,要么必须加密新字符串,要么必须解密所有连接字符串。加密的新字符串必须一次添加。但是,必须使用作为 Microsoft .NET Framework 的一部分分发的 %windir%\Microsoft.net\Framework\<版本>\Aspnet_regiis.exe 工具,将所有连接字符串同时解密。

    运行以下命令可解密连接字符串,并将结果存储在 Web.config 文件中:

    rename Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config web.config
    aspnet_regiis -pdf connectionStrings

    然后可以解密形式添加字符串,并使用以下命令将文件加密并重命名为 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config:

    aspnet_regiis -pef connectionStrings . -prov DataProtectionConfigurationProvider
    rename web.config Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config

  3. 创建一个 Windows 计划程序任务,以针对每个适用的数据库运行 RBS Maintainer 任务。如果您已在 GUI 模式下运行 RBS 安装程序,则它已自动创建 Windows 计划程序任务。但是,如果您已在命令行模式下运行 RBS 安装程序,则每次计划运行 RBS Maintainer 的任务时都必须执行以下步骤:

    1. 在“开始”菜单上,单击“管理工具”,然后单击“任务计划程序”。

    2. 在“操作”菜单上,单击“创建任务”。

    3. 在“操作”选项卡上,单击“新建”。

    4. 在“新建操作”对话框中的“操作”下拉列表中,选择“启动程序”。

    5. 在“设置”下的“程序/脚本”框中,浏览到 Maintainer 二进制文件 <RBS 安装目录>\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe,然后在“添加参数(可选)”*<RBS installation directory>*文本框中,添加任何可选参数。安装程序会创建以下默认值:
      <-ConnectionStringName RBSMaintainerConnection>
      <-Operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores>
      <-GarbageCollectionPhases rdo>
      <-ConsistencyCheckMode r>
      <-TimeLimit 120>

    6. 单击“确定”。

    7. 在“触发器”选项卡上,单击“新建”。

    8. 在“新建触发器”对话框中,安排任务运行时间,然后单击“确定”。建议将该任务安排在系统活动较少的时间运行。

    9. 在“常规”选项卡上的“安全”下,确保该用户帐户具有运行该任务的适当权限。可以通过单击“更改用户或组”来更改权限。

    10. 在“常规”选项卡上,单击“不管用户是否登录都要运行”,然后单击“确定”。

See also

SharePoint Server 中的 RBS 概述
在 SharePoint Server 场中安装和配置附带 FILESTREAM 的 RBS
在 SharePoint Server 中设置内容数据库以使用附带 FILESTREAM 的 RBS
将内容迁移到 SharePoint Server 的 RBS 或从中迁出内容
在 SharePoint Server 中禁用内容数据库上的 RBS