SharePoint 2010: Missing Server Side Dependencies
--- SUMMARY ---
SharePoint 2010 SP1 + 2011 August CU multi-server farm's Central Admin site's Health Analyzer shows "Mising Server Side Dependencies" on Web Part ID [baf5274e-a800-8dc3-96d0-0003d9405663]. Solution is to replicate Central Admin site's virtual directory folder and the web.config file from the server hosting Central Admin site to all other WFE servers, like if the virtual directory of central admin site on the AP server is "C:\inetpub\wwwroot\wss\VirtualDirectories\55555", then create a folder "55555" under "C:\inetpub\wwwroot\wss\VirtualDirectories" on every other WFE servers and copy the web.config file from AP server's 55555 folder to every other WFE servers' 55555 folder.
The issue came to me when I was setting up a fresh multi-server farm for a client. To keep things simple, let’s just use small farm scenario as below:
1 x WFE Server: SP2010WB01
Hosts 1 web application, content DB name [SP2010_Content_80]
1 x AP Server: SP2010AP01
Hosts Central Administration Site [SP2010_AdminContentDB] and all service applications
1 x DB Server: SP2010DB01
SharePoint Patch: SP1 + 2011 August CU (14.0.6109.5000)
"Missing Server Side Dependencies" shows up in SharePoint Central Administration site's Heath Analyzer shown here [MissingServerSideDependencies_AP.pdf]. Below is a list of reported MissingWebParts and Web Part ClassID that are reference in the content database [SP2010_AdminContentDB].
As you may have read from many other blogs, I also tried browsing to the following pages, but nothing worked. I guess it’s because none of the above Web Part Class ID is [8d6034c4-a416-e535-281a-6b714894e1aa]
- To reproduce this issue, provision Central Administration site only on the AP server, which is SP2010AP01 in this case. Make sure the AP server does not provision or hosts any other web applications by turning off “Microsoft SharePoint Foundation Web Application” service in SharePoint Central Admin –> System Settings –> Services on Server.
- Create a web application which contains at least 1 site collection. This web application will be provisioned only on the WFE server SP2010WB01 for the obvious reason.
- Go to SharePoint Central Administration site –> Monitoring –> Review problems and solutions
When you click on “Reanalyze Now” button, a timer job gets created “Microsoft.SharePoint.Administration.Health.ContentDatabaseCorruption On Demand Health Analysis Job” and executed by the timer service. If you click on this timer job definition, it shows the following:
|Job Title||Microsoft.SharePoint.Administration.Health.ContentDatabaseCorruption On Demand Health Analysis Job|
|Job Description||Runs a single SharePoint Health Analyzer Rule.|
|Job Properties This section lists the properties for this job.||Web application: N/A Last run time: 10/8/2011 11:36 PM|
Now if we are talking about timer jobs and Timer Service, then we should automatically be thinking about the TimerLocks table in the farm’s configuration database. The table indicates which server’s timer service is responsible for executing all the timer jobs. The following SQL query would tell which server is currently responsible for running which timer jobs. (Just don’t let MS know that you run the query against the DB… )
SELECT TimerLocks.JobId, Objects.name, TimerLocks.lockedtime FROM TimerLocks join Objects ON TimerLocks.lockedbyserverid = objects.id
During my experiment, the WFE server was locked for running all the timer jobs, therefore I stop the timer service on the WFE server, so I am sure that the AP bserver would be running all the timer jobs. You can use the following command to start and stop Timer Service.
net stop SPTimerV4
net start SPTimerV4
After “Reanalyze” the issue again, I got a different set of results in the explanation of “Missing Server Side Dependencies” reported that’s referenced in the database [SP1010_Content_80] which is the content database of portal web application provisioned on the WFE server, and nothing about the SP2010_AdminContentDB.
Click here for the complete reported log [MissingServerSideDependencies_WB.pdf]
Checking the Health Analyzer Rule Definition of Missing server side dependencies; as you can see below, the rule is defined to run on Any Server. I guess it does not know the server role that it was running on. eg. the rule or the timer service does not go a further step to find out which server (and its role) is currently locked for running the timer job.
When the AP server is locked for running timer jobs, it reports all the missing server side dependencies about all other web applications’ content databases, since AP server does not host those web apps.
when the WFE server is locked for running timer jobs, it reports all the missing server side dependencies about Central Administration site’s content database, since WFE server does not host SharePoint Central Admin site.
I wouldn’t really call these solutions, but more of a workaround, since it’s obviously a bug.
Anyway, the solutions…..
Ignore the reported issue
Disable the “Missing Server Side Dependencies” rule definition for the time being.
Provision Central Administration site on all other WFE servers…. ( Personally I would never do this, even if the error shows up every minute in the event log…)
Duplicate the Central Admin web app’s virtual directory on all other WFE servers and copy the web.config file over.
for example, if the virtual directory of your Central Admin site on the AP server is under C:\inetpub\wwwroot\wss\VirtualDirectories\55555, then create the same folder under every WFE servers.
In this case, I created a folder called “55555” under C:\inetpub\wwwroot\wss\VirtualDirectories\ and I copied web.config file from the folder on AP server to the same folder on the WFE server.
By doing this, we can trick the SharePoint Health Analyzer / timer service to think there is a Central Admin site on every server in the farm, so it wouldn’t matter which server is locked for running the timer jobs.
Apparently, MS is aware of the issue and is going to fix it in the next CU… (finger crossed…).
Hope this helps.