Remote Blob Storage (RBS) client library setup requirements in SQL Server 2016
Remote BLOB Store (RBS) is a client library with SQL Server which allows developers to store, access, retrieve binary large objects (BLOBs) outside SQL Server database files while still maintaining the ACID properties and transactional consistency of data in Blob store. RBS allows you to efficiently utilize storage and IO resources by managing both structured and unstructured data together in a SQL Server database with structured data stored in SQL Server datafiles while unstructured data stored outside SQL Server on a commodity storage solution. RBS client library exposes a set of APIs for developers to access, modify and retrieve blobs from the blob store. Each BLOB store has its own provider library, which plugs into the RBS client library and specifies how BLOBs are stored and accessed along with SQL Server database.
SQL Server FILESTREAM feature allows you to store and manage binary data (varbinary(max)) in SQL Server utilizing the underlying NTFS storage as BLOB store.
RBS FILESTREAM provider is one such free out-of-box provider which plugs into RBS client library to allow a deployment to use FILESTREAM enabled SQL Server Database as a dedicated BLOB store for application. The RBS FILESTREAM provider utilizes the FILESTREAM feature in SQL Server for BLOB storage and ties the two technologies together. SharePoint is one such application which allows you to use RBS FILESTREAM provider on Web Front End Servers and SQL Server FILESTREAM feature for storing and managing BLOBs on NTFS storage outside SharePoint content database as documented in MSDN article here.
A number of third-party storage solution vendors have developed RBS providers that conform to these standard APIs and support BLOB storage on various storage platforms.
For more details on RBS in SQL Server you can refer to the MSDN article here.
RBS 2016 client libraries are shipped as part of SQL Server 2016 Feature pack. As a pre-requisite, RBS requires SQL Server database for storing blob metadata along with the Blob store. To connect to SQL Server, RBS requires at least ODBC driver version 11 for SQL Server 2014 and ODBC Driver version 13 for SQL Server 2016. Drivers are available at Download ODBC Driver for SQL Server. If RBS is installed on the same server as SQL Server 2016 instance, ODBC driver is already installed as part of the SQL Server installation. However when RBS is installed on separate client server like SharePoint WFE in a multi-server farm setup, ODBC driver 13.0 is not installed on the client server and needs to be installed separately as a pre-requisite for installing RBS client library.
If Microsoft ODBC Driver 13.0 for SQL Serveris missing on the client server, the setup may fail with the following error when you try to hit test connection on the Database connection screen
If you are installing using command prompt, the output log file will show the following error,
MSI (s) (CC:FC) [15:12:55:265]: Note: 1: 1723 2: InstallCounters 3: CreateCounters 4: C:\Windows\Installer\MSI8C86.tmp CustomAction InstallCounters returned actual error code 1157 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (CC:FC) [15:12:55:265]: Product: Microsoft SQL Server 2016 Remote BLOB Store -- Error 1723. There is a problem with this Windows Installer package. A DLL required for this installation to complete could not be run. Contact your support personnel or package vendor. Action InstallCounters, entry: CreateCounters, library: C:\Windows\Installer\MSI8C86.tmp
MSI (s) (CC:FC) [15:12:55:265]: Creating MSIHANDLE (141) of type 790531 for thread 30204 Error 1723. There is a problem with this Windows Installer package. A DLL required for this installation to complete could not be run. Contact your support personnel or package vendor. Action InstallCounters, entry: CreateCounters, library: C:\Windows\Installer\MSI8C86.tmp
Hence, as a pre-requisite for installing RBS on the client server, it is important to install Microsoft ODBC Driver 13.0 for SQL Serveror higher version on the client to avoid the above error while running the RBS.msi setup for SQL 2016.
Senior Program Manager (@talktosavjani)