Freigeben über


Upgraden von SharePoint 2013 auf SharePoint 2016 über Workflow Manager

Ursprüngliche KB-Nummer: 4073758

Zusammenfassung

Wenn Sie Microsoft SharePoint 2013 auf Microsoft SharePoint 2016 aktualisieren, müssen Sie keine neue Workflow-Manager-Installation erstellen. Sie können dieselbe Installation verwenden, die von der SharePoint 2013-Farm in der neuen SharePoint 2016-Farm verwendet wurde.

Unter bestimmten Umständen müssen Sie jedoch möglicherweise eine neue Installation von Workflow-Manager erstellen. Wenn Sie z. B. Workflow-Manager auf ein anderes Windows-Betriebssystem verschieben möchten oder wenn der Back-End-Datenbankserver außer Betrieb genommen wird. Führen Sie in diesen Situationen die Schritte unter Workflow-Manager Notfallwiederherstellung aus, um die neue Workflow-Manager-Installation mithilfe der alten Datenbanken zu erstellen. Stellen Sie sicher, dass Sie die neueste Kopie der Workflow-Manager Datenbanken verwenden.

Hintergrund

Wenn Sie SharePoint Server zusammen mit Workflow-Manager verwenden, zeichnet Workflow-Manager die SharePoint-Websites mit veröffentlichten Workflows auf. Jede Website wird in Workflow-Manager als Bereich dargestellt. Workflow-Manager speichert auch die Workflowdefinitionen, alle Workflowinstanzen und deren Status.

SharePoint speichert den Workflowverlauf und die Workflowaufgabeninformationen für SharePoint-Workflows. Wenn der Workflow status Seite geladen wird, ruft SharePoint zuerst Workflow-Manager auf, um zu sehen, ob der Workflow vorhanden ist. Dazu wird die Workflow-instance-ID verwendet. Anschließend lädt SharePoint die restlichen Workflowinformationen. Wenn die Workflow-instance-ID in Workflow-Manager fehlt oder während der Kommunikation mit Workflow-Manager ein Fehler auftritt, erhalten Sie eine Fehlermeldung.

Upgraden von SharePoint 2013 auf SharePoint 2016 über Workflow Manager

Voraussetzungen

  • Installieren Sie das neueste kumulative Update für Workflow-Manager mithilfe des Webplattform-Installers (Web PI).
  • Installieren Sie die neueste Version von Workflow-Manager Client auf den SharePoint 2013-Servern, und stellen Sie sicher, dass alle Workflows funktionsfähig sind.
  • Installieren Sie die SharePoint 2016-Farm, und aktualisieren Sie alle Dienstanwendungen und Inhaltsdatenbanken.
  • Installieren Sie auf allen SharePoint 2016-Farmservern die neueste Version von Workflow-Manager Client mithilfe von Web PI.

Registrieren Workflow-Manager bei SharePoint 2016

Gehen Sie dazu wie folgt vor:

  1. Navigieren Sie in der SharePoint 2013-Farm zu Zentrale Admin>Anwendungsverwaltung>Dienstanwendung verwalten, und löschen Sie dann workflow service Anwendungsproxy.

  2. Führen Sie in der SharePoint 2016-Farm das folgende PowerShell-Cmdlet aus, um SharePoint 2016 mit derselben Workflow-Manager Installation zu koppeln:

    Register-SPWorkflowService -SPSite <SharePoint site URL> -WorkflowHostUri <Workflow service endpoint URL> -force
    

Hinweis

Beachten Sie, dass die Inhaltsdatenbanken, die in der neuen SharePoint 2016-Farm aktualisiert wurden, aus der letzten Sicherung wiederhergestellt werden sollten. Dies trägt dazu bei, Unterschiede und Lücken zwischen Workflow-Manager und den Inhaltsdatenbanken zu vermeiden.

Häufige Probleme, die nach dem Upgrade auftreten können

Problem 1: Website-URL wird geändert

Wenn ihre Website-URL in SharePoint 2016 geändert wird, die Website-ID jedoch unverändert bleibt, müssen Sie einen Workflow von der betroffenen Website mithilfe von SharePoint Designer erneut veröffentlichen.

Problem 2: Workflows werden auf einigen Websites nicht gestartet

Wenn Workflows auf einigen Websites nicht gestartet werden, veröffentlichen Sie die Workflows von der betroffenen Website erneut. Oder führen Sie den Zeitgeberauftrag Aktualisieren des Metadatenfeeds vertrauenswürdiger Sicherheitstokendienste aus.

Problem 3: Workflows schlagen fehl und geben den Fehler "App-Prinzipalberechtigungsinformationen können nicht abgerufen werden" zurück.

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie haben SharePoint 2013-Workflows und Workflow-Manager in Ihrer Farm konfiguriert.
  • Sie haben websites in der Farm kürzlich mit einer zuvor vorhandenen instance Workflow-Manager verbunden.

In diesem Szenario werden Workflows, die erstellt werden, nachdem Sie eine Verbindung mit der Workflow-Manager Installation hergestellt haben, erfolgreich abgeschlossen. Workflows, die vor dem Herstellen einer Verbindung mit Workflow-Manager erstellt werden, werden jedoch nicht abgeschlossen. Stattdessen bleiben sie hängen, wenn sie versuchen, den Vorgang abzuschließen, oder sie bleiben in einem angehaltenen Zustand. Für Workflows, die angehalten bleiben, erhalten Sie einen HTTP 500-Fehler. Darüber hinaus wird der folgende Eintrag im ULS-Protokoll protokolliert:

App-Prinzipalberechtigungsinformationen können nicht abgerufen werden.

Ursache

Workflow-Manager verfügt bereits über einen Bereich für die Website, auf der die Workflows ausgeführt werden. Da der Bereich einen falschen SPAuthenticationRealm Wert im ApplicationID Feld des Bereichs aufweist, ist keine SPAppPrincipal Klasse für das SPWeb-Objekt vorhanden, das dem ApplicationID Wert des Bereichs entspricht. Daher schlagen die Workflows fehl und geben eine Fehlermeldung zurück.

Lösung

Um dieses Problem zu beheben, verwenden Sie die folgenden PowerShell-Befehle, um das neue SPAppPrincipal Objekt zu registrieren. Dies geschieht für das SPWeb Objekt, dessen ID mit dem ApplicationID Wert übereinstimmt, der im Bereich des SPWeb Objekts in Workflow-Manager gespeichert ist.

#Variables
$webUrl = "http://sp.contoso.com/sites/teamsite/teamweb"
$oldAuthRealm = "58a2b173-0f88-4bff-935b-bf3778cd0524" #authentication realm expected by Workflow Manager
$newAuthRealm = "48834d17-d729-471e-b0d0-a0ec83b49de0" #authentication realm of current farm

#Get the SPWeb and SPSite objects, and the id of the web
$web = Get-SPWeb $webUrl
$site = $web.site
$clientId = $web.Id

#Create the old and new app principal ids
$oldAppId = "$clientId@$oldAuthRealm"
$newAppId = "$clientId@$newAuthRealm"

#Register the app principal with the old authentication realm
Register-SPAppPrincipal -DisplayName "Old Workflow" -Site $web -NameIdentifier $oldAppId

#Set permissions for the app principal
$oldAppPrincipal = Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId
Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope SiteCollection -Right FullControl
Set-SPAppPrincipalPermission -Site $web -AppPrincipal $oldAppPrincipal -Scope Site -Right FullControl

#List the app principals with the old and new authentication realms in the ids
Get-SPAppPrincipal -Site $web -NameIdentifier $oldAppId | fl
Get-SPAppPrincipal -Site $web -NameIdentifier $newAppId | fl

Weitere Informationen

Führen Sie die folgenden Schritte aus, um den SPAuthenticationRealm Wert von ApplicationID abzurufen, der im Bereich gespeichert ist:

  1. Führen Sie die folgende SQL-Abfrage aus:

    SELECT *
    FROM [WFResourceManagementDB].[dbo].[Scopes] WITH (NOLOCK)
    WHERE Description like '%<WebID>%'
    

    Hinweis

    < WebID> ist der Platzhalter für die ID des SPWeb Objekts.

  2. Klicken Sie im Abfrageergebnis auf den Wert in der SecuritySettings Spalte, um den XML-Code auf einer separaten Registerkarte in SQL Server Management Studio zu öffnen.

  3. Suchen Sie in der XML-Datei nach dem ApplicationID Element, das den Wert enthält. Suchen Sie beispielsweise das folgende Element:

    <ApplicationId>SPWeb_object_ID@SPAuthenticationRealm</ApplicationId>

    Hinweis

    Die GUID, die vor dem at-Zeichen (@) angezeigt wird, ist die ID des SPWeb Objekts, und die GUID, die nach dem at-Zeichen angezeigt wird, ist der SPAuthenticationRealm Wert.

Alternativ finden Sie den SPAuthenticationRealm Wert im ULS-Protokoll, z. B. im folgenden Beispielprotokolleintrag:

Datum/Uhrzeit w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation-Authentifizierungsautorisierung an3eg Medium App-Prinzipalberechtigungsinformationen können nicht abgerufen werden. AppId=i:0i.t|ms.sp.ext|<SPWeb-Objekt-ID>@<SPAuthenticationRealm>

Date/Time w3wp.exe (SPWFE01:0x51FC) 0x1298 SharePoint Foundation General 8nca Medium Application error when access /site/teamsite/teamweb/_vti_bin/client.svc, Error=Object reference not set to an instance of an object. at Microsoft.SharePoint.SPAppRequestContext.EnsureTenantPermissions(SPServiceContext serviceContext, Boolean throwIfAppNotExits, Boolean allowFullReset) at Microsoft.SharePoint.SPAppRequestContext.InitCurrent(HttpContext context) at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitCurrentAppPrincipalToken(HttpContext context) at Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostAuthenticateRequestHandler(Object oSender, EventArgs ea) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)