Remote Blob Storage Maintainer Configuration

Requirement

When you implement Remote Blob Storage for SharePoint 2010, you also need to configure the RBS Maintainer as a scheduled task on your SharePoint database server in order to periodically clean the blob stores from orphaned objects (files that have been permanently removed from SharePoint do not get automatically deleted from the blob store!).

Solution

Step 1 – Install the Remote Blob Storage tool from Microsoft on your SQL Server

You may download the tool from http://www.microsoft.com/en-us/download/details.aspx?id=26728

Assuming that you have already configured RBS on your SharePoint farm, you will need to run the following command to install the tool.

Open an administrator Command Prompt and type the following in:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_x64.msi DBNAME=”WSS_Content” DBINSTANCE=”DBInstanceName” ADDLOCAL=Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer

Replace WSS_Content and DBInstanceName to suit your environment as required.

Check the rbs_install_log.txt file and look for the line at near the bottom of the file ‘Product: SQL Server 2008 R2 Remote Blob Store — Installation completed successfully.’

Step 2 – Configure the RBS Maintainer

Assuming you have installed the 64 bit version of the tool, browse to C:\Program Files\Microsoft SQL Remote Blob Storage 10.50\Maintainer and type the following commands:

Note that you only need to do the following if you have configured RBS on more than one database. The first RBS database should already exist in the file and its default ConnectionStringName is RBSMaintainerConnection

Decrypt the configuration file using ASPNET_REGIIS

rename Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config web.config
c:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf connectionStrings .

*Note that the word connectionStrings is case sensitive.

Add the connection strings to all your RBS enabled databases

Add your connection strings following the same format as the existing one. MAke sure you add it under <connectionStrings>here</connectionStrings>

Encrypt the configuration file using ASPNET_REGIIS

c:\windows\Microsoft.NET\Framework\v2.0.50727\-pef connectionStrings . -prov DataProtectionConfigurationProvider
rename web.config Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config

Step 3 – Set the RBS Maintainer to run as a scheduled task

Go to Start -> Administrative Tools -> Task Scheduler

Create a new Basic Task called ‘RBS Maintenance’ and give it a useful description.

Under actions -> Set it to ‘Start a program’.

Browse to “C:\Program Files\Microsoft SQL Remote Blob Storage 10.50\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe”

Add arguments (optional): -ConnectionStringName RBSMaintainerConnection -Operation GarbageCollection ConsistencyCheck -GarbageCollectionPhases rdo -ConsistencyCheckMode r

Click OK to Save

Set the task to run however often you like, it is preferable to run the RBS Maintainer after-hours.

Testing

The default Garbage collection period is 30 days, this means that only objects that have been orphaned for more than 30 days will be deleted by the RBS Maintainer. For your testing purposes, you may wish to reconfigure this to delete immediately, but be sure to change it back to 30 days once you have finished testing.

To set Garbage collection to delete immediately:

exec mssqlrbs.rbs_sp_set_config_value 'garbage_collection_time_window', 'time 00:00:00';
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';

To set it back to 30 days:

exec mssqlrbs.rbs_sp_set_config_value 'garbage_collection_time_window', 'days 30';
exec mssqlrbs.rbs_sp_set_config_value 'delete_scan_period', 'days 30';
exec mssqlrbs.rbs_sp_set_config_value 'orphan_scan_period', 'days 30';

Note that you must delete the files from the End User Recycle bin for RBS to recognise that the file has actually been deleted.

Another thing to take note of is that the blob files only get deleted after 2 log backups and 2 checkpoints on the database. This is when the garbage collector deems that the files are no longer needed. To test this:

  • Backup your database log file
  • Type the command ‘checkpoint’ -> Execute
  • Backup your database log file
  • Type the command ‘checkpoint’ -> Execute

Browse to your blob store, the blobs should now be deleted from the file system.

Tags: , ,

One Response to “Remote Blob Storage Maintainer Configuration”

  1. Michał Pacior December 5, 2016 at 3:26 pm #

    Hej ! Coś hosting szwankuje, strona przestaje działać co
    jakiś czas.

Leave a Reply

%d bloggers like this: