使用 SharePoint Foundation 备份/还原对象模型进行编程

上次修改时间: 2010年11月4日

适用范围: SharePoint Foundation 2010

本文内容
备份和还原对象模型
编程建议
网站集的备份和还原

本主题介绍 SharePoint Foundation 中的备份和还原对象模型的体系结构,并提供一些有关如何对其进行编程的建议。备份应用程序可以是独立的应用程序或自定义的 Powershell cmdlet。有关如何创建 Powershell cmdlet for SharePoint 的详细信息,请参阅 SharePoint Management Shell 中的 Windows PowerShell

备注

有一个针对实现服务应用程序框架的自定义 Web 服务的可变的备份和还原对象模型。本主题不讨论这一模型。有关详细信息,请参阅服务应用程序框架中的备份和还原

备份和还原对象模型

此对象模型的顶部是 SPBackupRestoreConsole 类。(请参阅图 1 中的标注 1。)它提供一个伞形操作管理器,负责排队备份和还原作业、启动作业以及以 .xml 文件的形式保留作业历史记录。此类的对象在备份应用程序用户界面的"正下方"。此类的成员主要是为备份应用程序的用户界面提供挂钩的静态方法和属性。管理中心应用程序 PowerShell 和 stsadm.exe 命令行工具都使用这些挂钩。

服务器场中仅存在此类的一个对象,该对象在首次调用此类的其中一个成员时创建。在下次重置 Internet Information Server (IIS) 之前,该对象会保留在内存中;不过,它只占用很少的内存。

图 1. 备份/还原层次结构中的主对象。

备份对象模型中的主要类

每个特定备份或还原操作都由 SPBackupRestoreConsoleObject 类的对象表示,该类由控制台对象的 CreateBackupRestore(SPBackupRestoreSettings) 方法创建。(请参阅图 1 中的标注 2,排队的备份和还原操作。)其中一个轻型对象的属性存储有关操作的信息,例如该操作是备份操作还是还原操作、备份文件的位置、备份或还原方法、操作的当前阶段以及正在备份或还原的内容组件的树。每个对象还具有类型为 GuidId 属性充当该对象的句柄,可以将该句柄传递到 SPBackupRestoreConsole 的方法。例如,向 Run(Guid, SPBackupRestoreObject) 传递控制台下次将要运行的操作(即 SPBackupRestoreConsoleObject 对象)的 ID。最后,每个 SPBackupRestoreConsoleObject 都具有 Settings 属性,该属性存储包含可重用模式的备份或还原设置的持久对象。该对象还标识操作将要备份或还原的内容组件。在本节末尾详细介绍了这些设置对象。

虽然 SPBackupRestoreConsoleObject 对象表示操作,但内容组件自身由 SPBackupRestoreObject 对象表示。(请参阅图 1 中的标注 3。)可以通过 Children 属性嵌套这些对象。因此,每个对象表示一个或多个内容组件的树。例如,Web 应用程序可以由 SPBackupRestoreObject 对象表示,该对象将 Web 应用程序的每个内容数据库包含为 SPBackupRestoreObject 子对象。作为特定备份或还原操作的主体的组件树在内部链接到表示该操作的 SPBackupRestoreConsoleObject 对象。您可以获取对树中最上层 SPBackupRestoreObject 对象的引用,方法是将 SPBackupRestoreConsoleObject 对象的 ID 传递给 GetRoot(Guid) 方法。

SPBackupRestoreObject 对象是两种重要类型的对象的容器:

除充当容器之外,SPBackupRestoreObject 还是一种帮助程序类,在操作对象 (SPBackupRestoreConsoleObject) 和组件信息对象(SPBackupRestoreInformationIBackupRestoreIBackupRestoreConfiguration)之间提供更轻松的交互。

最终的主要类是 SPBackupSettingsSPRestoreSettings。在创建操作时,会将其中一个类型的对象传递给 CreateBackupRestore(SPBackupRestoreSettings) 方法。(请参阅图 1 中的标注 5。)每个对象都存储操作中要使用的设置;最为重要的是,它们在其 IndividualItem 属性中标识作为备份或还原操作的主体的内容组件(或配置设置组件)。(请参阅图 1 中的标注 6。)

编程建议

以下信息可能会对备份和还原解决方案的开发有帮助。

自定义的方法

备份/还原对象模型中的大部分关键类都是密封的(在 Microsoft Visual Basic 中为 NotInheritable)。此外,虽然下面的类不是密封的,但也不支持从这些类进行派生。无论是哪种情况,您都必须使用现有的派生类:

因此,只有两种主要的自定义操作:

提示提示

尽管这是针对主 SharePoint Foundation 对象模型进行开发的两种主要方法,但您也可以通过编程方式从未附加的数据库使用数据库快照和还原。有关这些主题的详细信息,请参阅数据库快照的编程管理从未附加的数据库进行精细的还原数据如何:创建可从快照还原的数据库类

权限

用于备份内容的代码必须在服务器场管理员的用户上下文中运行。用于还原的代码必须在既是服务器场管理员又是所有前端服务器上的管理员的用户上下文中运行。该用户还应具有备份位置的读取和写入权限。

失败日志记录

如果备份或还原操作失败,有关失败的详细信息会记录在备份位置的 spbackup.log 或 sprestore.log 中。

网站集的备份和还原

除通过实现 IBackupRestore 创建的自定义内容类型外,可以使用 Microsoft.SharePoint.Administration.Backup 命名空间中的类备份和还原的最小内容对象是内容数据库。若要以编程方式备份或还原个别网站集,请使用 SPSiteCollection.BackupSPSiteCollection.Restore。有关备份和还原网站集的详细信息,请参阅如何:以编程方式备份和还原单个网站集

请参阅

任务

如何:以编程方式备份内容

如何:以编程方式还原内容

如何:以编程方式备份和还原单个网站集

如何:创建可以备份和还原的内容类

如何:创建可从快照还原的数据库类

代码示例:创建可备份的内容类

引用

Microsoft.SharePoint.Administration.Backup

Backup

Restore

其他资源

Stsadm.exe 命令行工具