スナップショットから復元できるデータベース クラスを作成する

最終更新日: 2010年1月13日

適用対象: SharePoint Foundation 2010

Microsoft SQL Server の Enterprise Edition または Developer Edition のどちらかでホストされているカスタム データベース コンポーネントがあり、Microsoft SharePoint Foundation の UI またはオブジェクト モデルによってスナップショットから復元できるようにするには、IDatabaseSnapshotRestore インターフェイスを実装するクラスを使用して、そのコンポーネントを表す必要があります。このトピックでは、これを行う方法について説明します。

注意注意

スナップショットを使用するにはデータベースが実行されていなければならないので、スナップショットはデータベースを対象とした汎用バックアップとして利用することはできません。このため、実際のシナリオでは、クラスは IBackupRestore インターフェイスも実装する必要があります。したがって、このトピックでは、「[方法] バックアップと復元を実行できるコンテンツ クラスを作成する」の手順を既に実行したこと、また、IDatabaseSnapshotRestore を実装するクラスが後者のトピックで作成したクラスと同じであることを前提としています。

IDatabaseSnapshotRestore のメンバーを実装するには

  1. 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
    
  2. 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 メソッドを実装します。

関連項目

タスク

[方法] バックアップと復元を実行できるコンテンツ クラスを作成する

参照

IBackupRestore

IDatabaseSnapshotRestore

SPDatabaseSnapshot.Restore()

SPDatabase