GetChanges method (SPChangeToken)

SPContentDatabase.GetChanges method (SPChangeToken)

Returns the collection of content database changes, starting from a specified date.

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

public SPChangeCollection GetChanges(
	SPChangeToken changeToken


Type: Microsoft.SharePoint.SPChangeToken

An SPChangeToken object that specifies a starting date and time. If the token refers to a time before the start of the current change log, an SPException exception is thrown.

Return value

Type: Microsoft.SharePoint.SPChangeCollection
A collection of SPChange objects that represent the changes.

You can get an SPChangeToken object to pass as an argument to this method by extracting one from the ChangeToken property of the last change returned by a previous call to the GetChanges method. Or, you can use the SPChangeToken constructor to create a new change token.


By default, the change log retains data for 60 days. You can configure the retention period by setting the ChangeLogRetentionPeriod property.

The following example is a console application that demonstrates how to get all changes in the log. The program loops while getting changes in batches and breaks out of the loop when it retrieves a collection with zero members, signifying that it has reached the end of the list.

using System;
using Microsoft.SharePoint;

namespace Test
   class ConsoleApp
      static void Main(string[] args)
         using (SPSite site = new SPSite("http://localhost"))
            long total = 0;
            SPChangeToken token = null;

            SPChangeCollection changes = site.ContentDatabase.GetChanges(token);
            while (changes.Count > 0)
               total += changes.Count;

               foreach (SPChange change in changes)
                  // Process change.
                  Console.WriteLine("Date: {0}  Type of object: {1}  Type of change: {2}", 
                     change.Time.ToShortDateString(), change.GetType().ToString(), change.ChangeType);

               token = changes.LastChangeToken;
               changes = site.ContentDatabase.GetChanges(token);

            Console.WriteLine("Total changes = {0:#,#}", total);
         Console.Write("\nPress ENTER to continue...");
© 2016 Microsoft