Partilhar via


SPChangeQuery.Site Property

Gets or sets a Boolean value that specifies whether changes to SPSite objects are included in the query.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online

Syntax

'Declaration
<ClientCallableAttribute> _
Public Property Site As Boolean
    Get
    Set
'Usage
Dim instance As SPChangeQuery
Dim value As Boolean

value = instance.Site

instance.Site = value
[ClientCallableAttribute]
public bool Site { get; set; }

Property Value

Type: System.Boolean
true to include changes to SPSite objects; otherwise, false. The default is false.

Examples

The following example is a console application that queries the content database for all changes to SPSite objects.

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite host = new SPSite("https://localhost"))
         {
            SPChangeQuery query = new SPChangeQuery(false, true);

            // object type
            query.Site = true;

            // Get the SPSite collection.
            SPSiteCollection sites = host.ContentDatabase.Sites;

            int total = 0;

            // Loop until we reach the end of the log.
            while (true)
            {
               SPChangeCollection changes = host.ContentDatabase.GetChanges(query);

               total += changes.Count;

               // Print info about each change to the console.
               foreach (SPChange change in changes)
               {
                  // Get the URL for the changed SPSite.
                  string url = String.Empty;
                  foreach (SPSite site in sites)
                  {
                     if (site.ID == change.SiteId)
                     {
                        url = site.Url;
                        break;
                     }
                  }
                  Console.WriteLine("\nDate: {0}", change.Time.ToString());
                  Console.WriteLine("Change: {0} site collection", change.ChangeType.ToString());
                  Console.WriteLine("Url: {0}", url);
               }

               // 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 of {0} changes", total);
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration

Module ConsoleApp
   Sub Main()
      Using host As SPSite = New SPSite("https://localhost")
         Dim query As New SPChangeQuery(False, True)

         ' object type
         query.Site = True

         ' Get the SPSite collection. 
         Dim sites As SPSiteCollection = host.ContentDatabase.Sites

         Dim total As Integer = 0

         ' Loop until we reach the end of the log.
         While True
            Dim changes As SPChangeCollection = host.ContentDatabase.GetChanges(query)

            total += changes.Count

            ' Print info about each change to the console.
            For Each change As SPChange In changes

               ' Get the URL for the changed SPSite.
               Dim url As String = String.Empty
               For Each site As SPSite In sites
                  If site.ID = change.SiteId Then
                     url = site.Url
                     Exit For
                  End If
               Next site

               Console.WriteLine(ControlChars.Lf + "Date: {0}", change.Time.ToString())
               Console.WriteLine("Change: {0} site collection", change.ChangeType.ToString())
               Console.WriteLine("Url: {0}", url)
            Next change

            ' 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(ControlChars.Lf + "Total of {0} changes", total)

      End Using

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

   End Sub
End Module

See Also

Reference

SPChangeQuery Class

SPChangeQuery Members

Microsoft.SharePoint Namespace

SPSite

SPChangeSite

SPChangeType