SPChange-Klasse

Stellt eine Änderung an, die an ein SharePoint-Objekt innerhalb des Bereichs eines Elements, Liste, Website, Websitesammlung oder Content-Datenbank oder an eine Sicherheitsrichtlinie innerhalb des Bereichs einer Webanwendung vorgenommen wurde.

Vererbungshierarchie

System.Object
  Microsoft.SharePoint.SPChange
    

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Class SPChange
'Usage
Dim instance As SPChange
public class SPChange

Hinweise

Jeder Eintrag in das Änderungsprotokoll SharePoint Foundation wird durch eine Unterklasse der Klasse SPChange dargestellt. Die Eigenschaften der übergeordneten SPChange Klasse enthalten grundlegende Informationen zu einer Änderung, einschließlich der Art der Änderung, dargestellt durch die ChangeType -Eigenschaft. die Uhrzeit der Überarbeitung, dargestellt durch die Time -Eigenschaft; und die ID der Websitesammlung, in dem die Änderung erfolgt ist, dargestellt durch die SiteId -Eigenschaft.

Die Eigenschaften der Unterklassen von SPChange enthalten spezifische Informationen für den Typ des Objekts, die geändert wurde. Beispielsweise die SPChangeItem -Klasse stellt eine Änderung auf ein Objekt SPListItem und hat daher eine ListId -Eigenschaft, die in der Liste aufgeführt, in dem das Element geändert wurde. Entsprechend die SPChangeList -Klasse stellt eine Änderung an einer Liste und verfügt über eine WebId -Eigenschaft, die die Website angibt, in dem die Liste geändert wurde.

Das Änderungsprotokoll werden Änderungen an allen SharePoint-Objekten, nur für ausgewählte Objekttypen nicht aufgezeichnet. Objekttypen, die im Änderungsprotokoll nachverfolgt werden, sind in der folgenden Tabelle, zusammen mit der Unterklassen von SPChange aufgeführt, die für diese Änderungen darstellen.

Unterklasse

Stellt Änderungen an

SPChangeAlert

SPAlert -Objekte.

SPChangeContentType

SPContentType -Objekte.

SPChangeField

SPField -Objekte.

SPChangeFile

SPFile -Objekte, die keine entsprechenden Elemente vorhanden, die sich außerhalb einer Liste befinden.

SPChangeFolder

SPFolder -Objekte, die keine entsprechenden Elemente vorhanden, die sich außerhalb einer Liste befinden.

SPChangeGroup

SPGroup -Objekte.

SPChangeItem

SPListItem -Objekte, Dateien und Ordner, die mit diesen verknüpft werden können.

SPChangeList

SPList -Objekte.

SPChangeSecurityPolicy

SPPolicy -Objekte.

SPChangeSite

SPSite -Objekte.

SPChangeUser

SPUser -Objekte.

SPChangeView

SPView -Objekte.

SPChangeWeb

SPWeb -Objekte.

Verwenden Sie die GetChanges -Methode des SPList, SPWeb, SPSiteoder SPContentDatabase -Objekts, um ein SPChangeCollection -Objekt mit den Änderungen zurückzugeben, die innerhalb eines bestimmten Bereichs aufgetreten sind. Sie können dann die Auflistung und untersuchen alle Member einzeln.

Die Gesamtzahl der zurückgegeben, die von einer Abfrage für das Änderungsprotokoll Änderungen möglicherweise sehr groß, je nach die Aufbewahrungsdauer für das Protokoll und den Bereich der Abfrage. Aus Gründen der Systemleistung sind Änderungen in Batches von Größe ist beschränkt zurückgegeben. Wenn Sie alle Änderungen, sondern nur der erste Batch möchten, sollte Ihr Code die GetChanges -Methode in einer Schleife aufrufen, bis sie gibt eine Auflistung mit 0 (null) Änderungen, womit angezeigt wird, dass sie das Ende des Protokolls erreicht hat. Die ChangeToken aus der letzten Änderung des ersten Stapels können Sie den zweiten Batch abzurufen usw., bis eine leere Auflistung abrufen.

Alternativ können Sie ein SPChangeQuery -Objekt an die GetChanges -Methode übergeben. Dieses Objekt verfügt über Eigenschaften, die Sie zum Filtern nach Objekttyp und nach Änderungstyp Änderungen verwenden können. Sie können auch die Größe der Auflistung anpassen, die auf einem einzelnen Roundtrip durch Festlegen des SPChangeQuery -Objekts FetchLimit -Eigenschaft zurückgegeben wird.

For more information about working with the change log, see Using the Change Log.

Beispiele

Im folgenden Beispiel werden alle Einträge in das Änderungsprotokoll für eine Inhaltsdatenbank abgerufen und Informationen zu jeder Änderung an der Konsole gedruckt.

using System;
using Microsoft.SharePoint;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SPSite site = new SPSite("https://localhost"))
            {
                using (SPWeb web = site.RootWeb)
                {
                    // Construct a query.
                    SPChangeQuery query = new SPChangeQuery(true, true);

                    SPTimeZone timeZone = web.RegionalSettings.TimeZone;
                    long total = 0;

                    // Get changes in batches.
                    while (true)
                    {
                        // Fetch a set of changes.
                        SPChangeCollection changes = site.ContentDatabase.GetChanges(query);
                        total += changes.Count;

                        // Write info about each change to the console.
                        foreach (SPChange change in changes)
                        {
                            // Print the date of the change.
                            Console.WriteLine("\nDate: {0}",
                                              timeZone.UTCToLocalTime(change.Time).ToString());

                            // Print the ID of the site where the change took place.
                            Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"));

                            // Print the type of object that was changed.
                            //   GetType().Name returns SPChangeItem, SPChangeList, etc.
                            //   Remove the "SPChange" part of the name.
                            string objType = change.GetType().Name.Replace("SPChange", null);
                            Console.WriteLine("Type of object: {0}", objType);

                            // Print the nature of the change.
                            Console.WriteLine("Type of change: {0}", change.ChangeType.ToString());
                        }

                        // Break out of loop if we have the last batch
                        if (changes.Count < query.FetchLimit)
                            break;
                        // Otherwise, go get another batch
                        query.ChangeTokenStart = changes.LastChangeToken;
                    }
                    Console.WriteLine("\nTotal changes: {0}", total);
                }
            }
            Console.Write("\nPress ENTER to continue...");
            Console.ReadLine();
        }
    }
}
Imports System
Imports Microsoft.SharePoint

Module Test

    Sub Main()

        Using site As SPSite = New SPSite("http://lswss5/sites/don")
            Using web As SPWeb = site.RootWeb
                ' Construct a query.
                Dim query As SPChangeQuery = New SPChangeQuery(True, True)

                Dim timeZone As SPTimeZone = web.RegionalSettings.TimeZone
                Dim total As Long = 0

                ' Get changes in batches.
                While True
                    ' Fetch a set of changes.
                    Dim changes As SPChangeCollection = site.ContentDatabase.GetChanges(query)
                    total += changes.Count

                    ' Write info about each change to the console.
                    Dim change As SPChange
                    For Each change In changes
                        ' Print the date of the change.
                        Console.WriteLine(vbCrLf + "Date: {0}", _
                                          timeZone.UTCToLocalTime(change.Time).ToString())

                        ' Print the ID of the site where the change took place.
                        Console.WriteLine("Site ID: {0}", change.SiteId.ToString("B"))

                        ' Print the type of object that was changed.
                        '   GetType().Name returns SPChangeItem, SPChangeList, etc.
                        '   Remove the "SPChange" part of the name.
                        Dim objType As String = change.GetType().Name.Replace("SPChange", Nothing)
                        Console.WriteLine("Type of object: {0}", objType)

                        ' Print the nature of the change.
                        Console.WriteLine("Type of change: {0}", change.ChangeType.ToString())
                    Next

                    ' Break out of loop if we have the last batch
                    If changes.Count < query.FetchLimit Then
                        Exit While
                    End If
                    ' Otherwise, go get another batch
                    query.ChangeTokenStart = changes.LastChangeToken

                End While

                Console.WriteLine(vbCrLf + "Total changes: {0}", total)

            End Using
        End Using

        Console.Write(vbCrLf + "Press ENTER to continue...")
        Console.ReadLine()

    End Sub

End Module

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.

Siehe auch

Referenz

SPChange-Member

Microsoft.SharePoint-Namespace

Weitere Ressourcen

Using the Change Log

Vererbungshierarchie

System.Object
  Microsoft.SharePoint.SPChange
    Microsoft.SharePoint.SPChangeAlert
    Microsoft.SharePoint.SPChangeContentType
    Microsoft.SharePoint.SPChangeField
    Microsoft.SharePoint.SPChangeFile
    Microsoft.SharePoint.SPChangeFolder
    Microsoft.SharePoint.SPChangeGroup
    Microsoft.SharePoint.SPChangeItem
    Microsoft.SharePoint.SPChangeList
    Microsoft.SharePoint.SPChangeSecurityPolicy
    Microsoft.SharePoint.SPChangeSite
    Microsoft.SharePoint.SPChangeUser
    Microsoft.SharePoint.SPChangeView
    Microsoft.SharePoint.SPChangeWeb