Thursday, December 1, 2011

Simple concept: How restore a SharePoint 2010 content database on the different farm



[Question]:
How restore a SharePoint 2010 content database on the different farm?


[Answer]:
The concept is pretty much the same as for 2007. You can refer to post How to restore a sharepoint web app from a SQL backup


But, let me highlight 2 aspects:


1. This is 2010 specific.
You have 2 options how you add your content databaseAdd a content database (SharePoint Server 2010)
  - you add a content database through CA
 - or you can execute PowerShell command Mount-SPContentDatabase


2. Dealing with errors after adding the content database


If after adding the content database, you are experiencing the following issues with that database:
_____________________________________________________________________________
ISSUE:


 -  In the log file you see such error when you try enable or disable features (or other scenarios that I have ran):


Unknown SQL Exception 201 occurred. Additional error information from SQL Server is included below.  Procedure or function 'proc_SecGetIndividualUrlSecurityCheckEventReceivers' expects parameter '@MinLevel', which was not supplied.


 -or


Database '{content_database_name}' on SQL Server instance '{SQL_Instance_name}' is not empty and does not match current database schema.


TO FIX:


Compare the SQL Server instance versions from where the content database got shipped to the new farm.


Simple concept: How to find SQL Server version ?


Here is an example from my life:


The new  farm uses the SQL Server instance version:


10.50.1600.1 (RTM)


The database are copied from SQL Server instance version (Prod):


10.50.2500.0 (RTM SP1)


If  SQL versions are not the same, you have to make them equal. You are lucky, if your new farm SQL instance has lower version so you can upgrade it.


_____________________________________________________________________________
ISSUE:


The page on CA  /_admin/DatabaseStatus.aspx  shows the status for a content database"


Database is too new and is not supported


TO FIX:


Check the farm version:
_admin/FarmServers.aspx


Here is an example from my life:


The new farm:
Configuration database version: 14.0.4762.1000


Prod:
Configuration database version: 14.0.6106.5002


If the farm versions are different, make them equal.


_____________________________________________________________________________
ISSUE:


In the case you need to install June 2011 Fix, after installation you may experience the following error:


"Cannot connect to the configuration database."


TO FIX:
Run SharePoint Product configuration wizard


_____________________________________________________________________________
ISSUE:
After restoring Content db, you are trying to changes site collection administrators. On the site collection level when you try to save new site collection administrators, you are getting the errors:




Unknown SPRequest error occurred. More information: 0x80040e14




When you try to change the site collection administrators via Central Administration, you are not able to set it, everything is disabled.


TO FIX:
This behavior is typical if you restore the content db in other domain.
You still can setup site collection administrators via Stsadm:




stsadm -o siteowner   -url {our site collection}-ownerlogin {new site collection administrator} -secondarylogin {second new site collection administrator}

_____________________________________________________________________________
ISSUE:




stsadm: An error has occurred on the server.http://go.microsoft.com/fwlink?LinkID=96177

Upgrade the web front end or the content database to ensure that these versions match.

TO FIX:

stsadm -o upgrade -forceupgrade -inplace

_____________________________________________________________________________


ISSUE:

People picker error: "There was an error in the callback"

TO FIX:

stsadm -o setAppPassword -password {your password}

stsadm -o setproperty -pn peoplepicker-searchadforests -url "{your web application url}" -pv "domain:{your domain},{domain\user who has acces to AD in this domain},{pwd for this user};domain:{second domain if neccessary}, {domain\user who has acces to AD in this domain},{pwd for this user} "