Freigeben über


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.

    HinweisHinweis

    Das Erstellen eines nicht angefügten Datenbankobjekts aus einer Inhaltsdatenbank einer früheren Hauptversion von SharePoint Foundation wird nicht unterstützt.

VorsichtVorsicht

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();