使用 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,排队的备份和还原操作。)其中一个轻型对象的属性存储有关操作的信息,例如该操作是备份操作还是还原操作、备份文件的位置、备份或还原方法、操作的当前阶段以及正在备份或还原的内容组件的树。每个对象还具有类型为 Guid 的 Id 属性充当该对象的句柄,可以将该句柄传递到 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 对象在其 Information 属性中存储 SPBackupInformation 或 SPRestoreInformation 对象。这些种类的对象存储有关如何备份或还原特定组件的信息,以及作为操作的一部分在内部由 SPBackupRestoreConsoleObject 和 SPBackupRestoreObject 调用的方法。更具体地说就是,无论表示哪种内容组件,这些类存储的方法和属性的实现都不会发生变化。因此,这些类是密封的;不支持从其父级 SPBackupRestoreInformation 派生新类。
SPBackupRestoreObject 对象在其 IBackupRestore 属性中存放一个实现 IBackupRestore 接口的对象,或者存放 IBackupRestoreConfiguration 对象(包括 IBackupRestore),而且还可能从 SPPersistedObject 继承。(请参阅图 1 中的标注 4。)上述任一接口的实现都会将一个对象转变为可能备份和还原的内容。与 SPBackupRestoreInformation 对象一样,IBackupRestore 对象(或 IBackupRestoreConfiguration 对象)也包含提供备份和还原所需的信息及方法的成员。但是必须根据要表示的内容组件的种类,为这些接口的成员指定不同的实现。最重要的是,实现应包括操作事件(例如 OnBackup(Object, SPBackupInformation) 和 OnRestore(Object, SPRestoreInformation))的事件处理程序。
除充当容器之外,SPBackupRestoreObject 还是一种帮助程序类,在操作对象 (SPBackupRestoreConsoleObject) 和组件信息对象(SPBackupRestoreInformation、IBackupRestore 及 IBackupRestoreConfiguration)之间提供更轻松的交互。
最终的主要类是 SPBackupSettings 和 SPRestoreSettings。在创建操作时,会将其中一个类型的对象传递给 CreateBackupRestore(SPBackupRestoreSettings) 方法。(请参阅图 1 中的标注 5。)每个对象都存储操作中要使用的设置;最为重要的是,它们在其 IndividualItem 属性中标识作为备份或还原操作的主体的内容组件(或配置设置组件)。(请参阅图 1 中的标注 6。)
编程建议
以下信息可能会对备份和还原解决方案的开发有帮助。
自定义的方法
备份/还原对象模型中的大部分关键类都是密封的(在 Microsoft Visual Basic 中为 NotInheritable)。此外,虽然下面的类不是密封的,但也不支持从这些类进行派生。无论是哪种情况,您都必须使用现有的派生类:
SPBackupRestoreInformation 现有的派生类:SPBackupInformation 和 SPRestoreInformation
SPBackupRestoreSettings 现有的派生类:SPBackupSettings 和 SPRestoreSettings
因此,只有两种主要的自定义操作:
您可以创建自己的高级别应用程序(和用户界面),该应用程序使用操作控制台(SPBackupRestoreConsole 对象)的静态方法来管理和运行备份及还原作业。有关如何执行此操作的详细信息,请参阅如何:以编程方式备份内容和如何:以编程方式还原内容。
您可以创建实现 IBackupRestore 接口或 IBackupRestoreConfiguration 接口(包括IBackupRestore)的类,并且可能会派生 SPPersistedObject 类(也可能不会),同时实现 IDatabaseSnapshotRestore 接口。有关如何创建自定义内容(或配置设置)类的详细信息,请参阅如何:创建可以备份和还原的内容类和如何:创建包含在仅配置备份和还原中的类。
提示 |
---|
尽管这是针对主 SharePoint Foundation 对象模型进行开发的两种主要方法,但您也可以通过编程方式从未附加的数据库使用数据库快照和还原。有关这些主题的详细信息,请参阅数据库快照的编程管理、从未附加的数据库进行精细的还原数据和如何:创建可从快照还原的数据库类。 |
权限
用于备份内容的代码必须在服务器场管理员的用户上下文中运行。用于还原的代码必须在既是服务器场管理员又是所有前端服务器上的管理员的用户上下文中运行。该用户还应具有备份位置的读取和写入权限。
失败日志记录
如果备份或还原操作失败,有关失败的详细信息会记录在备份位置的 spbackup.log 或 sprestore.log 中。
网站集的备份和还原
除通过实现 IBackupRestore 创建的自定义内容类型外,可以使用 Microsoft.SharePoint.Administration.Backup 命名空间中的类备份和还原的最小内容对象是内容数据库。若要以编程方式备份或还原个别网站集,请使用 SPSiteCollection.Backup 和 SPSiteCollection.Restore。有关备份和还原网站集的详细信息,请参阅如何:以编程方式备份和还原单个网站集。
请参阅
任务
引用
Microsoft.SharePoint.Administration.Backup