SharePoint 2010 RBS FILESTREAM Provider 的“垃圾收集”

在以前的博客中,我曾经介绍过如何在SharePoint 2010系统中安装和配置RBS FILESTREAM Provider,实现将SharePoint中的文件存储到磁盘文件系统中。但是当用户在SharePoint中上载文件时,文件的二进制内容就会通过RBS FILESTREAM Provider,写入到指定的磁盘文件夹之中。通过RBS可以极大的提高SharePoint存储文件的能力,也有效的使SharePoint的内容数据库不会跟着文件数量的增多而不断膨胀。

但是当用户从SharePoint网站上删除一个文件时(并且已经将文件彻底的从SharePoint回收站中删除),RBS FILESTREAM Provider并不会“真正”的从磁盘文件系统把相应的文件也删除掉。为了提高性能,RBS FILESTREAM Provider只会记录下有一个文件被“删除”了,但是要想真正从磁盘文件系统上删除这个物理文件,就需要一些额外的步骤,来完成“垃圾收集”的工作。

RBS FILESTREAM Provider内置了一个命令行维护工具,这个工具就能够实现“垃圾收集”。除此之外,实际上它还可以进行一致性检查、数据维护等诸多工作。但今天我们要讲的,还是集中在如何使用这个维护工具实现“垃圾收集”,来将那些垃圾物理文件从磁盘文件系统上彻底删除。

当RBS FILESTREAM Provider被安装到机器上时,在默认的安装目录中(Program Files\Microsoft SQL Remote Blob Storage 10.50),有一个“Maintainer”文件夹。里面有2个文件:Microsoft.Data.SqlRemoteBlobs.Maintainer.exe和Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config,前者就是那个命令行维护工具,后者则是维护工具的配置文件。

在使用维护工具之前,需要打开那个配置文件,在配置文件中指定启用了RBS功能的SharePoint内容数据库的连接字符串。每个内容数据库都需要分别指定一个连接字符串。如果你是第一次打开配置文件,会发现里面的连接字符串默认是使用加密方式保存的。嗯,我个人觉得这实在是一件没有必要的事情,因为维护工具本来就需要直接运行在SharePoint服务器上,这是一件需要服务器管理员权限才能干的事情,所以似乎把服务器上配置文件中的连接字符串进行加密,未免过分小心了…当然,如果你是使用混合认证方式连接到数据库,那把连接字符串加密一下也未尝不可。加密连接字符串的方式是使用aspnet_regiis.exe这个命令行工具。不过在这篇文章中,我就只演示用明文保存连接字符串好了。

下图就是在我的机器上,配置文件的内容。里面只定义了一个连接字符串。连接字符串的名称是“WSS_Content_ConnStr”,连接字符串的内容是“Data Source=sp2010;Initial Catalog=WSS_Content;Integrated Security=True”。这些都需要感觉实际环境中的情况进行修改。如果有多个SharePoint内容数据库都启用了RBS,那么就需要针对它们分别添加多个连接字符串,给每个连接字符串一个不同的名称。

接下来就可以在命令行中执行维护工具了。输入如下指令并运行:

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

指令中绿色标记的部分,需要等同于配置文件中所指定的连接字符串名称。维护工具在执行时,会输出一些文字信息,显示出它收集了多少个垃圾文件。

如果你在自己的实验环境中执行了上面的指令,很可能发现它并没有删除一个垃圾文件,而如果你重复执行它,它甚至会告诉你,由于间隔时间太短,它“拒绝”频繁运行。这是因为每个SharePoint内容数据库在启用了RBS之后,都会多3个与维护工具相关的时间间隔参数:“delete_scan_period”、“orphan_scan_period”和“garbage_collection_time_window”,它们指定了诸如最小允许的扫描周期、清除垃圾文件周期等等设置。这3个参数会共同影响维护工具的扫描和清除垃圾文件的过程。

在通常情况下,是不需要修改这3个参数的。在实验环境中,为了检验垃圾收集的效果,可以尝试修改这3个参数。打开SQL Server 2008 Management Studio,选中一个SharePoint内容数据库,然后执行:

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‘

上面3条SQL指令将这3个时间间隔参数都设置为0。如果维护工具发现有垃圾文件,在它输出到屏幕的信息中会显示相应的信息。

到现在为止,上面所讲的整个过程就是RBS FILESTREAM Provider的垃圾收集。但是由于RBS FILESTREAM Provider使用了SQL Server 2008中的FILESTREAM特性,而FILESTREAM组件自己对于垃圾文件,也有自己的一套管理方法。换句话说,在RBS的层次,RBS会通过自己的垃圾收集来删除垃圾文件,但这并不会影响到FILESTREAM的层次。即使在RBS层次已经完成了“垃圾收集”,并认为已经把一个文件删除了,但在FILESTREAM层次,却可能仍然不会将文件从磁盘文件系统上删除,除非FILESTREAM组件自己进行一次“垃圾收集”。

强制FILESTREAM进行“垃圾收集”最简单的方法就是在数据库上执行下面这个SQL指令:

CHECKPOINT

最后,对于RBS FILESTREAM Provider维护工具,由于它是一个命令行工具,所以可以使用Windows计划任务来定时执行它。对于FILESTREAM的SQL指令,可以通过SQL Server的作业来定时执行。

参考:

关于RBS“垃圾收集”的详细信息

关于FILESTREAM“垃圾收集”的详细信息

时间: 2024-10-13 16:11:18

SharePoint 2010 RBS FILESTREAM Provider 的“垃圾收集”的相关文章

SharePoint 2010 RBS 安装和配置的一些记录

1.SharePoint 2010 RBS FILESTREAM Provider 的"垃圾收集": 在SharePoint 中删除上传的文档RBS并不会在文件系统删除文档,理解只是在内容数据库删除了文档的引用,但文件还在,我们需要使用RBS"垃圾回收"工具清理一下. 涂大神的文章:http://kaneboy.blog.51cto.com/1308893/411884 2.设置RBS阈值. 就是说如果你想只有大于这个阈值的文件才存储到文件系统. 设置方法:涂大神文

在SharePoint 2010系统中安装RBS FILESTREAM Provider

这两天在研究怎么写一个RBS Provider,可惜文档实在是很缺乏,基本上除了一篇Spec之外,就只有SQL产品组写的一个sample了.之后如果研究有结果,再整理成文章吧,现在先讲讲怎么直接安装并使用RBS FILESTREAM Provider.     -------------- 胡言乱语与正文的分隔线 --------------------     如果使用SharePoint 2007作为文档管理平台,它很让人诟病的一点就是,SharePoint 2007将文件本身直接存储在SQ

在SharePoint 2010中部署RBS

分类:             SharePoint              2015-01-28 10:12     62人阅读     评论(0)     收藏     举报 一.RBS(Remote BLOB Storage)简介 在SharePoint的大部分企业应用案例中,SharePoint都是要承担着非常繁重的文件管理工作,这些文件类型包括了Word文档,Excel文档甚至是数据量庞大的音频.视频文件.对于这些文件,SharePoint默认都是将它们以BLOB的数据形式存储在内容

在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

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 自定义基于SQL表单身份验证的登录页面

当为SharePoint 2010 WebApplication配置了以混合模式(FBA Authentication和Windows Authentication)登陆后,我们当然可以自定义登陆页面(Sign in Page). 一.登陆SharePoint 2010 Central Administratio后,找到对应的WebApplication,指定其Sign in Page Url即可,如下所示: 二.创建自定义登录项目 首先,为了创建自定义的登陆页,我选择了Application

SharePoint 2010 之 数据库架构

1.SharePoint Foundation 2010 数据库 1)配置数据库 配置:SharePoint_Config 配置数据库包含有关 SharePoint 数据库.Internet Information Services (IIS) 网站.Web 应用程序.受信任的解决方案.Web 部件包.网站模板以及特定于 SharePoint 2010 产品的 Web 应用程序和服务器场设置(例如默认配额设置和被禁止的文件类型)的数据. 在仅服务器场配置备份或还原过程中,不会保存许多配置设置,尤

解决 SharePoint 2010 拒绝访问爬网内容源错误的小技巧(禁用环回请求的两种方式)

这里有一条解决在SharePoint 2010搜索爬网时遇到的“拒绝访问错误”的小技巧. 首先要检查默认内容访问帐户是否具有相应的访问权限,或者添加一条相应的爬网规则.如果目标资源库是一个SharePoint库,验证一下该帐号是否具有对该SharePoint web应用程序具有至少“完全读取”的权限. 当我在升级上来的SharePoint环境中对我新建的博客URL进行爬网时遇到了这个错误. 这个错误发生在当你运行Windows 2008 R2和SharePoint 2010并且爬网进程试图访问一