Title Missing server side dependencies.


Title Missing server side dependencies.

Explanation

[MissingWebPart] WebPart class [8d6034c4-a416-e535-281a-6b714894e1aa] is referenced [1] times in the database [WSS_Content_Intranet], but is not installed on the current farm. Please install any feature/solution which contains this web part. One or more web parts are referenced in the database [WSS_Content_Intranet], but are not installed on the current farm. Please install any feature or solution which contains these web parts.

solution

 

function Run-SQLQuery ($SqlServer, $SqlDatabase, $SqlQuery)

{
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = “Server =” + $SqlServer + “; Database =” + $SqlDatabase + “; Integrated Security = True”
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]

Once you have loaded the function in a PowerShell console, you can run it by using the Run-SQLQuery command with the options relevant to your deployment. For [MissingWebPart] errors, you need to run a SQL SELECT query on the “AllDocs” table in the content database exhibiting the problem, joining to the “AllWebParts” table in order to find details about the missing web part. For example, you would type the following command to find details of the web part with the class ID “4575ceaf-0d5e-4174-a3a1-1a623faa919a”, as reported in the error above:

Run-SQLQuery -SqlServer “SQLSERVER” -SqlDatabase “SP2010_Content” -SqlQuery “SELECT * from AllDocs inner join AllWebParts on AllDocs.Id = AllWebParts.tp_PageUrlID where AllWebParts.tp_WebPartTypeID = ‘4575ceaf-0d5e-4174-a3a1-1a623faa919a'” | select Id, SiteId, DirName, LeafName, WebId, ListId, tp_ZoneID, tp_DisplayName | Format-List

Yes, it is a pretty long command, but it will produce a very useful output, as shown in this example:

 

 

 

 

 

 

 

site ID:

$site = Get-SPSite -Limit all | where {$_.Id -eq “337c5721-5050-46ce-b112-083ac52f7f26”}
$site.Url

Once you have the site collection URL, you can use the relative path specified by the DirName property to find the location of the file. To remove the web part from the page, type the page URL in the browser and add ?contents=1 to the end of it. For example, to open the web part maintenance page for the ArticleList.aspx page specified in the output, type the following URL in the browser:

http://portal/news/pages/articlelist.aspx?contents=1

You can then highlight the offending web part (normally called ErrorWebPart for MissingWebPart errors) by ticking the box and clicking Delete. The screenshot below shows a web part maintenance page to give you an idea of the UI, but not an example of an ErrorWebPart as I had already removed them

4 comments

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.