Gewusst wie: Erstellen einer Datenbankklasse, die aus einem Snapshot wiederhergestellt werden kann
Letzte Änderung: Mittwoch, 13. Januar 2010
Gilt für: SharePoint Foundation 2010
Wenn Sie eine benutzerdefinierte Datenbankkomponente haben, die entweder in der Enterprise- oder in der Developer-Edition von Microsoft SQL Server gehostet wird und die von einem Snapshot über die Microsoft SharePoint Foundation-Benutzeroberfläche oder das Objektmodell wiederherstellbar sein soll, müssen Sie die Komponente mit einer Klasse darstellen, die die IDatabaseSnapshotRestore-Schnittstelle implementiert. In diesem Thema wird erklärt, wie Sie dies erreichen.
Vorsicht |
---|
Für einen Snapshot muss die Datenbank aktiv sein, daher kann ein Snapshot nicht als allgemeine Datenbanksicherung dienen. Somit muss die verwendete Klasse in einem realistischen Szenario auch die IBackupRestore-Schnittstelle implementieren. Entsprechend wird in diesem Thema davon ausgegangen, dass Sie die Verfahren in Gewusst wie: Erstellen einer Inhaltsklasse, die gesichert und wiederhergestellt werden kann ausgeführt haben und dass die Klasse, die die IDatabaseSnapshotRestore-Schnittstelle implementiert, die gleiche ist, die Sie auch im genannten Thema erstellt haben. |
So implementieren Sie die Member von "IDatabaseSnapshotRestore"
Implementieren Sie die OnPreRestore(SPDatabaseSnapshotRestoreEvent)-Methode. Stellen Sie etwaige benutzerdefinierte Logik bereit, die ausgeführt werden muss, bevor eine Datenbank von einem Snapshot wiederhergestellt wird.
Wichtig Die Implementierung muss eine Ausnahme auslösen, wenn sie eine erforderliche Vorbedingung für die Wiederherstellung nicht ausführen kann. Weitere Informationen zu dieser Bedingung finden Sie in den Referenzthemen zu den Überladungen von SPDatabaseSnapshot.Restore().
Im folgenden Beispiel wird eine Implementierung gezeigt, in der eine Datenbank offline geschaltet wird und dann der Thread fünf Sekunden lang angehalten wird, bevor die Wiederherstellung aufgenommen wird. In diesem Beispiel bezieht sich "this" auf ein Objekt eines benutzerdefinierten Typs namens SupplementalDatabase, das ein Entwickler von der SPDatabase-Klasse abgeleitet hat.
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
Implementieren Sie die OnPostRestore(SPDatabaseSnapshotRestoreEvent)-Methode. Stellen Sie etwaige benutzerdefinierte Logik bereit, die ausgeführt werden muss, nachdem eine Datenbank von einem Snapshot wiederhergestellt wurde. Im folgenden Beispiel wird eine Implementierung gezeigt, die die Datenbank wieder online schaltet. Dabei bezieht sich "this" auf ein Objekt eines benutzerdefinierten Typs namens SupplementalDatabase, das ein Entwickler von der SPDatabase-Klasse abgeleitet hat.
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
Hinweis Die benutzerdefinierte Klasse implementiert zwei OnPostRestore-Methoden mit unterschiedlichen Signaturen, die erste aus IBackupRestore und die andere aus IDatabaseSnapshotRestore.
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer Inhaltsklasse, die gesichert und wiederhergestellt werden kann