Skip to main content

Remove Orphaned Web Parts - MissingWebPart

At some point you may have encountered an error like this while browsing through the SharePoint Health Analyzer or if you are attempting to test your content database (i.e., Test-SPContentDatabase) prior to mounting it. Message reads something like this:
One caveat is that the log message never reveals the Location of the culprit web part.  Luckily we can utilize T-SQL to query the content database and reveal the location of the web part in question.  

Query the Content Database

To do this fire up the SQL Server Management Studio either locally from your machine or while logged on to the SQL Server back-end of your SharePoint farm, open up the new Query window and enter the following statement:

USE <Content_Database_Name>
SELECT AllDocs.SiteId,WebId, Webs.Title as 'Web Title', ListId, DirName,LeafName 
FROM AllDocs 
  inner join AllWebParts on Alldocs.Id = AllWebParts.tp_PageUrlID 
inner join Webs on Alldocs.WebId = webs.Id 
WHERE AllWebParts.tp_WebPartTypeId = '7b56595c-625c-2eab-7907-8ab6f735e313'

NOTE: The text in red should be the content database name and the GUID from the error message.

Once you execute the query you should receive output similar to this:

WebID
WebTitle
List ID
Dir Name
Leaf name
b0cc8dd2-2bb9-4682-b90c-e0a043bed0e8
Knowledge Base
NULL
Corporate/KB
default.aspx

Find the URL of the Web Part Page

Given this we know that the DirName is the relative URL path of the site, and LeafName is an ASPX page where the web part is located.  From this we can construct the URL:

http://root/DirName/LeafName

which translates to something like this:

http://root/Corporate/KB/default.aspx

Delete the Web Part(s)

Now that we know the location of the web part we can finally delete the culprit web parts.  Open up the browser window and type in the URL followed by the ?contents=1 suffix.  It should look something like this:

http://root/Corporate/KB/default.aspx?contents=1

This will open up the Web Part Maintenance page which allows us to select the web parts in question and Delete them from the page.
Select the culprit web part(s) from this page and click Delete.

Check Old Versions and Recycle Bin

One more thing before we wrap it up.  Check the Recycle Bin as well as any previous Versions of the page (if Publishing is turned on).  Older versions of the page may still have the same web part(s) on them, therefore make sure you either delete those pages or remove the web parts(s) from them.  Do not forget to check the Recycle Bin for permanent deletion of those pages.

Comments

  1. There is an error in your SQL script, the correct table name is "AllWebParts". Script worked great after that fix. Thanks

    ReplyDelete
    Replies
    1. Hello John,
      Good catch, and thanks for pointing this out!
      There are also few of other SQL tables to keep an eye out for where web parts may reside (i.e., Sites, Webs). I'll update the post to reflect these changes.

      Delete
  2. In SharePoint 2013 use this:

    USE "YOUR_DATABASE_NAME"
    select DirName,LeafName from dbo.AllDocs where id in
    (select tp_PageUrlID from dbo.AllWebParts where
    (tp_WebPartTypeID='YOUR_GUID')
    )
    go

    Change:
    YOUR_DATABASE_NAME for the database you wish to query
    YOUR GUID to the GUID of the webpart that is missing, this is the number that follows:

    Message : WebPart class [THIS_NUMBER]

    You get this when you run:
    test-SPContentDatabase -name YOUR_DATABASE_NAME -WebApplication http://YOUR_SITE

    ReplyDelete
    Replies
    1. Hello Longtrail.
      I'll make a note and modify the entry.
      Thanks for the feedback.

      Delete

Post a Comment

Popular posts from this blog

SharePoint 2013 - Simple Glossary using "HTML Form Web Part"

Introduction At some point you probably thought about incorporating glossary functionality as a part of a larger solution, or perhaps you were simply looking for providing a more intuitive way of filtering hundreds of items within a List or Library. Now there are countless web parts out there that you can either purchase or download from the SharePoint Store free of charge, and they all come with their own set of bells and whistles.  However, if you are looking at building one yourself, well look no further. To accomplish this we will need three major ingredients: SharePoint Page (either Wiki or Publishing will work) SharePoint List/Library with some content (Files/Items) HTML Form Web Part Let's Implement In this post I’m using a simple Wiki page, but you can also use a Publishing page as well.  We just need a canvas to display our glossary. I presume you already have a list or library that contains some content which is applicable to this concept.  I’m

SharePoint 2013 - Can't access the site externally in Internet Explorer ("Page cannot be displayed")

Synopsis Before we start talking about the problem let's understand the setup here.  We have a SharePoint 2013 intranet site that is also configured for access outside of the corporate network.  Employees use the same URL to visit the site both internally and externally via standard ports (80 and 443). Internal URL: http://sharepoint.domain.com Public URL: https://sharepoint.domain.com The site URL has been added to the Local Intranet zone in Internet Explorer for passing domain credentials. Alternate Access Mappings have been configured in such a way that if a user requests the site over HTTP they are automatically re-directed to HTTPS. Internal URL Zone Public URL for Zone https://sharepoint.domain.com Default https://sharepoint.domain.com http://sharepoint.domain.com Default https://sharepoint.domain.com Web application has been configured to use Kerberos protocol for authenticating incoming c