Procédure : créer une classe de base de données qui peut être restaurée à partir d’un instantané
Dernière modification : mercredi 13 janvier 2010
S’applique à : SharePoint Foundation 2010
Si vous disposez d’un composant de base de données personnalisé hébergé dans l’édition Entreprise ou Développeur de Microsoft SQL Server que vous souhaitez pouvoir restaurer à partir d’un instantané via le modèle objet ou l’interface utilisateur Microsoft SharePoint Foundation, vous devez représenter le composant par une classe qui implémente l’interface IDatabaseSnapshotRestore. Cette rubrique explique comment procéder.
Attention |
---|
Les instantanés nécessitent que la base de données soit opérationnelle, un instantané ne consiste donc pas en une sauvegarde à usage général de la base de données. Par conséquent, dans un scénario réaliste, votre classe doit aussi implémenter l’interface IBackupRestore. Pour ces raisons, cette rubrique suppose que vous avez exécuté les procédures décrites dans Procédure : créer une classe de contenu qui peut être sauvegardée et restaurée et que la classe qui implémente IDatabaseSnapshotRestore est celle que vous avez créée dans la dernière rubrique. |
Pour implémenter les membres d’IDatabaseSnapshotRestore
Implémentez la méthode OnPreRestore(SPDatabaseSnapshotRestoreEvent). Fournissez la logique personnalisée à exécuter avant la restauration d’une base de données à partir d’un instantané.
Important
Votre implémentation doit générer une exception si elle ne peut pas exécuter toute condition préalable nécessaire à la restauration. Pour plus d’informations à propos de cette exigence, voir les rubriques de référence relatives aux surcharges de SPDatabaseSnapshot.Restore().
L’exemple suivant illustre une implémentation qui met la base de données hors connexion, puis suspend le thread pendant 5 secondes avant de laisser la restauration se dérouler. Dans cet exemple, this fait référence à un objet de type personnalisé appelé SupplementalDatabase qu’un développeur a dérivé de la classe SPDatabase.
public void OnPreRestore(SPDatabaseSnapshotRestoreEvent args) { if (args == null) { throw new ArgumentNullException("args"); } try { this.Status = SPObjectStatus.Offline; this.Update(); Thread.Sleep(5000); } catch (exception) { Exception e = new Exception(String.Format("Restoration from {0} cancelled because pre-restoration steps could not be executed.", args.Snapshot.Name), exception); throw e; } }
Public Sub OnPreRestore(ByVal args As SPDatabaseSnapshotRestoreEvent) If args Is Nothing Then Throw New ArgumentNullException("args") End If Try Me.Status = SPObjectStatus.Offline Me.Update() Thread.Sleep(5000) Catch e1 As exception Dim e As New Exception(String.Format("Restoration from {0} cancelled because pre-restoration steps could not be executed.", args.Snapshot.Name), exception) Throw e End Try End Sub
Implémentez la méthode OnPostRestore(SPDatabaseSnapshotRestoreEvent). Fournissez la logique personnalisée à exécuter après la restauration d’une base de données à partir d’un instantané. L’exemple suivant illustre une implémentation qui remet la base de données en ligne. Dans cet exemple, this fait référence à un objet de type personnalisé appelé SupplementalDatabase qu’un développeur a dérivé de la classe SPDatabase.
public void OnPostRestore(SPDatabaseSnapshotRestoreEvent args) { if (args == null) { throw new ArgumentNullException("args"); } this.Status = SPObjectStatus.Online; this.Update(true); }
Public Sub OnPostRestore(ByVal args As SPDatabaseSnapshotRestoreEvent) If args Is Nothing Then Throw New ArgumentNullException("args") End If Me.Status = SPObjectStatus.Online Me.Update(True) End Sub
Notes
Votre classe personnalisée va implémenter deux méthodes OnPostRestore, avec des signatures différentes ; la première à partir de IBackupRestore et l’autre à partir de IDatabaseSnapshotRestore.
Voir aussi
Tâches
Procédure : créer une classe de contenu qui peut être sauvegardée et restaurée