Cleaning orphan database from SharePoint Farm
09/11/2015 Leave a comment
The issue:
You have patched your Sharepoint farm but if you run the configuration wizard and it is always failing on step 9 /10 on upgrade Operations and you have facing following error:
SharePoint Foundation Upgrade SPWebApplicationSequence ajy60 DEBUG Web application [SPWebApplication Name=ContosoDB] has 1 IisSettings object 1a71389d-7618-d087-2401-036280754f67
10/17/2015 11:23:01.93 OWSTIMER (0x1920) 0x1614 SharePoint Foundation Upgrade SPWebApplicationSequence ajy61 DEBUG Searching for sites with Server Comment = ContosoDB 1a71389d-7618-d087-2401-036280754f67
10/17/2015 11:23:02.36 OWSTIMER (0x1920) 0x1614 SharePoint Foundation Upgrade SPWebApplicationSequence ajy66 DEBUG Adding a iis web site object with instance Id = [319138241] 1a71389d-7618-d087-2401-036280754f67
10/17/2015 11:23:02.36 OWSTIMER (0x1920) 0x1614 SharePoint Foundation Upgrade SPHierarchyManager ajyw5 ERROR Attempt to register null pointer at: at Microsoft.SharePoint.Upgrade.SPHierarchyManager.AddNextLevelObjects(Object current, IEnumerable nextObjects) at Microsoft.SharePoint.Upgrade.SPWssWebApplicationSequence.AddNextLevelObjects() at Microsoft.SharePoint.Upgrade.SPHierarchyManager.Grow(SPTree`1 root, Boolean bRecursing, SPDelegateManager delegateManager) at Microsoft.SharePoint.Upgrade.SPHierarchyManager.Grow(SPTree`1 root, SPDelegateManager delegateManager) at Microsoft.SharePoint.Upgrade.SPUpgradeSession.Upgrade(Object o, Boolean bRecurse) at Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.Upgrade(Boolean recursively) at Microsoft.SharePoint.Upgrade.SPUpgradeSession.ReflexiveUpgrade(Object o, Boolean bRecurse) at Microsoft.SharePoint.Upgrade.SPUpgradeSession.Upgrade(Object o, Boolean bRecurse) at Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.Upgrade(Boolean recursively) at
Then you have checked that ContosoDB which is not present in SQL server but why are you getting this error with that database . This is an orphan database record issue . SharePoint has still have information about that database the record about that database present in SharePoint configuration database (inside the Object table) but in real there is no database present in SQL server with that name.
Ok how can you verify this;
First find the related Web Application Id by powershell
$wa = Get-SPWebApplication -Identity http://contoso.com
$wa.Id
Then we need to check in SQL server by running some sql queries to get xml configuration of this web Application object:
SELECT TOP [Id],[ClassId],[ParentId],[Name],[Status],[Version],cast([Properties] as XML)
FROM [SharePoint_Config].[dbo].[Objects] where Id = ‘<Guid of the Web Application>’
And if you look in details for the related XML
You have verifed that if there is <fld type=”null” /> record in that xml.
Also we know that the deleted database’s id is 44c186d2-6581-4314-90bd-a00f3efe18e3
If you search for this ID in configuration database’s Object table for this content database;you will not find any record about it ;So it is an oprhan item.
Ok so far so good , I can hear your question that how we get rid off this with a supported way ?
– Well you shouldnt change SharePoint databases manually , it is not supported by Microsoft .
Resolution is easy but It is a little bit tricky.
To remove that oprhan database we will run a single command.
We need the Web Application object in powershell
$wa = Get-SPWebApplication -Identity http://contoso.com
Then run this
$wa.ContentDatabases.Delete(“44c186d2-6581-4314-90bd-a00f3efe18e3”)
The tricky part when you run this you will get an error ! Upss did i something wrong , NO!
PS C:\Users\SPFarmAdmin> $wa.ContentDatabases.Delete(“44c186d2-6581-4314-90bd-a00f3efe18e3”)
Exception calling “Delete” with “1” argument(s): “Object reference not set to an instance of an object.”
At line:1 char:1
+ $wa.ContentDatabases.Delete(“44c186d2-6581-4314-90bd-a00f3efe18e3”)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NullReferenceException
Well after run this command , just ignore the error .Normally it fixes the configuration database and cleans the orphan record .
Not sure ??
Check yourself again the XML configuration of the Web Application from SQL server by following SQL again.
SELECT TOP [Id],[ClassId],[ParentId],[Name],[Status],[Version],cast([Properties] as XML)
FROM [SharePoint_Config].[dbo].[Objects] where Id = ‘<Guid of the Web Application>’
if you do not see the orphan <fld type=”null” /> , then you good to go 🙂 You can run the configuration wizard again .