スナップショットから復元できるデータベース クラスを作成する
最終更新日: 2010年1月13日
適用対象: SharePoint Foundation 2010
Microsoft SQL Server の Enterprise Edition または Developer Edition のどちらかでホストされているカスタム データベース コンポーネントがあり、Microsoft SharePoint Foundation の UI またはオブジェクト モデルによってスナップショットから復元できるようにするには、IDatabaseSnapshotRestore インターフェイスを実装するクラスを使用して、そのコンポーネントを表す必要があります。このトピックでは、これを行う方法について説明します。
注意 |
---|
スナップショットを使用するにはデータベースが実行されていなければならないので、スナップショットはデータベースを対象とした汎用バックアップとして利用することはできません。このため、実際のシナリオでは、クラスは IBackupRestore インターフェイスも実装する必要があります。したがって、このトピックでは、「[方法] バックアップと復元を実行できるコンテンツ クラスを作成する」の手順を既に実行したこと、また、IDatabaseSnapshotRestore を実装するクラスが後者のトピックで作成したクラスと同じであることを前提としています。 |
IDatabaseSnapshotRestore のメンバーを実装するには
OnPreRestore(SPDatabaseSnapshotRestoreEvent) メソッドを実装します。スナップショットからデータベースをリストアする前に実行する必要があるカスタム ロジックを提供します。
重要 実装で復元に必要な前提条件を実行できない場合、その実装では例外をスローする必要があります。この要件の詳細については、SPDatabaseSnapshot.Restore() のオーバーロードに関するリファレンス トピックを参照してください。
次の例は、データベースをオフラインにして、スレッドを 5 秒間一時停止してから復元を続行する実装を示しています。この例では、"this" は、SPDatabase クラスから派生する SupplementalDatabase と呼ばれるカスタム タイプのオブジェクトを参照します。
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
OnPostRestore(SPDatabaseSnapshotRestoreEvent) メソッドを実装します。スナップショットからデータベースをリストアした後に実行する必要があるカスタム ロジックを提供します。次の例は、データベースをオンラインに設定する実装を示しています。この例では、"this" は、SPDatabase クラスから派生する SupplementalDatabase と呼ばれるカスタム タイプのオブジェクトを参照します。
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
注意
カスタム クラスは、IBackupRestore および IDatabaseSnapshotRestore から、署名の異なる 2 つの OnPostRestore メソッドを実装します。
関連項目
タスク
[方法] バックアップと復元を実行できるコンテンツ クラスを作成する