Freigeben über


Gewusst wie: Programmgesteuerte Sicherung und Wiederherstellung einer einzelnen Websitesammlung

Letzte Änderung: Donnerstag, 4. November 2010

Gilt für: SharePoint Foundation 2010

In diesem Thema wird das programmgesteuerte Sichern und Wiederherstellen einzelner Websitesammlungen erläutert.

So führen Sie eine Sicherung und Wiederherstellung einer Websitesammlung aus

  1. Fügen Sie dem Visual Studio-Projekt einen Verweis auf Microsoft.Sharepoint hinzu.

  2. Fügen Sie using-Anweisungen für Microsoft.SharePoint und Microsoft.SharePoint.Administration hinzu.

  3. Fügen Sie die folgenden Zeilen hinzu, um einen Verweis auf die Farm und ihre Auflistung von Diensten abzurufen.

    SPFarm myFarm = SPFarm.Local;
    SPServiceCollection myServices = myFarm.Services;
    
    Dim myFarm As SPFarm = SPFarm.Local
    Dim myServices As SPServiceCollection = myFarm.Services
    
  4. Rufen Sie einen Verweis auf den Webdienst ab, der die Webanwendung veröffentlicht, die die Websitesammlung hostet, indem Sie die Guid des Dienstes verwenden. Hierbei handelt es sich um den Wert der Id()-Eigenschaft.

    Guid serviceID = new Guid("21d91b29-5c5b-4893-9264-4e9c758618b4");
    SPWebService webPubService = (SPWebService)myServices[serviceID];
    
    Dim serviceID As New Guid("21d91b29-5c5b-4893-9264-4e9c758618b4")
    Dim webPubService As SPWebService = CType(myServices(serviceID), SPWebService)
    

    Wenn Sie den Id()-Wert des Webdiensts, der die Anwendung veröffentlicht, nicht kennen, können Sie eine Iteration durch alle Dienste ausführen und ihre Werte für Name(), TypeName und Id() anzeigen. Es folgt ein Beispiel:

    foreach (SPService service in myServices)
    {
        if (service is SPWebService)
        {
        Console.WriteLine("Web service name:" + webService.Name);
        Console.WriteLine("Web service type:" + webService.TypeName);
        Console.WriteLine("Web service ID:" + webService.Id);
        Console.WriteLine();
        Console.Readline();
        }
    }
    
    For Each service As SPService In myServices
       If TypeOf service Is SPWebService Then
          Console.WriteLine("Web service name:" & webService.Name)
          Console.WriteLine("Web service type:" & webService.TypeName)
          Console.WriteLine("Web service ID:" & webService.Id)
          Console.WriteLine()
          Console.Readline()
       End If
    Next service
    
  5. Rufen Sie einen Verweis auf die Webanwendung ab, die die Websitesammlung hostet. Wenn Sie die URL der Webanwendung kennen, können Sie einen Verweis mit der statischen Lookup()-Methode abrufen. Alternativ können Sie die Guid der Anwendung verwenden. Hierbei handelt es sich um den Wert der Id()-Eigenschaft. Im folgenden Code wird die zweite Methode gezeigt.

    SPWebApplicationCollection myApps = webPubService.WebApplications;
    Guid appID = new Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37");
    SPWebApplication myApp = myApps[appID];
    
    Dim myApps As SPWebApplicationCollection = webPubService.WebApplications
    Dim appID As New Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37")
    Dim myApp As SPWebApplication = myApps(appID)
    

    Wenn Sie den Id()-Wert der Webanwendung, die die Websitesammlung hostet, nicht kennen, können Sie eine Iteration durch alle Webanwendungen ausführen und ihre Werte für Name(), TypeName und Id() anzeigen. Es folgt ein Beispiel:

    foreach (SPWebApplication app in webApps)
    {
        Console.WriteLine("Web application name:" + app.Name);
        Console.WriteLine("Web application type:" + app.TypeName);
        Console.WriteLine("Web application ID:" + app.Id);
        Console.WriteLine();
        Console.Readline();
    }
    
    For Each app As SPWebApplication In webApps
        Console.WriteLine("Web application name:" & app.Name)
        Console.WriteLine("Web application type:" & app.TypeName)
        Console.WriteLine("Web application ID:" & app.Id)
        Console.WriteLine()
        Console.Readline()
    Next app
    
  6. Rufen Sie einen Verweis auf die Auflistung der Websitesammlungen der Webanwendung ab.

    SPSiteCollection mySiteCols = myApp.Sites;
    
    Dim mySiteCols As SPSiteCollection = myApp.Sites
    
  7. Rufen Sie zum Sichern einer Websitesammlung die Backup()-Methode auf. Übergeben Sie folgende Parameter:

    • Die vollständige URL der Websitesammlung, d. h. die vollständige URL der Website der obersten Ebene.

    • Den vollständigen Pfad und Dateinamen der Datei, die den komprimierten Inhalt der Websitesammlung enthalten soll.

    • True, falls eine vorhandene Sicherungsdatei mit demselben Namen vom Vorgang überschrieben werden soll. Andernfalls false.

    mySiteCols.Backup(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
    
    mySiteCols.Backup("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)
    
  8. Rufen Sie zur Wiederherstellung einer Websitesammlung die Restore()-Methode auf. Sie verwendet dieselben Parameter wie die Backup()-Methode. Mit dem Boolean-Parameter wird angegeben, ob die Websitesammlung überschrieben werden soll, falls sie bereits an der angegebenen URL vorhanden ist.

    mySiteCols.Restore(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
    
    mySiteCols.Restore("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)
    

Beispiel

Im folgenden Beispiel wird eine einfache Möglichkeit zur programmgesteuerten Sicherung und Wiederherstellung einer Websitesammlung gezeigt. Sie müssen alle Guid-Werte durch tatsächliche Wert aus Ihrer Bereitstellung ersetzen. Ersetzen Sie auch alle Platzhalterwerte in den Sicherungs- und Wiederherstellungsmethoden durch reale URLs und Pfade aus der Bereitstellung.

// Get a reference to the Web application publishing
// Web service.
SPFarm myFarm = SPFarm.Local;
SPServiceCollection myServices = myFarm.Services;
Guid serviceID = new Guid("21d91b29-5c5b-4893-9264-4e9c758618b4");
SPWebService webPubService = (SPWebService)myServices[serviceID];

// Get a reference to the Web application that hosts the 
// site collection.
SPWebApplicationCollection myApps = webPubService.WebApplications;
Guid appID = new Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37");
SPWebApplication myApp = myApps[appID];

// As alternative to the preceding three lines, you can use
// the following when you know the URL of the Web application:
//     SPWebApplication myApp = SPWebApplication.Lookup(url_of_Web_app)

// Get a reference to the Web application's collection of 
// site collections. 
SPSiteCollection mySiteCols = myApp.Sites;

// Back up a specified site collection. 
mySiteCols.Backup(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);

// Restoring the site collection is identical to the preceding
// code except that the "Restore" is used in place of "Backup".
//
// mySiteCols.Restore(@"https://Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);
' Get a reference to the Web application publishing
' Web service.
Dim myFarm As SPFarm = SPFarm.Local
Dim myServices As SPServiceCollection = myFarm.Services
Dim serviceID As New Guid("21d91b29-5c5b-4893-9264-4e9c758618b4")
Dim webPubService As SPWebService = CType(myServices(serviceID), SPWebService)

' Get a reference to the Web application that hosts the 
' site collection.
Dim myApps As SPWebApplicationCollection = webPubService.WebApplications
Dim appID As New Guid("10ea4e6f-ae37-4909-b04f-f516c066bc37")
Dim myApp As SPWebApplication = myApps(appID)

' As alternative to the preceding three lines, you can use
' the following when you know the URL of the Web application:
'     SPWebApplication myApp = SPWebApplication.Lookup(url_of_Web_app)

' Get a reference to the Web application's collection of 
' site collections. 
Dim mySiteCols As SPSiteCollection = myApp.Sites

' Back up a specified site collection. 
mySiteCols.Backup("http:// Server/sites/MySiteCollection", "\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", True)

' Restoring the site collection is identical to the preceding
' code except that the "Restore" is used in place of "Backup".
'
' mySiteCols.Restore(@"http:// Server/sites/MySiteCollection", @"\\OtherServer\WSSBackups\SiteCollections\BackupOfMySiteCollection", true);

Von der SPSite-Klasse wird IBackupRestore nicht implementiert, und die Backup()- und Restore()-Methode nutzen nicht die Möglichkeiten des Microsoft.SharePoint.Administration.Backup-Namespaces. Dies bedeutet, dass die Datensätze der Sicherungen und Wiederherstellungen von Websitesammlungen nicht in einer Verlaufsdatei (spbrtoc.xml) im Sicherungsverzeichnis gespeichert werden. Auf ähnliche Weise werden Sicherungs- und Wiederherstellungsdaten nicht in spbackup.xml- oder sprestore.xml-Dateien gespeichert, und diese Vorgänge an Websitesammlungen werden nicht in spbackup.log- oder sprestore.log-Dateien protokolliert.

Wenn Sie Sicherungen und Wiederherstellungen von Vorgängen an Websitesammlungen protokollieren möchten, müssen Sie ein eigenes System programmieren. Das Schreiben in die vom System erstellten Dateien spbrtoc.xml,, spbackup.xml, sprestore.xml, spbackup.log und sprestore.log wird in SharePoint Foundation nicht unterstützt. Auch das Verschieben, Löschen oder Umbenennen wird nicht unterstützt. Sie können jedoch Dateien erstellen, die Daten aus den vom System erstellten Dateien mit Daten aus Ihren Sicherungen und Wiederherstellungen von Websitesammlungen zusammenführen.

Siehe auch

Aufgaben

Gewusst wie: Programmgesteuertes Sichern von Inhalten

Gewusst wie: Programmgesteuertes Wiederherstellen von Inhalten

Gewusst wie: Erstellen einer Inhaltsklasse, die gesichert und wiederhergestellt werden kann

Gewusst wie: Erweitern des Hilfsprogramms "stsadm"

Referenz

Microsoft.SharePoint.Administration.Backup

Backup

Restore

Konzepte

Programmieren mit dem Sicherungs-/Wiederherstellungsobjektmodell von SharePoint Foundation

Weitere Ressourcen

Befehlszeilentool "Stsadm.exe"