Serverseitige Abhängigkeiten fehlen – MissingFeature

Problem

Missing Server Side Dependencies

Serverseitige Abhängigkeiten fehlen

MissingFeature

Details

Im Ereignisprotokoll taucht die Meldung „SharePoint-Integritätsanalyse: Fehler. Serverseitige Abhängigkeiten fehlen.“ und „[MissingFeature]“ mit der ID: 2137 auf.

Die Integritätsanalyse (Health Analyzer) meldet „Serverseitige Abhängigkeiten fehlen“ und „[MissingFeature]“

Ereignisprotokoll

Protokoll(name) Anwendung
Quelle SharePoint Foundation
Aufgabenkategorie Integrität
Ebene Fehler
ID 2137
Details SharePoint-Integritätsanalyse: Fehler. Serverseitige Abhängigkeiten fehlen.
[MissingFeature] Die Datenbank [‚ContentDB‚] enthält mindestens einen Verweis auf ein fehlendes Feature: ID = [11111111-2222-3333-4444-555555555555], Name = [UHH Personal Content Types], Beschreibung = [], Installationspfad = [UHH.Personal_UHH Personal Feature]. Auf ein Feature mit der ID 11111111-2222-3333-4444-555555555555 wird in der Datenbank [‚ContentDB‘] verwiesen, es ist jedoch in der aktuellen Farm nicht installiert. Die fehlenden Features bewirken ggf. einen Upgradefehler. Installieren Sie alle Lösungen, die dieses Feature enthalten, und starten Sie das Upgrade bei Bedarf erneut.
Weitere Informationen zu dieser Regel finden Sie unter „http://go.microsoft.com/fwlink/?LinkID=142689“.

Die Meldung (s.u) taucht unter „Überwachung/Probleme und Lösungen überprüfen“ (Integritätsanalyse / Health Analyzer) auf der Seite „Probleme und Lösungen überprüfen“ auf.

Integritätsanalyse / Health Analyzer Eintrag

Titel Serverseitige Abhängigkeiten fehlen.
Schweregrad 1 – Fehler
Kategorie Konfiguration
Erläuterung [MissingFeature] Die Datenbank [‚ContentDB‚] enthält mindestens einen Verweis auf ein fehlendes Feature: ID = [11111111-2222-3333-4444-555555555555], Name = [UHH Personal Content Types], Beschreibung = [], Installationspfad = [UHH.Personal_UHH Personal Feature]. Auf ein Feature mit der ID 11111111-2222-3333-4444-555555555555 wird in der Datenbank [‚ContentDB‘] verwiesen, es ist jedoch in der aktuellen Farm nicht installiert. Die fehlenden Features bewirken ggf. einen Upgradefehler. Installieren Sie alle Lösungen, die dieses Feature enthalten, und starten Sie das Upgrade bei Bedarf erneut.
Lösung Weitere Informationen zu dieser Regel finden Sie unter „http://go.microsoft.com/fwlink/?LinkID=142689“.
Dienste, die Fehler aufweisen SPTimerService (SPTimerV4)

Folgende Schritte wurden ausprobiert – ohne Erfolg

SQL-Abfrage (ContentDB)

select AllDocs.SiteId, WebId, Webs.Title as'Web Title', ListId, DirName, LeafName
from AllDocs inner join WebPartLists on AllDocs.Id = WebPartLists.tp_PageUrlID inner join Webs on AllDocs.WebId = Webs.Id
where WebPartLists.tp_WebPartID ='11111111-2222-3333-4444-555555555555'
SELECT *
FROM ContentDB.dbo.Features
WHERE FeatureId = '11111111-2222-3333-4444-555555555555'
SELECT *
FROM ContentDB.dbo.WebPartLists
WHERE tp_WebPartId like '11111111-2222-3333-4444-555555555555'

Es wurden jeweils keine Ergebnisse gefunden.

FeatureAdmin for SharePoint 2013 – v2.4.2.0

Das Programm „FeatureAdmin for SharePoint 2013 – v2.4.2.0“ lieferte auf „Find Faulty Feature in Farm“ das Ergebnis „No Faulty Features was found in the farm!

stsadm -o enumallwebs -includefeatures

Es wurde ein Bericht mit Features generiert:

stsadm -o enumallwebs -includefeatures > $home\desktop\FeaturesReport.xml

In diesem Bericht war die ID „11111111-2222-3333-4444-555555555555“ nicht zu finden.

Funktion Remove-SPFeatureFromContentDB

Das Skript wurde in der SharePoint 2013-Verwaltungsshell als Administrator ausgeführt:

function Remove-SPFeatureFromContentDB($ContentDb, $FeatureId, [switch]$ReportOnly)
{
    $db = Get-SPDatabase | where { $_.Name -eq $ContentDb }
    [bool]$report = $false
    if ($ReportOnly) { $report = $true }
    
    $db.Sites | ForEach-Object {
        
        Remove-SPFeature -obj $_ -objName "site collection" -featId $FeatureId -report $report
                
        $_ | Get-SPWeb -Limit all | ForEach-Object {
            
            Remove-SPFeature -obj $_ -objName "site" -featId $FeatureId -report $report
        }
    }
}
function Remove-SPFeature($obj, $objName, $featId, [bool]$report)
{
    $feature = $obj.Features[$featId]
    
    if ($feature -ne $null) {
        if ($report) {
            write-host "Feature found in" $objName ":" $obj.Url -foregroundcolor Red
        }
        else
        {
            try {
                $obj.Features.Remove($feature.DefinitionId, $true)
                write-host "Feature successfully removed from" $objName ":" $obj.Url -foregroundcolor Red
            }
            catch {
                write-host "There has been an error trying to remove the feature:" $_
            }
        }
    }
    else {
        #write-host "Feature ID specified does not exist in" $objName ":" $obj.Url
    }
}

Remove-SPFeatureFromContentDB -ContentDB "ContentDB" -FeatureId "11111111-2222-3333-4444-555555555555" -ReportOnly

Es wurde nichts gefunden/ausgegeben.

STSADM -o deactivatefeature

Der Versuch das Feature zu deinstallieren/deaktivieren hat nichts gebracht:

STSADM -o uninstallfeature -id 11111111-2222-3333-4444-555555555555

<# Ausgabe:
Feature with Id '11111111-2222-3333-4444-555555555555' is not installed in this farm. The feature was not uninstalled.
#>
STSADM -o deactivatefeature -id 11111111-2222-3333-4444-555555555555

<# Ausgabe:
Das Feature mit der ID 11111111-2222-3333-4444-555555555555 ist zurzeit nicht installiert. Verwenden Sie 'force', um es in diesem Bereich zu deaktivieren.
#>
STSADM -o deactivatefeature -id 11111111-2222-3333-4444-555555555555 -force

<# Ausgabe:
Der Vorgang wurde erfolgreich abgeschlossen.
#>

Die Meldung ist im Health Analyzer auch nach dem klicken auf „Jetzt erneut analysieren“ weiterhin vorhanden.

Quelle

Uninstall-SpFeature

Uninstall-SpFeature -Identity "11111111-2222-3333-4444-555555555555" -Force

<# Ausgabe:
Uninstall-SpFeature : Es wurde kein Feature-Objekt mit 'Path or Id: 11111111-2222-3333-4444-555555555555 in scope Local farm' gefunden.
In Zeile:1 Zeichen:1
+ uninstall-SpFeature -Identity "11111111-2222-3333-4444-555555555555" -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (Microsoft.Share...ninstallFeature:SPCmdletUninstallFeature) [Uninstall-SPFeature], SPCmdletPipeBindException
    + FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletUninstallFeature #>

Ergebnis: Es wurde kein Feature-Objekt gefunden.

Fix

Problem eingrenzen

Folgende SQL-Snippets können bei der Problemeingrenzung helfen.

-- Aus der Integritätsanalysemeldung "fehlendes Feature: ID" als "FeatureId" und "Name" als "FeatureTitle" einsetzen, um die SiteId herauszufinden
select * from ContentDB.dbo.FeatureTracking where FeatureId = '11111111-2222-3333-4444-555555555555' AND FeatureTitle = 'UHH Personal Content Types'



-- Aus der Integritätsanalysemeldung die Datenbank in das Feld "from", "fehlendes Feature: ID" als "FeatureId" und "Name" als "FeatureTitle" einsetzen, um die FullUrl der Site herauszufinden, wo das Feature installiert ist.
select    s.SiteId, s.FeatureId, s.SolutionId, s.FirstActivated, s.FeatureTitle, s.FolderName, s.FeatureDescription,
        w.FullUrl, w.Title, w.Description, w.RequestAccessEmail
from    ContentDB.dbo.FeatureTracking AS s
        LEFT JOIN dbo.AllWebs AS w ON s.SiteId = w.SiteId
where    FeatureId = '11111111-2222-3333-4444-555555555555' AND FeatureTitle = 'UHH Personal Content Types'




-- FeatureId -> SolutionId, SiteId
select * from dbo.FeatureTracking where FeatureId = '11111111-2222-3333-4444-555555555555'
--select * from dbo.Features where FeatureId = '11111111-2222-3333-4444-555555555555'

-- SolutionId -> SiteId, Installationsdateien (wsp) Name
select * from dbo.Solutions where SolutionId = 'DA568BA8-8435-4A29-9E6B-99064DA50FAF'

-- FeatureId -> SolutionFilePath (installierte Dateien)
select * from dbo.SolutionFiles where FeatureId = '11111111-2222-3333-4444-555555555555'

-- SiteId -> FullUrl
select * from dbo.AllWebs where SiteId IN('301C5AC1-C6F9-4743-82CE-4CD19FFCDE95', 'E51521DD-247E-489A-B9B2-4D6D02CAEF88')

-- FeatureId -> Liste tp_Title
select * from dbo.AllLists where tp_FeatureId = '11111111-2222-3333-4444-555555555555'




select 
       ft.*,
       --ft.SiteId,
       W.*
from 
       dbo.FeatureTracking  AS ft
       LEFT JOIN dbo.AllSites AS W ON ft.SiteId = W.Id
where 
       ft.FeatureId IN('11111111-2222-3333-4444-555555555555')



select 
       ft.*,
       --ft.SiteId,
       W.*
from 
       dbo.FeatureTracking  AS ft
       LEFT JOIN dbo.AllWebs AS W ON ft.SiteId = W.Id
where 
       ft.FeatureId IN('11111111-2222-3333-4444-555555555555')



select 
       ft.FeatureId,
       ft.SiteId,
       W.*
from 
       dbo.FeatureTracking  AS ft
       LEFT JOIN dbo.AllSites AS W ON ft.SiteId = W.Id
where 
       ft.FeatureId IN('878eae9f-3c5e-47e0-b49d-5741c3387848', '11111111-2222-3333-4444-555555555555')



-- Feature FirstActivated, FeatureTitle, FolderName
select 
       ft.*,
       --ft.SiteId,
       W.*
from 
       dbo.FeatureTracking  AS ft
       LEFT JOIN dbo.AllSites AS W ON ft.SiteId = W.Id
where 
       ft.FeatureId IN('11111111-2222-3333-4444-555555555555')


-- Solution FileName
select 
       S.*,
       W.*
from 
       dbo.Solutions AS S
       LEFT JOIN dbo.AllSites AS W ON S.SiteId = W.Id
where 
       S.SolutionId IN('DA568BA8-8435-4A29-9E6B-99064DA50FAF')


-- Solution FileName
select 
       S.*,
       W.*
from 
       dbo.Solutions AS S
       LEFT JOIN dbo.AllWebs AS W ON S.SiteId = W.Id
where 
       S.SolutionId IN('DA568BA8-8435-4A29-9E6B-99064DA50FAF')


-- SolutionFiles
select 
       S.*,
       W.*
from 
       dbo.SolutionFiles AS S
       LEFT JOIN dbo.AllSites AS W ON S.SiteId = W.Id
where 
       S.SolutionId IN('DA568BA8-8435-4A29-9E6B-99064DA50FAF')

 

Lösung

-- Aus der Integritätsanalysemeldung die Datenbank in das Feld "from", "fehlendes Feature: ID" als "FeatureId" und "Name" als "FeatureTitle" einsetzen, um die FullUrl der Site herauszufinden, wo das Feature installiert ist.
select    s.SiteId, s.FeatureId, s.SolutionId, s.FirstActivated, s.FeatureTitle, s.FolderName, s.FeatureDescription,
        w.FullUrl, w.Title, w.Description, w.RequestAccessEmail
from    ContentDB.dbo.FeatureTracking AS s
        LEFT JOIN dbo.AllWebs AS w ON s.SiteId = w.SiteId
where    FeatureId = '11111111-2222-3333-4444-555555555555' AND FeatureTitle = 'UHH Personal Content Types'

 

  1. Mit FullUrl sieht man auf welchen Seiten die Features installiert sind
  2. Durch Aktivierung der Features unter Websiteeinstellungen > Websitefeatures auf allen unter „FullUrl“ aufgelisteten Seiten, wurde die Meldung beseitigt.
  3. Sonst evtl. per PS oder per FeatureAdmin for SharePoint 2013 (s.Bild u. ) deinstallieren – FeatureAdmin deaktiviert die Features nur. Deinstallation per PS nicht möglich, da das Feature nicht gefunden wird.

FeatureAdmin for SharePoint - Remove Feature from Farm

Quellen und hilfreiche Links

  1. sharepointdiary.com: Fix „Features Missing“ issue in SharePoint Migration
  2. isolutions.ch: Missing Serverside Dependencies entfernen
  3. get-spscripts.com: Removing features from a content database in SharePoint 2010 using PowerShell
  4. http://sharepoint.stackexchange.com/questions/67405/uninstalling-feature-with-force-command-doesnt-work
  5. http://www.sharepointtechs.com/installing-uninstalling-feature-using-powershell-sharepoint-2010
  6. https://sharepointgroove.wordpress.com/2013/12/19/how-to-remove-orphaned-features/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert