Präzise Datenwiederherstellung aus einer nicht angefügten Datenbank
Letzte Änderung: Sonntag, 22. November 2009
Gilt für: SharePoint Foundation 2010
In diesem Thema wird beschrieben, auf welche Weise vom Microsoft SharePoint Foundation-Objektmodell die Erstellung nicht angefügter Datenbanken unterstützt wird, aus denen präzise Daten, bis hinunter zur Ebene bestimmter Felder, in einer SharePoint Foundation-Inhaltsdatenbank wiederhergestellt werden können.
Präzise Datenreparatur
In SharePoint Foundation wird die höchst präzise Datenwiederherstellung mithilfe des Features für nicht angefügte Datenbanken unterstützt. Der Vorgang ist einfach. Durch Ihren Code wird ein (nicht angefügtes) SPContentDatabase-Objekt mit einem Aufruf der statischen CreateUnattachedContentDatabase()-Methode erstellt. Dann können mithilfe des SharePoint Foundation-Objektmodells aus dem nicht angefügten Datenbankobjekt Websitesammlungen, Websites, Listen, Listenelemente oder Felder in bestimmten Elementen extrahiert werden. Die Daten werden dann dem entsprechenden übergeordneten Objekt in der Zielinhaltsdatenbank hinzugefügt (oder das entsprechende Ziel wird überschrieben). Folgendes kann als Quelldatenbank verwendet werden:
Eine Momentaufnahme einer Datenbank. Weitere Informationen zur Unterstützung für Momentaufnahmen von Datenbanken in SharePoint Foundation finden Sie unter SPContentDatabase.
Eine Schattenkopie aus dem Volumeschattenkopie-Dienst (Volume Shadow Copy Service, VSS), die in Microsoft SQL Server bereitgestellt wurde. Weitere Informationen zur Unterstützung für den Volumeschattenkopie-Dienst in SharePoint Foundation finden Sie unter SharePoint Foundation und der Volumeschattenkopie-Dienst.
Eine Inhaltsdatenbank aus der gleichen Hauptversion von SharePoint Foundation, die in einer Instanz von SQL Server ausgeführt wird, auf die zugegriffen werden kann.
Hinweis Das Erstellen eines nicht angefügten Datenbankobjekts aus einer Inhaltsdatenbank einer früheren Hauptversion von SharePoint Foundation wird nicht unterstützt.
Vorsicht |
---|
Eine nicht angefügte Datenbank muss als schreibgeschützt behandelt werden. Wenn Sie die Update()-Methode einer nicht angefügten Datenbank aufrufen, wird ein NotSupportedException-Element ausgelöst. |
Im folgenden Beispiel wird in einem Feld in der Employees-Liste die ID-Nummer eines Schlüssels zu dem Gebäude angegeben, in dem der Mitarbeiter arbeitet. Genauer gesagt wird der Schlüssel identifiziert, der an den Mitarbeiter ausgegeben wurde. Stellen Sie sich ein Szenario vor, in dem dieses Feld für Mitarbeiter Nr. 24 versehentlich geändert wurde. Mit dem folgenden Code wird die Gebäudeschlüssel-ID von Mitarbeiter Nr. 24 auf den Wert vor der Erstellung der Momentaufnahme der Datenbank zurückgesetzt. Nehmen Sie an, dass snap ein SPDatabaseSnapshot-Objekt ist, das hier als Quelldatenbank verwendet wird.
// Create the unattached database from the source.
SPContentDatabase unattachedDB = SPContentDatabase.CreateUnattachedContentDatabase(snap.ConnectionString);
// Get the good data.
SPList goodEmployeeList = unattachedDB.Sites["CustomSiteCol"].AllWebs["CustomSite"].Lists["Employees"];
SPListItemCollection goodItems = goodEmployeeList.GetItems(goodEmployeeList.DefaultView);
SPListItem employeeGoodData = goodItems[24];
Int32 keyNumber = employeeGoodData["BuildingKeyID"];
// Get a reference to the bad data.
SPSite siteCol = SPContext.Current.Site;
SPList badList = siteCol.AllWebs["CustomSite"].Lists["Employees"];
SPListItemCollection badItems = badList.GetItems(badList.DefaultView);
SPListItem employeeBadData = badItems[24];
// Overwrite the bad data.
employeeBadData["BuildingKeyID"] = keyNumber;
siteCol.ContentDatabase.Update();