Aufgrund von Problemen bei der Wiederherstellung von Websites / Websitesammlungen mit stsadm (unsere aus Workflows generierten Aufgaben wurden nicht wiederhergestellt) haben wir einen anderen Weg für die Sicherung / Wiederherstellung eingeschlagen. Wir planen eine größere Anpassung unserer SP-Site und möchten ein Backup erstellen, damit wir ein Rollback durchführen können, falls die Installation fehlschlägt. In unserer Systemtestumgebung (nicht in der Produktionsumgebung) haben wir die 12-Struktur, die virtuellen Verzeichnisse, auf die der IIS auf SharePoint verweist, und die SharePoint-Datenbanken in SQL gesichert (mithilfe von SQL Server für die Datenbank-Sicherungen).
Wir haben benutzerdefinierte Ereignishandler und Workflows, die mit Visual Studio erstellt wurden, und stellen die DLLs als Version 2 (signiert und versioniert in Visual Studio) im GAC bereit. Wenn wir also bereitstellen, enthält der GAC zwei Versionen der Workflows - Version 1 und Version 2. Während der Bereitstellung verwenden wir SP stsadm-Funktionen, um die WFs zu installieren / zu aktivieren. Wir gehen auch zu jeder Bibliothek und fügen die neuen WFs der Version 2 hinzu. Dies setzt die WFs der Version 1 automatisch auf "Nicht zulassen" neuer Instanzen (was wir wollen) und die Version 2 als aktiv - bisher perfekt.
Wenn wir die Installation abgeschlossen haben, gehen wir von einem Fehler aus und versuchen, auf denselben Computern wiederherzustellen (SharePoint auf einem Server, SQL auf einem anderen). Wir beginnen mit der Deinstallation der WFs der Version 2 vom GAC, setzen IIS zurück (um den Cache dieser WF-DLLs der Version 2 zu löschen), stellen die Ordner mit 12 Hive- und virtuellen Verzeichnissen wieder her und stellen dann die SQL-Datenbank wieder her. Dies ist alles genauso manuell wie Sie es lesen - kein stsadm hier. Alles scheint nach unserer Wiederherstellung zu funktionieren, es scheint, dass die Wiederherstellung erfolgreich war - die Modifikationen, die wir während der Installation an Spaltennamen, Datenänderungen usw. vorgenommen haben, werden alle auf den ursprünglichen Zustand vor der Installation zurückgesetzt. Mit einer Ausnahme. Wenn wir einen Workflow ausführen, schlägt dieser immer fehl und die Protokolle in der 12-Struktur zeigen an, dass die WF immer noch versucht, die Version 2 der DLL zu verwenden (Fehler System.IO-Datei nicht gefunden).
Danke, Kevin
Antworten:
Kevin,
Wenn ich Ihre Arbeitsreihenfolge richtig verstehe, habe ich eine große Frage: Stellen Sie Inhaltsdatenbanken wieder her, lassen aber die Farmkonfigurationsdatenbank (und andere Datenbanken wie SSP-Datenbanken) während Ihrer Wiederherstellung intakt? Wenn die Antwort "Ja" lautet, vermute ich, dass SharePoint eine Anpassung auslöst, da Ihre Konfigurationsdatenbank weiterhin einen Verweis auf Version 2 Ihres Workflows enthält. Ich vermute, dass Folgendes passiert.
Wenn Sie ein Feature in Ihrer SharePoint-Farm installieren, wird die SPFarm.FeatureDefinitions- Auflistung (die in der Farmkonfigurationsdatenbank verwaltet wird) aktualisiert, um das widerzuspiegeln, was Sie hinzugefügt haben. Dies umfasst alle Standardinformationen, die Ihr Feature enthalten soll: Name, Bereich, ID, Version usw. Außerdem werden unter anderem FeatureReceiver-Assembly-Informationen und ein RootDirectory- Wert verwaltet. Die RootDirectory- Eigenschaft verweist auf den Ordner in der 12- Struktur , in dem sich das Feature-Manifest für das Feature befindet.
Wenn Sie Ihre v2-Workflow-Funktion zur Farm hinzufügen und aktivieren, wird die Konfigurationsdatenbank aktualisiert. Selbst wenn Sie eine Workflow-Version Ihrer Inhaltsdatenbank vor Version 2 wiederherstellen, sucht die Farm aufgrund der Funktionszuordnung, die auf der Ebene der Konfigurationsdatenbank verwaltet wird, nach Version 2 Ihres Workflows. Wenn der v2-Funktionsordner noch im 12-Hive vorhanden ist und seine Manifest auf die v2-Assembly im GAC verweist, ist es leicht zu erkennen, wo Probleme auftreten können.
Wenn Ihr Workflow-Feature einen FeatureReceiver nutzt, werden diese Informationen gleichzeitig (in der Konfigurationsdatenbank) in der ReceiverAssembly- Eigenschaft der FeatureDefinitions- Auflistung gespeichert , wenn das Feature installiert wurde.
Wenn ich mich irre und Sie tatsächlich Ihre gesamte Farm (einschließlich der Konfigurationsdatenbank) direkt wiederherstellen, gilt das, was ich geschrieben habe, nicht. In diesem Fall würde ich mich auch ein bisschen am Kopf kratzen. :-)
Ich hoffe das hilft!
quelle
Könnten Sie versuchen, die Workflow-Bindungen nach Abschluss der Installation aus den Listen zu entfernen? Löschen Sie also zuerst alle Workflow-Zuordnungen aus der Liste, entfernen Sie dann die V2-DLLs aus dem GAC, stellen Sie die DLLs erneut bereit und ordnen Sie die Workflows erneut zu, um dies sicherzustellen Alle verbleibenden Verweise auf die Workflows werden entfernt (sowohl von der Inhaltsdatenbank als auch von der Konfigurationsdatenbank) und zwingen den Sharepoint, die Workflowzuordnungen neu zu binden / neu zu konfigurieren.
PS Es ist SEHR seltsam, dass die Workflow-bezogenen Aufgaben nicht wiederhergestellt werden. Sie sind nichts anderes als Inhalt und sollten sich in der Inhaltsdatenbank befinden. Ich denke, die Workflow-Aufgaben sind an einen Workflow gebunden, der nicht korrekt wiederhergestellt wird (da beide Workflow-Zuordnungen gespeichert sind im Inhalt db und in der config db ...). Wenn die Wiederherstellung stattfindet, werden die Workflows grundsätzlich neu initialisiert, erhalten eine neue GUID usw. Für Sharepoint scheint dies ein neuer Workflow zu sein, sodass die Aufgaben, die sich auf den alten Workflow beziehen, nicht mehr gebunden werden können.
Ich schlage vor, Sie vertiefen sich in das eigentliche Problem, anstatt eine benutzerdefinierte Lösung zu erstellen.
Weitere Informationen zu Workflow-bezogenen Wiederherstellungs- / Verpackungsproblemen und zum tatsächlichen Speichern / Erstellen eines Workflows finden Sie auf dieser Website und in diesem Artikel .
quelle
Ich habe es nie benutzt (nicht einmal ein Sharepoint-Typ), aber das könnte für Sie funktionieren. Stolperte darüber auf CodePlex ...
http://spbackup.codeplex.com/
quelle