SPContentDatabase.GetChanges 方法 (SPChangeToken, SPChangeToken)
返回指定的一段时间已记录的更改的集合。
命名空间: Microsoft.SharePoint.Administration
程序集: Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)
语法
声明
Public Function GetChanges ( _
changeToken As SPChangeToken, _
changeTokenEnd As SPChangeToken _
) As SPChangeCollection
用法
Dim instance As SPContentDatabase
Dim changeToken As SPChangeToken
Dim changeTokenEnd As SPChangeToken
Dim returnValue As SPChangeCollection
returnValue = instance.GetChanges(changeToken, _
changeTokenEnd)
public SPChangeCollection GetChanges(
SPChangeToken changeToken,
SPChangeToken changeTokenEnd
)
参数
changeToken
类型:Microsoft.SharePoint.SPChangeTokenSPChangeToken对象,该对象表示的开始更改标记。
changeTokenEnd
类型:Microsoft.SharePoint.SPChangeTokenSPChangeToken对象,该对象表示最终更改标记。
返回值
类型:Microsoft.SharePoint.SPChangeCollection
代表所做的更改的SPChange对象的集合。
备注
下列规则适用于更改标记作为参数传递。
如果任一标记指定当前更改日志开始前的某个时间,则此方法将引发 SPException 异常。
如果第二个标记指定的时间早于第一个标记指定的时间,则此方法将返回空集合。
如果第一个标记为 空引用(无 在 Visual Basic 中),则返回的更改集合将从当前更改日志的开头开始。
如果第二个标记为 空引用(无 在 Visual Basic 中),则返回的更改集合将包含第一个更改标记指定的日期之后发生的所有更改(直到达到单个集合的限制)。如果此时间段内发生多个更改,则返回第一个批次。
备注
默认情况下,更改日志数据将保留 60 天。您可以通过设置ChangeLogRetentionPeriod属性配置的保留期间。
示例
下面的示例是一个控制台应用程序查询的更改发生在七天内的更改日志。然后,应用程序将打印有关每次更改控制台的信息。
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite siteCollection = new SPSite("https://localhost"))
{
using (SPWeb webSite = siteCollection.RootWeb)
{
// We need to do this to get an Id. SPContentDatabase.ID property is obsolete.
SPPersistedObject db = (SPPersistedObject)siteCollection.ContentDatabase;
SPChangeToken startToken = new SPChangeToken(
SPChangeCollection.CollectionScope.ContentDB,
db.Id,
new DateTime(2008, 11, 17));
SPChangeToken endToken = new SPChangeToken(
SPChangeCollection.CollectionScope.ContentDB,
db.Id,
new DateTime(2008, 11, 23));
long total = 0;
SPChangeCollection changes =
siteCollection.ContentDatabase.GetChanges(startToken, endToken);
while (changes.Count > 0)
{
total += changes.Count;
foreach (SPChange change in changes)
{
Console.WriteLine("\nDate: {0}", change.Time.ToShortDateString());
Console.WriteLine("Object type: {0}", change.GetType().ToString());
Console.WriteLine("Change type: {0}", change.ChangeType);
}
startToken = changes.LastChangeToken;
changes = siteCollection.ContentDatabase.GetChanges(startToken, endToken);
}
Console.WriteLine("\nTotal changes = {0:#,#}", total);
}
}
Console.Write("\nPress ENTER to continue...");
Console.ReadLine();
}
}
}
Imports System
Imports Microsoft.SharePoint
Imports Microsoft.SharePoint.Administration
Module ConsoleApp
Sub Main()
Using siteCollection As SPSite = New SPSite("https://localhost")
Using webSite As SPWeb = siteCollection.RootWeb
' We need to do this to get an Id. SPContentDatabase.ID property is obsolete.
Dim db As SPPersistedObject = CType(siteCollection.ContentDatabase, SPPersistedObject)
Dim startToken As New SPChangeToken(SPChangeCollection.CollectionScope.ContentDB, _
db.Id, _
New DateTime(2008, 11, 17))
Dim endToken As New SPChangeToken(SPChangeCollection.CollectionScope.ContentDB, _
db.Id, _
New DateTime(2008, 11, 23))
Dim total As Long = 0
Dim changes As SPChangeCollection = _
siteCollection.ContentDatabase.GetChanges(startToken, endToken)
While changes.Count > 0
total += changes.Count
For Each change As SPChange In changes
Console.WriteLine(vbCrLf + "Date: {0}", change.Time.ToShortDateString())
Console.WriteLine("Object type: {0}", change.GetType().ToString())
Console.WriteLine("Change type: {0}", change.ChangeType)
Next change
startToken = changes.LastChangeToken
changes = siteCollection.ContentDatabase.GetChanges(startToken, endToken)
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
另请参阅
引用
Microsoft.SharePoint.Administration 命名空间