Posts Tagged ‘SQL server’
Steps to configure RBS on multiple content database in SharePoint 2013 with SQL server 2012 or 2014
Hi Friends,
Today we will try to understand how to configure RBS(Remote Blob Service) on single or multiple content databases in SharePoint 2013 with SQL server 2012 or 2014. Steps are nearly same with both SQL server but make sure you use the correct msi file. For SQL serve 2012 size of msi file would be 5120 kb which can be downloaded from here . For SQL serve 2014 size of msi file would be 4380 kb which can be downloaded from SQL server 2014 feature pack here
Once you have downloaded the file save it on empty folder on c: or d: drive
- Once database is created from SharePoint server, execute below command on SQL server
EXEC sp_configure filestream_access_level, 2
RECONFIGURE
- Then we need to select the content database from top and execute below command(password can be changed)
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′
- Now you need to execute below command on content database(wss_content5 database name needs to be changed)
if not exists (select groupname from sysfilegroups where groupname=N’RBSFilestreamProvider’)alter database [WSS_Content5] add filegroup RBSFilestreamProvider contains filestream
- Now we will add the physical path of RBS datafiles to content database. You can change the database name and filepath
alter database [WSS_Content5] add file (name = RBSFilestreamFile, filename = ‘C:\Blobstore5’) to filegroup RBSFilestreamProvider
- Now you need to run below command on Windows Powershell (run as admin). Go to folder which has the rbs.msi file we downloaded.(Make note of FilestreamProvider name. Change SQL servaer and content databasename)
msiexec /qn /lvx* rbs_install_log_db5.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME=”WSS_Content5″ DBINSTANCE=”SQLservername” FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider
If you see the rbs_install_log_db5.txt file to be less then 1000 kb, e.g. 482 kb, it means it didn’t work. If this has worked fine you will see above 1000 kb e.g. 1218 kb.
You can also validate that rbs related tables are added to database as shown below.
Note: if you face issues while running command, try to reboot both SQL and SharePoint server. I know this is not a solution but a workaround to the known issue you might get. You can also try SQL service restart and iisreset on sharepoint server. You may also check eventviewer log to find symptoms of the issue.
6. On SharePoint server run below command on windows powershell:
msiexec /qn /lvx* rbs_install_log.txt /x RBS.msi DBNAME=”WSS_Content5″ DBINSTANCE=”SQLservername” ADDLOCAL=”Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer”
Note: if you face issues while running command, try to reboot both SQL and SharePoint server. I know this is not a solution but a workaround to the known issue you might get. You can also try SQL service restart and iisreset on sharepoint server. You may also check eventviewer log to find symptoms of the issue.
- Now run below command 1 by 1 in SharePoint powershell and update the active providername and enable the RBS on content DB.
$cdb = Get-SPContentDatabase –WebApplication http://testspimgweb01
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])
To migrate existing content (Make sure you run this even if you don’t have any existing data.)
$rbss.Migrate()
Note: Also every database in web application needs RBS to be enabled or above command will fail.
- Now if you create site collection and upload a file, you will observe it is moved to this folder you created with SQL command in step 4.
Note: You need to run these command for every content database you want enable RBS on.
Troubleshooting: When you run these command, you might face permission issues. To resolve these issue make sure you have full access on C:\Program Files\Common Files\microsoft shared and registry. When you run these command, you may not find the error in the log file so run the rbs.msi file and make sure you find all the permission issue in GUI. Many a time when you assign permission on root folder on drive or key in registry, it will not be inherit to subfolder. Make sure you go to the folder shown in error and assign owner permission.
Hope this was helpful.
Unable to create site collection in SharePoint configured with SQL server RBS 2014
Hi Friends,
Recently I wanted to configure RBS on SQL server 2014. According to me I did configure everything fine but then I was unable to create a Site collection in that database. I get below error message.
Sorry, something went wrong
The URL ‘_cts/Document Set/docsethomepage.aspx’ is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web.
Technical Details
Troubleshoot issues with Microsoft SharePoint Foundation.
Correlation ID: af6aef9c-01ea-20f9-005a-d8bb2b2da40d
Date and Time: 3/4/2015 3:14:36 AM
In ULS logs I see below error:
Document Management Server Document Sets Unexpected DocumentSet FeatureActivating: throws exception: The URL ‘_cts/Document Set/docsethomepage.aspx’ is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web…. Stacktrace: at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx) at Microsoft.SharePoint.Library.SPRequest.PutFile(String bstrUrl, String bstrWebRelativeUrl, Object punkFile, Int64 cbFile, Object punkSPFileMgr, Object punkFFM, Int64 PutFileOpt, String bstrCreatedBy, String bstrModifiedBy, Int32 iCreatedByID, Int32 iModifiedByID, Object varTimeCreated, Object varTimeLastModified, Object varProperties, String bstrCheckinComment, String bstrLockIdMatch, String bstEtagToMatch, Int32 lockType, String lockId, Int32 minutes, Int32 fRefreshLock, Int32 … 2068ef9c-91d4-20f9-005a-da81ca62d058
Document Management Server Document Sets Unexpected …bValidateReqFields, Guid gNewDocId, SPFileSaveParams sfsp, SPFileInfo& pFileProps, UInt32& pdwVirusCheckStatus, String& pVirusCheckMessage, String& pEtagReturn, Byte& piLevel, Int32& pbIgnoredReqProps) at Microsoft.SharePoint.SPFileCollection.AddStreamOrBytesInternal(String urlOfFile, Stream file, Int64 fileSizeToSave, SPFileStreamManager spmgr, PutFileOpt fileOpt, String createdBy, String modifiedBy, Int32 createdByID, Int32 modifiedByID, DateTime timeCreated, DateTime timeLastModified, Object varProperties, String checkInComment, Stream formatMetadata, String lockIdMatch, String etagToMatch, SPLockType lockType, String lockId, TimeSpan lockTimeout, Boolean validateRequiredFields, SPVirusCheckStatus& virusCheckStatus, String& virusCheckMessage, String& etagNew, Boolean& ignoredRequire… 2068ef9c-91d4-20f9-005a-da81ca62d058
Document Management Server Document Sets Unexpected …dProps) at Microsoft.SharePoint.SPFileCollection.Add(String urlOfFile, Byte[] file, Boolean overwrite, String checkInComment, Boolean checkRequiredFields) at Microsoft.SharePoint.SPFileCollection.Add(String urlOfFile, Byte[] file, Boolean overwrite) at Microsoft.Office.DocumentManagement.Internal.DocumentSetFeatureReceiver.FeatureActivated(SPFeatureReceiverProperties properties). 2068ef9c-91d4-20f9-005a-da81ca62d058
I did a lot of search trying to find the issue but couldn’t find anything. Lucky I found a article which says database might be read only. I then create a new database without RBS enabled and it was working fine.
Then I enabled RBS on same database and got the same error. So I confirmed that it was RBS configuration issue.
I then followed below steps one by one and confirmed that it was issue with ActiveProviderName
$cdb = Get-SPContentDatabase “contentdbname”
$rbss = $cdb.RemoteBlobStorageSettings
$rbss
I then run below command on same content database which resolved my issue.
$cdb = Get-SPContentDatabase “contentdbname”
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$rbss.GetProviderNames()
$rbss.SetActiveProviderName(RBSFilestreamProvider)
$rbss.Migrate()
Hope this will help you.
Happy Learning friends. 🙂