维护 RBS (SharePoint Server 2010)
适用于: SharePoint Foundation 2010, SharePoint Server 2010
上一次修改主题: 2016-11-30
本文介绍如何在 Microsoft SharePoint Server 2010 中执行与远程 BLOB 存储 (RBS) 关联的维护任务。
可通过使用 RBS Maintainer(它是 Microsoft SQL Server 中的一项工具)在 SharePoint Server 2010 中执行与 RBS 关联的大多数维护任务。RBS Maintainer 为 SharePoint 2010 RBS 部署执行定期垃圾回收和其他维护任务。您可以使用 Windows 任务计划程序或 Microsoft SQL Server 代理为使用 RBS 的每个数据库计划这些任务。您必须使用命令行参数或通过 XML 文件来设置 RBS Maintainer。对于镜像或复制型数据库,可以针对任何单个实例运行 RBS Maintainer。
本文内容:
垃圾收集
RBS 和 BLOB 存储一致性检查
运行 RBS Maintainer
垃圾收集
SharePoint Server 2010 会自动为未引用的或已删除的 BLOB 数据添加删除标记。SharePoint Server 2010 通过查看 SharePoint Server 2010 在删除时存储到内容数据库中的 BLOB ID 的列表来对 BLOB 的引用计数。在 RBS 存储表中存在但在内容数据库中不存在的任何 BLOB 引用会被视为由 SharePoint Server 2010 删除并将被标记为删除。在内容数据库中不存在并且是在孤立项清理 时间段之前创建的 BLOB(本文稍后将说明)也会被视为由 SharePoint Server 2010 删除并被标记为删除。
由于 SharePoint Server 2010 会用表格形式列出内容数据库的 RBS 列中的 BLOB 引用,因此每个 RBS 列都必须有有效的索引,才能在 RBS 中注册。
SQL Server RBS Maintainer 工具将删除由 SharePoint Server 2010 进行了删除标记的项。您应将清理任务安排在非高峰时段运行,以降低对常规数据库操作的影响。
RBS 垃圾收集分为以下三个步骤执行:
引用扫描。第一步是将 SharePoint Server 2010 内容数据库中的 RBS 表与 RBS 自己的内部表的内容进行比较,并确定哪些 BLOB 不再被引用。任何已取消引用的 BLOB 都将标记为待删除。
删除传播。下一步是确定哪些 BLOB 被标记为待删除的时间段长于垃圾收集时间段的值,并将其从 BLOB 存储中删除。
孤立项清理。最后一步确定是否有任何 BLOB 存在于 BLOB 存储中却不存在于 RBS 表中。如果存在这种情况,将会删除孤立的 BLOB。
配置 RBS 垃圾收集
可通过指定以下 RBS Maintainer 设置和数据库设置来配置垃圾回收工作:
Maintainer 计划。该设置确定运行 RBS Maintainer 的频率。
任务持续时间。该设置确定单个 RBS Maintainer 任务可以运行的最长时间。默认设置为两个小时。
您应配置 RBS Maintainer 以最大程度地降低其活动对常规活动的影响。有关数据库垃圾回收设置的信息(包括如何配置设置),请参阅运行 RBS Maintainer(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=199638&clcid=0x804)(该链接可能指向英文页面)。
RBS 和 BLOB 存储一致性检查
RBS Maintainer 会检查 RBS BLOB 引用的完整性并纠正发现的任何错误。它会对数据库执行多项一致性检查,例如验证 RBS 列是否存在索引,以及验证 SharePoint Server 2010 引用的所有 BLOB 在 RBS 中是否存在。
辅助表一致性检查会验证 RBS 辅助表是否处于一致状态。执行的检查包括如下内容:
验证每个 RBS 表列是否有有效的索引。
验证 RBS 表列是否存在、已启用、具有有效索引并且具有正确的列类型。
尽管您可禁用以下一致性检查,但建议您不要这样做,因为这些检查可帮助确保 RBS 存储的一致性。默认情况下,将启用以下一致性检查:
验证 SharePoint Server 2010 所引用的所有 BLOB 在 RBS 表中是否存在。
验证是否有任何 BLOB 同时标记为正在使用和已删除。
将会记录发现的任何问题,RBS Maintainer 会通过创建缺少的索引条目、撤消注册缺少的列或者将正在使用的 BLOB 标记为未删除来尝试修复这些问题。
运行 RBS Maintainer
RBS 需要您在运行 RBS Maintainer 之前,为使用 RBS 的每个数据库定义一个连接字符串。该字符串存储在 <RBS 安装路径>\Microsoft SQL Remote Blob Storage 10.50\Maintainer 文件夹下的配置文件中,该文件通常是在安装过程中创建的。可以通过结合下表中列出的参数执行 Microsoft.Data.SqlRemoteBlobs.Maintainer.exe 程序来手动运行 RBS Maintainer。
参数名称 | 说明 | 值 | 是否必需 |
---|---|---|---|
ConnectionStringName <字符串名称> |
用于配置文件的连接字符串的名称。 |
RBSMaintainerConnection 是在 RBS 安装期间创建的默认名称。 |
是 |
Operation <空格分隔的要执行操作列表> |
要执行的垃圾回收操作。该形参可采用 1 到 4 个实参。ForceFinalize 值不能与任何其他操作结合使用。 |
ConsistencyCheck GarbageCollection Maintenance ConsistencyCheckForStores ForceFinalize |
是 |
GarbageCollectionPhases <阶段> |
要执行的垃圾收集阶段。该参数用于运行或完成垃圾收集。该值必须为一个或多个字母且不含空格。 |
r — 引用扫描。 d — 删除传播。 o — 孤立项清理。 |
是,如果执行垃圾收集。 |
ConsistencyCheckMode <c、r 或 b> |
指定要执行的一致性检查类型。 |
c — 只执行检查。 r — 执行检查并修复发现的任何问题。 b — 检查、修改并重建内部数据结构。 |
是,如果执行一致性检查。 |
ConsistencyCheckExtent <m 或 c> |
指定一致性检查的程度。 |
m — 只检查元数据;不检查单个 BLOB。这是默认参数。 c — 将执行完整检查。 |
如果未指定,则采用 m。 |
ConsistencyCheckForStores <空格分隔的 BLOB 存储名称列表> |
列出将要进行一致性检查的 BLOB 存储的名称。 |
默认情况下,检查所有 BLOB 存储。 |
否 |
TimeLimit <以分钟为单位的时间> |
指定 RBS Maintainer 可用于执行其任务的时间。该参数必须是正整数。 |
否 |
您必须为使用 RBS 的每个数据库计划单独的 RBS Maintainer 任务。以下步骤介绍了如何计划 RBS Maintainer 任务。
计划 RBS Maintainer 任务
确认您具有对 RBS 安装文件夹的“写入”权限。
针对要执行的 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创建一个 Windows 计划程序任务,以针对每个适用的数据库运行 RBS Maintainer 任务。如果您已在 GUI 模式下运行 RBS 安装程序,则它已自动创建 Windows 计划程序任务。但是,如果您已在命令行模式下运行 RBS 安装程序,则每次计划运行 RBS Maintainer 的任务时都必须执行以下步骤:
在“开始”菜单上,单击“管理工具”,然后单击“任务计划程序”。
在“操作”菜单上,单击“创建任务”。
在“操作”选项卡上,单击“新建”。
在“新建操作”对话框中的“操作”下拉列表中,选择“启动程序”。
在“设置”下的“程序/脚本”框中,浏览到 Maintainer 二进制文件 <RBS 安装目录>\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe,然后在“添加参数(可选)”文本框中,添加任何可选参数。安装程序会创建以下默认值:
<-ConnectionStringName RBSMaintainerConnection>
<-Operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores>
<-GarbageCollectionPhases rdo>
<-ConsistencyCheckMode r>
<-TimeLimit 120>单击“确定”。
在“触发器”选项卡上,单击“新建”。
在“新建触发器”对话框中,安排任务运行时间,然后单击“确定”。建议将该任务安排在系统活动较少的时间运行。
在“常规”选项卡上的“安全”下,确保该用户帐户具有运行该任务的正确权限。可以通过单击“更改用户或组”来更改权限。
在“常规”选项卡上,单击“不管用户是否登录都要运行”,然后单击“确定”。
See Also
Concepts
RBS 概述 (SharePoint Server 2010)
规划 RBS (SharePoint Server 2010)
安装和配置 RBS (SharePoint Server 2010)
安装并配置不带 FILESTREAM 提供程序的远程 BLOB 存储 (RBS) (SharePoint Server 2010)
设置内容数据库以使用远程 BLOB 存储 (RBS) (SharePoint Server 2010)
将内容迁移到远程 BLOB 存储 (RBS) 或从中迁出内容 (SharePoint Server 2010)
对内容数据库禁用远程 BLOB 存储 (RBS) (SharePoint Server 2010)