Remote BLOB storage for
Microsoft SharePoint Server 2010

Microsoft Corporation

Published: March 2011

Author: Microsoft Office System and Servers Team (itspdocs@microsoft.com)

Abstract

This book describes how to use Microsoft SharePoint Server 2010 together with Remote BLOB Storage (RBS) and Microsoft SQL Server 2008 Express and Microsoft SQL Server 2008 R2 Express to optimize database storage resources.

The content in this book is a copy of selected content in the SharePoint Server 2010 technical library (http://go.microsoft.com/fwlink/?LinkId=181463) as of the publication date. For the most current content, see the technical library on the Web.

This document is provided “as-is”. Information and views expressed in this document, including URL and other Internet Web site references, may change without notice. You bear the risk of using it.

Some examples depicted herein are provided for illustration only and are fictitious.  No real association or connection is intended or should be inferred.

This document does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this document for your internal, reference purposes.

© 2011 Microsoft Corporation. All rights reserved.

Microsoft, Access, Active Directory, Backstage, Excel, Groove, Hotmail, InfoPath, Internet Explorer, Outlook, PerformancePoint, PowerPoint, SharePoint, Silverlight, Windows, Windows Live, Windows Mobile, Windows PowerShell, Windows Server, and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.

Contents

Abstract

Contents

Getting help

Overview of Remote BLOB Storage (SharePoint Server 2010)

Introduction to RBS

Using RBS together with SharePoint 2010 Products

Other Resources

Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010)

Review the environment

Evaluate provider options

Install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider (SharePoint Server 2010)

Enable FILESTREAM and provision the RBS data store

Install RBS

Enable and test RBS

Concepts

Install and configure Remote BLOB Storage (RBS) without the FILESTREAM provider (SharePoint Server 2010)

Install RBS

Enable and test RBS

Concepts

Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010)

Set a content database to use RBS

Concepts

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Concepts

Disable Remote BLOB Storage (RBS) on a content database (SharePoint Server 2010)

Maintain Remote BLOB Storage (RBS) (SharePoint Server 2010)

Garbage collection

RBS and BLOB store consistency checks

Running the RBS Maintainer

Concepts

Getting help

Every effort has been made to ensure the accuracy of this book. This content is also available online in the Office System TechNet Library, so if you run into problems you can check for updates at:

http://technet.microsoft.com/office

If you do not find your answer in our online content, you can send an e-mail message to the Microsoft Office System and Servers content team at:

itspdocs@microsoft.com

If your question is about Microsoft Office products, and not about the content of this book, please search the Microsoft Help and Support Center or the Microsoft Knowledge Base at:

http://support.microsoft.com

Overview of Remote BLOB Storage (SharePoint Server 2010)

Published: May 12, 2010

This article describes how you can use Microsoft SharePoint Server 2010 together with Remote BLOB Storage (RBS) and Microsoft SQL Server 2008 Express and Microsoft SQL Server 2008 R2 Express to optimize database storage resources.

Before you implement RBS, we highly recommend that you evaluate its potential costs and benefits. For more information and recommendations about using RBS in a SharePoint Server 2010 installation, see Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010).

In this article:

·         Introduction to RBS

·         Using RBS together with SharePoint 2010 Products

Introduction to RBS

RBS is a library API set that is incorporated as an add-on feature pack for Microsoft SQL Server.  It can be run on the local server running Microsoft SQL Server 2008 R2, SQL Server 2008 or SQL Server 2008 R2 Express. To run RBS on a remote server, you must be running SQL Server 2008 R2 Enterprise edition. RBS is not supported for Microsoft SQL Server 2005.

Binary large objects (BLOBs) are data elements that have either of the following characteristics:

·         Unstructured data that has no schema (such as a piece of encrypted data).

·         A large amount of binary data (many megabytes or gigabytes) that has a very simple schema, such as image files, streaming video, or sound clips.

By default, Microsoft SQL Server stores BLOB data in its databases. As a database’s usage increases, the total size of its BLOB data can expand quickly and grow larger than the total size of the document metadata and other structured data that is stored in the database. Because BLOB data can consume a lot of file space and uses server resources that are optimized for database access patterns, it can be helpful to move BLOB data out of the SQL Server database, and into a separate file.

Before RBS was supported in SQL Server, expensive storage such as RAID 10 was required for the whole SQL database including BLOB data. By using RBS, you can move 80 to 90 percent of the data (that is, BLOBs) onto less expensive storage such as RAID 5 or external storage solutions.

RBS uses a provider to connect to any dedicated BLOB store that uses the RBS APIs. Storage solution vendors can implement providers that work with RBS APIs. SharePoint Server 2010 supports a BLOB storage implementation that accesses BLOB data by using the RBS APIs through such a provider. You can implement RBS for Microsoft SharePoint 2010 Products by using a supported provider that you obtain from a third-party vendor. Most third-party providers store BLOBs remotely.

In addition to third-party providers, you can use the RBS FILESTREAM provider that is available through the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2. The RBS FILESTREAM provider uses the SQL Server FILESTREAM feature to store BLOBs in an additional resource that is attached to the same database and stored locally on the server. The FILESTREAM feature manages BLOBs in a SQL database by using the underlying NTFS file system.

The location that an RBS provider stores the BLOB data depends on the provider that you use. In the case of the SQL FILESTREAM provider, the data is not stored in the MDF file, but in another file that is associated with the database.

This implementation of the FILESTREAM provider is known as the local FILESTREAM provider. You can conserve resources by using the local RBS FILESTREAM provider to place the extracted BLOB data on a different (cheaper) local disk such as RAID 5 instead of RAID 10. You cannot use RBS with the local FILESTREAM provider on remote storage devices, such as network attached storage (NAS). The FILESTREAM provider is supported when it is used on local hard disk drives only.

A remote RBS FILESTREAM provider that is available in SQL Server 2008 R2 Express can store BLOB data on remote commodity storage such as direct-attached storage (DAS) or NAS. However, SharePoint Server 2010 does not currently support the remote RBS FILESTREAM provider.

Using RBS together with SharePoint 2010 Products

SharePoint Server 2010 supports the FILESTREAM provider that is included in the SQL Server Remote BLOB Store installation package from the Feature Pack for SQL Server 2008 R2. This version of RBS is available at http://go.microsoft.com/fwlink/?LinkID=177388 (http://go.microsoft.com/fwlink/?LinkID=177388). Be aware that this is the only version of RBS that is supported by SharePoint Server 2010. Earlier versions are not supported. Third-party RBS providers can also be used with the RBS APIs to create a BLOB storage solution that is compatible with SharePoint Server 2010.

In SharePoint Server 2010, site collection backup and restore and site import or export will download the file contents and upload them back to the server regardless of which RBS provider is being used. However, the FILESTREAM provider is the only provider that is currently supported for SharePoint 2010 Products farm database backup and restore operations.

When RBS is implemented, SQL Server itself is regarded as an RBS provider. You will encounter this factor when you migrate content into and out of RBS.

If you plan to store BLOB data in an RBS store that differs from your SharePoint Server 2010 content databases, you must run SQL Server 2008 with SP1 and Cumulative Update 2. This is true for all RBS providers.

The FILESTREAM provider that is recommended for upgrading from stand-alone installations of Windows SharePoint Services 3.0 that have content databases that are over 4 gigabytes (GB) to SharePoint Server 2010 associates data locally with the current content database, and does not require SQL Server Enterprise Edition.

 Important:

RBS does not enable any kind of direct access to any files that are stored in Microsoft SharePoint 2010 Products. All access must occur by using SharePoint 2010 Products only.

Other Resources

FILESTREAM Overview (http://go.microsoft.com/fwlink/?LinkID=166020&clcid=0x409)

FILESTREAM Storage in SQL Server 2008 (http://go.microsoft.com/fwlink/?LinkID=165746&clcid=0x409)

Remote BLOB Store Provider Library Implementation Specification (http://go.microsoft.com/fwlink/?LinkID=166066&clcid=0x409)

Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010)

Updated: July 8, 2010

By default, SQL Server stores binary large object (BLOB) data in its databases. As a database’s usage increases, the total size of the BLOB data that is stored in it can expand quickly and grow larger than the total size of the document metadata and other structured data that is stored in the database. BLOB data consumes large amounts of file space and uses server resources that are optimized for database access patterns instead of for the storage of large files.

Remote BLOB Storage (RBS) is a library API set that is incorporated as an add-on feature pack for Microsoft SQL Server.  It can be run on the local server running Microsoft SQL Server 2008 R2, SQL Server 2008 or SQL Server 2008 R2 Express. To run RBS on a remote server, you must be running SQL Server 2008 R2 Enterprise edition. RBS is designed to move the storage of BLOBs from database servers to commodity storage solutions. RBS saves significant space, conserves expensive server resources, and provides a standardized model for applications to access BLOB data. In Microsoft SharePoint Server 2010, RBS can be used for content databases only.

For more background information about RBS, including a discussion about the FILESTREAM provider, see Overview of Remote BLOB Storage (SharePoint Server 2010).

RBS can provide the following benefits:

·         BLOB data can be stored on less expensive storage devices that are configured to handle simple storage.

·         The administration of the BLOB storage is controlled by a system that is designed specifically to work with BLOB data.

·         Database server resources are freed for database operations.

These benefits are not free. Before you implement RBS with SharePoint Server 2010, you should evaluate whether these potential benefits override the costs and limitations of implementing and maintaining RBS. This article describes this evaluation process.

In this article:

·         Review the environment

·         Evaluate provider options

Review the environment

To start your analysis of RBS, review the size of the content databases. If the content database sizes meet the criteria for a RBS recommendation, you should then consider what kind of content is being accessed and how it is being used.

Content database sizes

You can expect to benefit from RBS in the following cases:

·         The content databases are larger than 500 gigabytes (GB).

·         The BLOB data files are larger than 256 kilobytes (KB).

·         The BLOB data files are at least 80 KB and the database server is a performance bottleneck. In this case, RBS reduces the both the I/O and processing load on the database server.

Although the presence of many small BLOBs can create some decrease in performance, the cost of storage is usually the most important consideration when you evaluate RBS. The predicted decrease in performance is usually an acceptable trade-off for the cost savings in storage hardware.

Content type and usage

RBS is most beneficial in systems that store very large files, such as digital media. RBS is typically implemented in environments in which large stored files are infrequently accessed, such as an archive. If this situation describes your environment, you should consider implementing RBS.

If you are storing many small (less than 256 KB) files that are frequently accessed by many users, you might experience increased latency on sites that have many small files that are stored in RBS. Increased latency is one cost factor that you should consider when you evaluate RBS for your storage solution. However, it is unlikely to be the strongest consideration. The amount of increased latency is also related to the RBS provider that you use.

Evaluate provider options

RBS requires a provider that connects the RBS APIs and SQL Server.

 Important:

RBS can be run on the local server running Microsoft SQL Server 2008 R2, SQL Server 2008 or SQL Server 2008 R2 Express. To run RBS on a remote server, you must be running SQL Server 2008 R2 Enterprise edition. SharePoint Server 2010 requires you to use the version of RBS that is included with the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2. Earlier versions of RBS will not work with SharePoint Server 2010. In addition, RBS is not supported in SQL Server 2005.

BLOBs can be kept on commodity storage such as direct-attached storage (DAS) or network attached storage (NAS), as supported by the provider. The FILESTREAM provider is supported by SharePoint Server 2010 when it is used on local hard disk drives only. You cannot use RBS with FILESTREAM on remote storage devices, such as NAS.

The following table summarizes FILESTREAM benefits and limitations.

Operational requirement

RBS with FILESTREAM

RBS without FILESTREAM

SQL Server integrated backup and recovery of the BLOB Store

Yes

Yes

Scripted migration to BLOBs

Yes

Yes

Supports mirroring

No

No

Log shipping

Yes

Yes, with provider implementation

Database snapshots

No1

No1

Geo replication

Yes

No

Encryption

NTFS only

No

Network Attached Storage (NAS)

Not supported by SharePoint 2010 Products

Yes, with provider implementation

1If the RBS provider that you are using does not support snapshots, you cannot use snapshots for content deployment or backup. For example, the SQL FILESTREAM provider does not support snapshots.

If FILESTREAM is not a practical provider for your environment, you can purchase a supported third-party provider. In this case, you should evaluate the following criteria when shopping for a provider:

·         Backup and restore capability

·         Tested disaster recovery

·         Deployment and data migration

·         Performance impact

·         Long-term administrative costs

 Important:

We do not recommend that you develop your own provider unless you are an independent software vendor (ISV) that has significant development experience in designing storage solutions. 

Install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider (SharePoint Server 2010)

Published: May 12, 2010

This article describes how to install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider on a Microsoft SQL Server 2008 database server that supports a Microsoft SharePoint Server 2010 system. RBS is typically recommended in the case where the content databases are 4 gigabytes (GB) or larger.

RBS is a library API set that is incorporated as an add-on feature pack for Microsoft SQL Server 2008 and Microsoft SQL Server 2008 Express. RBS is designed to move the storage of binary large objects (BLOBs) from database servers to commodity storage solutions. RBS ships with the RBS FILESTREAM provider, which uses the RBS APIs to store BLOBs. Before installing and implementing RBS, we highly recommend that you read the articles Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010) and Overview of Remote BLOB Storage (SharePoint Server 2010).

If you want to implement RBS with a provider other than FILESTREAM, read the article Install and configure Remote BLOB Storage (RBS) without the FILESTREAM provider (SharePoint Server 2010).

In this article:

·         Enable FILESTREAM and provision the RBS data store

·         Install RBS

·         Enable and test RBS

The user account that you use to perform the procedures that are described in this article must have the following memberships:

·         Administrators group on the Web servers and application servers.

·         Farm Administrators group for the SharePoint Server 2010 farm.

·         SQL Server dbcreator and securityadmin fixed server roles on the computer that is running SQL Server 2008 Express or SQL Server 2008.

Enable FILESTREAM and provision the RBS data store

You must enable and configure FILESTREAM on the computer that is running SQL Server 2008 that hosts the SharePoint Server 2010 databases. To enable and configure FILESTREAM, follow the instructions in How to: Enable FILESTREAM (http://go.microsoft.com/fwlink/?LinkID=166110&clcid=0x409).

After you have enabled and configured FILESTREAM, provision a BLOB store as described in the following procedure.

To provision a BLOB Store with the FILESTREAM provider

1.     Click Start, click All Programs, click Microsoft SQL Server 2008, and then click SQL Server Management Studio. 

2.     Expand Databases.

3.     Select the content database for which you want to create a BLOB store, and then click New Query.

4.     In the Query pane, copy and execute each of the following SQL queries in the sequence provided here.

 Tip:

For best performance, simplified troubleshooting, and as a general best practice, we recommend that you create the BLOB store on a volume that does not contain the operating system, paging files, database data, log files, or the tempdb file.

use [ContentDbName] if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'

use [ContentDbName] if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [ContentDbName]  add filegroup RBSFilestreamProvider contains filestream

use [ContentDbName] alter database [ContentDbName] add file (name = RBSFilestreamFile, filename = 'c:\Blobstore') to filegroup RBSFilestreamProvider

Where [ContentDbName] is the content database name, and c:\BLOBStore is the volume\directory in which you want the BLOB store created. Be aware that you can provision a BLOB store only one time. If you attempt to provision the same BLOB store more than one time, you will receive an error.

Install RBS

You must install RBS on the database server and on all Web servers and application servers in the SharePoint farm. You must configure RBS separately for each associated content database. 

 Warning:

We do not recommend that you install RBS by running the RBS_X64.msi file and launching the Install SQL Remote BLOB Storage wizard. The wizard configures the RBS Maintainer to run a scheduled task every 30 days. This setting might not be optimal for your environment. For more information about the RBS Maintainer, see the SQL Server Help documentation that is included with the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2.

To install RBS on a Web server

1.     On any Web server, go to http://go.microsoft.com/fwlink/?LinkID=177388 (http://go.microsoft.com/fwlink/?LinkID=177388) to download the RBS_X64.msi file.

 Important:

You must install the version of RBS that is included in the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2. The version of RBS must be 10.50.xxx. No earlier version of RBS is supported for SharePoint Server 2010.

2.     Click Start and then type cmd in the text box. In the list of results, right-click cmd, and then click Run as administrator. Click OK.

3.     Copy and paste the following command at the command prompt:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<ContentDbName>" DBINSTANCE="<DBInstanceName>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

Where:

·         <ContentDbName> is the database name.

·         <DBInstanceName> is the SQL Server instance name.

The operation should complete in approximately one minute.

To install RBS on all additional Web and application servers

1.     On a Web server, go to http://go.microsoft.com/fwlink/?LinkID=177388 (http://go.microsoft.com/fwlink/?LinkID=177388) and download the RBS_X64.msi file.

 Important:

You must install the version of RBS that is included in the SQL Server Remote BLOB Store installation package from the SQL Server Remote BLOB Store installation package from the Feature Pack for SQL Server 2008 R2. The version of RBS must be 10.50.xxx. No earlier version of RBS is supported for SharePoint Server 2010.

2.     Click Start and then type cmd in the text box. In the list of results, right-click cmd, and then click Run as administrator. Click OK.

3.     Copy and paste the following command at the command prompt:

msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi DBNAME="ContentDbName" DBINSTANCE="DBInstanceName" ADDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"

Where:

·         ContentDbName is the database name

·         DBInstanceName is the name of the SQL Server instance.

The operation should finish within approximately one minute.

4.     Repeat this procedure on all Web servers and application servers. If you do not install RBS on every Web and application server, users will encounter errors when they try to write to the content databases.

To confirm the RBS installation

1.     The rbs_install_log.txt log file is created in the same location as the RBS_X64.msi file. Open the rbs_install_log.txt log file with a text editor and scroll toward the bottom of the file. Within the last 20 lines of the end of the file, an entry should read as follows:  “Product: SQL Remote Blob Storage – Installation completed successfully”.

2.    On the computer that is running SQL Server 2008, verify that the RBS tables were created in the content database. Several tables should reside under the content database with names that are preceded by the letters "mssqlrbs".

Enable and test RBS

You must enable RBS on one Web server in the SharePoint farm. It does not matter which Web server you choose for this activity, as long as RBS was installed on it by using the previous procedure.

To enable RBS

1.     On the Start menu, click Programs, click Microsoft SharePoint 2010 Products, and then click SharePoint 2010 Management Shell.

2.     At the Windows PowerShell command prompt, type each of the following commands.

$cdb = Get-SPContentDatabase –WebApplication <http://SiteName>

Where <http://SiteName> is the URL of the Web application that is connected to the content database.

$rbss = $cdb.RemoteBlobStorageSettings

$rbss.Installed()

$rbss.Enable()

$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])

$rbss

To test the RBS data store

1.     Connect to a document library on any Web server.

2.     Upload a file that is at least 100 kilobytes (KB) to the document library.

3.     On the computer that contains the RBS data store, click Start, and then click Computer.

4.     Browse to the RBS data store directory.

5.     Browse to the file list and open the folder that has the most recent modified date (other than $FSLOG). In that folder, open the file that has the most recent modified date. Verify that this file has the same size and contents as the file that you uploaded. If it does not, ensure that RBS is installed and enabled correctly.

To enable additional databases to use RBS, see Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010).

Concepts

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Disable Remote BLOB Storage (RBS) on a content database (SharePoint Server 2010)

Install and configure Remote BLOB Storage (RBS) without the FILESTREAM provider (SharePoint Server 2010)

Published: May 12, 2010

This article describes how to install and configure Remote BLOB Storage (RBS) on a Microsoft SQL Server 2008 database server that supports a Microsoft SharePoint Server 2010 system. RBS is typically recommended in the case where the content databases are 4 gigabytes (4 GB) or larger.

RBS is a library API set that is incorporated as an add-on feature pack for Microsoft SQL Server 2008 and Microsoft SQL Server 2008 Express. RBS is designed to move the storage of binary large objects (BLOBs) from database servers to commodity storage solutions.

RBS uses a provider to connect to any dedicated BLOB store that implements the RBS APIs. RBS ships with the RBS FILESTREAM provider. Third-party RBS providers can also be used with the RBS APIs to create a BLOB storage solution.

If you decide to implement RBS by using a third-party provider instead of FILESTREAM, you can use the information in this article to install RBS without installing the FILESTREAM provider. Before you can use RBS, you must install the third-party provider by using the documentation that is supplied with that provider.

If you want to install and configure RBS with the FILESTREAM provider, see Install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider (SharePoint Server 2010).

Before installing and implementing RBS, we highly recommend that you read the articles Overview of Remote BLOB Storage (SharePoint Server 2010) and Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010).

In this article:

·         Install RBS

·         Enable and test RBS

The user account that you use to perform the procedures that are described in this article must have the following memberships:

·         Administrators group on the Web servers and application servers.

·         SQL Server dbcreator and securityadmin fixed server roles on the computer that is running SQL Server 2008 Express or SQL Server 2008.

Install RBS

You must install RBS on the database server and on all Web servers and application servers in the SharePoint farm. You must configure RBS separately for each associated content database. 

 Warning:

We do not recommend that you install RBS by running the RBS_X64.msi file and launching the Install SQL Remote BLOB Storage wizard. The wizard configures the RBS Maintainer to run a scheduled task every 30 days. This setting might not be optimal for your environment. For more information about the RBS Maintainer, see the SQL Server Help documentation that is included with the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2.

To install RBS on a Web server

1.     On any Web server, go to http://go.microsoft.com/fwlink/?LinkID=177388 (http://go.microsoft.com/fwlink/?LinkID=177388) to download the RBS_X64.msi file. When prompted whether to Run or Save the file, click Save.

 Important:

You must install the version of RBS that is included in the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2. The version of RBS must be 10.50.xxx. No earlier version of RBS is supported for SharePoint Server 2010.

2.     Click Start, and then type cmd in the text box. In the list of results, right-click cmd, and then click Run as administrator. Click OK.

3.     Copy and paste the following command at the command prompt:

msiexec /lvx* rbs_install.log /q /i rbs.msi ADDLOCAL=ServerScript,Client,Maintainer

The operation should finish in approximately one minute.

Repeat this procedure on every Web server and application server in the farm. If you do not install RBS on every Web and application server, users will encounter errors when they try to write to the content databases.

To install RBS on the database server and set a content database to use RBS

1.     On the database server, go to http://go.microsoft.com/fwlink/?LinkID=177388 (http://go.microsoft.com/fwlink/?LinkID=177388) and download the RBS_X64.msi file.

 Important:

You must install the version of RBS that is included in the SQL Server Remote BLOB Store installation package from the Feature Pack for Microsoft SQL Server 2008 R2. The version of RBS must be 10.50.xxx. No earlier version of RBS is supported for SharePoint Server 2010.

2.     Click Start and then type cmd in the text box. In the list of results, right-click cmd, and then click Run as administrator. Click OK.

3.     Copy and paste the following command at the command prompt:

msiexec /lvx* rbs_enable_WSS_Content.log /q /i rbs.msi ADDLOCAL=EnableRBS DBINSTANCE="<DBInstanceName>" DBNAME="<ContentDbName>"

Where:

·         <DBInstanceName> is the name of the SQL Server instance.

·         <ContentDbName> is the name of the content database.

The operation should finish within approximately one minute.

To set additional content databases to use RBS, see Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010)

To confirm the RBS installation

1.     The rbs_install_log.txt log file is created in the same location as the RBS_X64.msi file. Open the rbs_install_log.txt log file by using a text editor and scroll toward the bottom of the file. Within the last 20 lines of the end of the file, an entry should read as follows: “Product: SQL Remote Blob Storage – Installation completed successfully”

.

2.    On the computer that is running SQL Server 2008, verify that the RBS tables were created in the content database. Several tables that have names that are preceded by the letters "mssqlrbs" should be located under the content database name.

Enable and test RBS

You must enable RBS on one Web server in the SharePoint farm. It is not important which Web server that you select for this activity, as long as RBS was installed on it by using the previous procedure.

To enable RBS

1.     On the Start menu, click Programs, click Microsoft SharePoint 2010 Products, and then click SharePoint 2010 Management Shell.

2.     At the Windows PowerShell command prompt, type the following commands:

$cdb = Get-SPContentDatabase –WebApplication <http://SiteName>

Where <http://SiteName> is the Web application that is attached to the content database.

$rbss = $cdb.RemoteBlobStorageSettings $rbss.Installed() $rbss.Enable() $rbss

To test the RBS data store

1.     Connect to a document library on any Web server.

2.     Upload a file that is at least 100 kilobytes (KB) to the document library.

3.     On the computer that contains the RBS data store, click Start, and then click Computer.

4.     Browse to the RBS data store directory.

5.     Browse to the file list and open the folder that has the most recent modified date (other than $FSLOG). In that folder, open the file that has the most recent modified date. Verify that this file has the same size and contents as the file that you uploaded. If it does not, ensure that RBS is installed and enabled correctly.

Concepts

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Disable Remote BLOB Storage (RBS) on a content database (SharePoint Server 2010)

Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010)

Published: May 12, 2010

This article describes how to set a content database to use Remote BLOB Storage (RBS). Its instructions assume that you have already installed RBS for use with Microsoft SharePoint Server 2010. To install and configure RBS, see Install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider (SharePoint Server 2010).

Set a content database to use RBS

To set a content database to use RBS, you must provision a binary large object (BLOB) store in SQL Server, add the content database information to the RBS configuration on a Web server, and then test the RBS data store.

These instructions assume that you have installed SQL Server Management Studio on the database server. If this is not the case, you can download and install Management Studio from Microsoft SQL Server 2008 Management Studio Express (http://go.microsoft.com/fwlink/?LinkID=186132&clcid=0x409). You can perform the following procedures on any Web server or application server in the farm. However, for simplicity in this article, we refer to this server as a Web server.

 Note:

These instructions assume that you are using the FILESTREAM RBS provider. If you are using a different RBS provider, refer to that provider’s instructions to perform these operations.

To set a content database to use RBS

1.     Verify that the user account that you use to perform this procedure is a member of the Administrators group on the Web server, and is a member of the SQL Server dbcreator and securityadmin fixed server roles on the computer that is running Microsoft SQL Server 2008 R2, SQL Server 2008 with Service Pack 1 (SP1) and Cumulative Update 2, or SQL Server 2005 with SP3 and Cumulative Update 3.

2.     Click Start, click All Programs, click Microsoft SQL Server 2008, and then click SQL Server Management Studio.

3.     In the Connect to Server dialog box, specify the server type, server name, and authentication method of the database server that you want to connect to, and then click Connect.

4.     Expand Databases.

5.     Right-click the content database for which you want to create a BLOB store, and then click New Query.

6.     In the Query pane, copy and execute the following SQL queries in the sequence that is provided.

use [ContentDbName] if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##') create master key encryption by password = N'Admin Key Password !2#4'

use [ContentDbName] if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider') alter database [ContentDbName] add filegroup RBSFilestreamProvider contains filestream

use [ContentDbName] alter database [ContentDbName] add file (name = RBSFilestreamFile, filename = 'c:\RBSStore') to filegroup RBSFilestreamProvider

Where [ContentDbName] is the content database name and c:\RBSStore is the volume\directory that will contain the RBS data store. Be aware that you can provision a RBS store only one time. If you attempt to provision the same RBS data store multiple times, you will receive an error.

 Tip:

For best performance, simplified troubleshooting, and as a general best practice, we recommend that you create the RBS data store on a volume that does not contain the operating system, paging files, database data, log files, or the tempdb file.

7.     Click Start, click Run, type cmd into the Run text box, and then click OK.

8.     Copy and paste the following command at the command prompt:

msiexec /qn /i rbs.msi REMOTEBLOBENABLE=1 FILESTREAMPROVIDERENABLE=1 DBNAME=<ContentDbName> FILESTREAMSTORENAME=FilestreamProvider_1 ADDLOCAL=EnableRBS,FilestreamRunScript DBINSTANCE=<DBInstanceName>>

Where <ContentDbName> is the name of the content database, and <DBInstanceName> is the name of the SQL Server instance. The operation should finish within approximately one minute.

To test the RBS data store

1.     Connect to a document library on any Web server.

2.     Upload a file that is at least 100 kilobytes (KB) to the document library.

3.     On the computer that contains the RBS data store, click Start, and then click Computer.

4.     Navigate to the RBS data store directory.

5.     Locate the folder that has the most recent modification date, other than the $FSLOG folder. Open this folder and locate the file that has the most recent modification date. Verify that this file has the same size and contents as the file that you uploaded. If does not, ensure that RBS is installed and enabled correctly.

Concepts

Overview of Remote BLOB Storage (SharePoint Server 2010)

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Published: May 12, 2010

This article describes how to migrate content into or out of Remote BLOB Storage (RBS), or to a different RBS provider.

After installing RBS and setting a content database to use RBS, all existing content in that database can be migrated into the database's active provider. You use the same Windows PowerShell 2.0 command to migrate content into or out of RBS, or to another RBS provider. When RBS is implemented, SQL Server itself is regarded as an RBS provider.

You can migrate content databases at any time, but we recommend that you perform migrations during low usage periods so that this activity does not cause performance degradation for users. Migration moves all content from the specified content database into the storage mechanism of the newly named provider.

This operation can be performed on any Web server in the farm. You only need to perform the operation one time on one Web server for each content database that you want to migrate.

To migrate a content database by using Windows PowerShell

1.     Verify that you meet the following minimum requirements: See Add-SPShellAdmin.

2.     On the Start menu, click All Programs.

3.     Click Microsoft SharePoint 2010 Products.

4.     Click SharePoint 2010 Management Shell.

5.     At the Windows PowerShell command prompt, type the commands in the following steps.

6.     To obtain the content database RBS settings object:

$cdb=Get-SPContentDatabase <ContentDbName> $rbs=$cdb.RemoteBlobStorageSettings

Where <ContentDbName> is the name of the content database.

7.     To view a list of all RBS providers that are installed on the Web server:

$rbs.GetProviderNames()

8.     To set the active RBS provider:

$rbs.SetActiveProviderName(<NewProvider>)

Where <NewProvider> is the name of the provider that you want to make active for this content database. If you want to migrate the content database out of RBS altogether and back into SQL Server inline storage, set this value to ()

.

9.     Migrate the data from RBS to the new provider or to SQL Server:

$rbs.Migrate()

Concepts

Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010)

Disable Remote BLOB Storage (RBS) on a content database (SharePoint Server 2010)

Published: May 12, 2010

You can disable Remote BLOB Storage (RBS) on any content database. After you disable RBS on a content database, binary large objects (BLOBs) are stored inline in SQL Server for all subsequent writes to the content database. This article describes how to disable RBS on a content database.

You can disable RBS on a content database by setting the active provider name to the empty string in Windows PowerShell. Each content database has a RemoteBlobStorageSettings property that can be used to invoke the SetActiveProviderName method.

This action does not change the storage location of any BLOBs that have previously been stored in RBS or inline storage. Disabling RBS does not uninstall RBS. We do not recommend that you uninstall RBS.

This operation can be performed on any Web server in the farm. You only need to perform the operation one time on one Web server for each content database for which you want to disable RBS.

 Caution:

Do not use the Disable() method on the RemoteBlobStorageSettings object. This method is used only to uninstall RBS, and it is not recommended to simply disable the writing of new BLOBs into RBS.

You must use Windows PowerShell 2.0 cmdlets to disable RBS. There is no user interface option for this task.

To disable RBS by using Windows PowerShell

1.     Verify that you meet the following minimum requirements: See Add-SPShellAdmin.

2.     On the Start menu, click All Programs.

3.     Click Microsoft SharePoint 2010 Products.

4.     Click SharePoint 2010 Management Shell.

5.     At the Windows PowerShell command prompt, type the following commands:

$site=Get-SPSite "<http://yourSiteURL>" $rbss=$site.ContentDatabase.RemoteBlobStorageSettings $rbss.SetActiveProviderName("")

Where <http://yourSiteURL> is the Web application that is attached to the content database that is being disabled for RBS.

For more information, see Get-SPSite (http://technet.microsoft.com/library/f3422bf4-0f9b-4f22-94c8-2a0606a31b16(Office.14).aspx).

Maintain Remote BLOB Storage (RBS) (SharePoint Server 2010)

Published: August 27, 2010

The maintenance tasks associated with Remote BLOB Storage (RBS) are mainly performed through the RBS Maintainer. The RBS Maintainer performs periodic garbage collection and other maintenance tasks for an RBS deployment. You can schedule these tasks for each database that uses RBS by using Windows Task Scheduler or Microsoft SQL Server Agent. The RBS Maintainer must be provisioned through command-line parameters or through an XML file. In the case of mirrored or replicated databases, the Maintainer should be run against any single instance.

In this article:

·         Garbage collection

·         RBS and BLOB store consistency checks

·         Running the RBS Maintainer

Garbage collection

Garbage collection is how unreferenced or deleted data is removed from the remote BLOB store. Garbage collection in RBS is performed passively. References to BLOBs are counted by looking at the list of BLOB IDs stored by the application in its RBS table columns at the time of garbage collection.

Any BLOB references that are present in the RBS auxiliary tables but absent in any RBS column in application tables are assumed to be deleted by the application and will be collected as garbage. BLOBs that are not present in any RBS column and were created before the Orphan Cleanup Time Window, described later in this article, are also assumed to be deleted by the application and will be collected as garbage.

Because passive garbage collection tabulates BLOB references from the RBS columns of an application's tables, every RBS column must have a valid index before it can be registered in RBS.

This garbage collection is performed by the RBS Maintainer tool. It should be scheduled to run at non-busy times to reduce the effect on regular database operations.

RBS garbage collection is performed in the following three steps:

·         Reference scan. The first step compares the contents of the application's RBS tables with RBS's own internal tables and determines which BLOBs are no longer referenced. Any unreferenced BLOBs are marked for deletion.

·         Delete propagation. The next step determines which BLOBs have been marked for deletion for a period of time longer than the garbage_collection_time_window value and deletes them from the BLOB store.

·         Orphan cleanup. The final step determines whether any BLOBs are present in the BLOB store but absent in the RBS tables. These orphaned BLOBs are then deleted.

Configuring RBS garbage collection

Garbage collection can be configured by adjusting several Maintainer and database settings. The Maintainer settings are as follows:

·         Maintainer schedule. This setting determines how often the Maintainer will be executed.

·         Task Duration. This setting determines the maximum length that a single Maintainer execution can run. The default setting is two hours.

These Maintainer settings should be configured so that the Maintainer activity has minimal effect on regular activity. The database garbage collection settings are described in Running RBS Maintainer (http://go.microsoft.com/fwlink/?LinkId=199638).

RBS and BLOB store consistency checks

The RBS Maintainer verifies the integrity of RBS BLOB references and corrects any errors that are found. It performs several consistency checks for the database, such as verifying that indexes exist for the RBS columns, and verifying that all BLOBs that are referenced by application tables exist in RBS.

The Auxiliary Table Consistency Check verifies that the RBS auxiliary tables are in a consistent state by performing the following checks:

·         Verifies that each RBS table column has a valid index.

·         Verifies that registered-applications RBS table columns exist; have enabled, valid indexes; and have the correct column type.

The following consistency checks are optional and can be omitted:

·         Verifies that all BLOBs that are referenced in the application tables are present in the RBS tables.

·         Verifies that no BLOBs are marked as both in use and deleted.

Any discovered problems will be logged and the RBS Maintainer will attempt to fix them by creating missing index entries, unregistering missing columns, or marking in-use BLOBs as not deleted.

Running the RBS Maintainer

RBS requires you to define a connection string to each database that uses RBS before you run the Maintainer.

This string is stored in a configuration file in the <installation path>\Microsoft SQL Remote Blob Storage 10.50\Maintainer folder that is ordinarily created during installation.

The Maintainer can be run manually by executing the Microsoft.Data.SqlRemoteBlobs.Maintainer.exe program together with the following parameters:

Parameter name

Description

Values

Required

ConnectionStringName <string name>

The name of the connection string for the configuration file.

RBSMaintainerConnection is the default name that is created during RBS setup.

Yes.

Operation <space-separated list of operations to perform>

The garbage collection operations to perform. This parameter takes between one and four arguments. The ForceFinalize value cannot be used in combination with any other operation.

ConsistencyCheck

GarbageCollection

Maintenance

ConsistencyCheckForStores

ForceFinalize

Yes.

GarbageCollectionPhases <phases>

The garbage collection phases to perform. This parameter is used to run or complete the garbage collection. The value must be one or more letters without spaces.

r — Reference scan.

d — Delete propagation.

o — Orphan cleanup.

Yes, if garbage collection is to be performed.

ConsistencyCheckMode <c, r, or b>

Specifies the type of consistency check to be performed.

c — Only a check will be performed.

r  — A check will be performed and any issues found will be repaired.

b  — A check, repair, and rebuild of the internal data structures.

Yes, if a consistency check is to be performed.

ConsistencyCheckExtent <m or c>

Specifies the extent of the consistency check.

m — Only metadata will be checked; individual BLOBs will remain unchecked. This is the default parameter.

c — A complete check will be performed.

If not specified, m is assumed.

ConsistencyCheckForStores <space-separated list of BLOB store names>

Lists the names of the BLOB stores that will be checked for consistency.

By default, all BLOB stores are checked.

No.

TimeLimit <time in minutes>

Specifies the time that is available for the Maintainer to perform its tasks. The argument must be a positive integer.

No.

A separate RBS Maintainer task must be scheduled for every database that uses RBS. The following steps describe how to schedule a Maintainer task.

To schedule a Maintainer task

1.     Add a connection string to the <RBS installation directory>\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config file for the Maintainer task that is to be performed. The RBS installer creates one connection string that is named RBSMaintainerConnection by using the connection information that was provided during setup. However, new connection strings must be added for every additional database.

The RBS Maintainer connection strings are stored in an encrypted format. Therefore, to add connection strings, either the new strings must be encrypted or all the connection strings must be decrypted. Encrypted strings must be added one at a time, but all the connection strings can be decrypted at the same time by using the %windir%\Microsoft.net\Framework\<version>\Aspnet_regiis.exe tool, which is distributed as a part of the Microsoft .NET Framework.

When you run the following commands, the connection strings will be decrypted and the results will be stored in a Web.config file.

rename Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config web.config

aspnet_regiis -pdf connectionStrings

Strings can then be added in decrypted form and the file can be encrypted and renamed to Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config by using the following commands:

aspnet_regiis -pef connectionStrings . -prov DataProtectionConfigurationProvider

rename web.config Microsoft.Data.SqlRemoteBlobs.Maintainer.exe.config

2.     Create a Windows scheduler task to execute the Maintainer task for each applicable database. If the RBS installer was run in GUI mode, it will automatically create a Maintainer task. However, if it was run in command-line mode, then the following steps must be performed every time that a new Maintainer task is scheduled:

a)     Run the Task Scheduler in Administrative Tools.

b)    On the Action menu, click Create Task.

c)     On the Actions tab, click New, and then in the Action drop-down list, select Start a program.

d)    Under Settings, in the Program/script box, browse to the Maintainer binary file <RBS installation directory>\Maintainer\Microsoft.Data.SqlRemoteBlobs.Maintainer.exe, and in the Add arguments (optional) text box, add any optional arguments. The following default values are created by the installer:

<-ConnectionStringName RBSMaintainerConnection>

<-Operation GarbageCollection ConsistencyCheck ConsistencyCheckForStores>

<-GarbageCollectionPhases rdo>

<-ConsistencyCheckMode r>

<-TimeLimit 120>

e)     On the Triggers tab, click New, and then schedule the task. We recommend that the task be scheduled during low system activity times.

f)     On the General tab, under Security, ensure that you have the permission to run the task. Click Change User or Group if you must change your permission.

g)    On the General tab, click Run whether user is logged on or not, and then click OK.

Concepts

Overview of Remote BLOB Storage (SharePoint Server 2010)

Plan for Remote BLOB Storage (RBS) (SharePoint Server 2010)

Install and configure Remote BLOB Storage (RBS) with the FILESTREAM provider (SharePoint Server 2010)

Install and configure Remote BLOB Storage (RBS) without the FILESTREAM provider (SharePoint Server 2010)

Set a content database to use Remote BLOB Storage (RBS) (SharePoint Server 2010)

Migrate content into or out of Remote BLOB Storage (RBS) (SharePoint Server 2010)

Disable Remote BLOB Storage (RBS) on a content database (SharePoint Server 2010)

Other Resources

SQL Server and SharePoint Server 2010 Databases (http://go.microsoft.com/fwlink/?LinkId=199866)