次の方法で共有


Web アプリケーションの実行中にバックアップを行う

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

適用対象: SharePoint Foundation 2010

ここでは、データベース スナップショットと Microsoft SharePoint Foundation 内の接続されていないデータベース機能を組み合わせて、ホスト元の Web アプリケーションとその子 Web アプリケーションを実行しながら、コンテンツ データベース内の 1 つ以上 (またはすべて) のサイト コレクションをバックアップする方法について説明します。これは、コンテンツ データベースの特定時点のコピーを作成し、コピー元の動作を続行しながら、作成したコピーをバックアップすることによって実現されます。

ライブ展開のバックアップ

実行中の SharePoint Foundation サイト コレクションをバックアップするには 3 つの手順を実行します。まず、コンテンツ データベースのスナップショットを作成します。次に、スナップショットに接続されていないデータベース オブジェクトを作成します。最後に、ライブのコンテンツ データベースではなく、接続されていないデータベースをバックアップのソースとして使用します。

接続されていないデータベースは SPContentDatabase オブジェクトなので、コードで、Sites プロパティの Backup(String, String, Boolean) メソッドを呼び出すことができます。特定のサイト コレクションの URL をメソッドに渡すか、コードで、すべてのサイト コレクションをループ処理し、各サイト コレクションで Backup(String, String, Boolean) を呼び出すことができます。

Web アプリケーション内のすべてのコンテンツ データベースをバックアップするには、コードで、SPWebApplication.ContentDatabases プロパティを繰り返し処理し、3 つの手順で構成されるプロセスをすべてのコンテンツ データベースで実行できます。また、サーバー ファームのすべての Web アプリケーションを繰り返し処理すれば、サーバー ファーム内のすべてのコンテンツ データベースをバックアップすることもできます。このとき、Web アプリケーションを読み取り専用にする必要はありません。

データベース スナップショットのプログラム的制御の詳細については、「データベース スナップショットのプログラムによる管理」を参照してください。

サイト コレクションをバックアップするには

  1. コンテンツ データベースへの参照を取得します。

  2. コンテンツ データベースの Snapshots コレクションの CreateSnapshot() メソッドを呼び出します。

  3. スナップショットの ConnectionString プロパティを静的 CreateUnattachedContentDatabase(SqlConnectionStringBuilder) メソッドに渡します。

  4. Backup(String, String, Boolean) を呼び出して、それに、特定のサイト コレクションの URL を渡します。

注意注意

接続されていないデータベースは読み取り専用として扱う必要があります。接続されていないデータベースの Update() メソッドを呼び出す場合、NotSupportedException がスローされます。

次の例では、現在のサイト コレクションがバックアップの対象です。ただし、同じコンテンツ データベース内にある他のすべてのサイト コレクションの URL を Backup(String, String, Boolean) メソッドに渡すことができた可能性があります。

SPSite siteCol = SPContext.Current.Site;
SPContentDatabase cDB = siteCol.ContentDatabase;

SPDatabaseSnapshot snap = cDB.Snapshots.CreateSnapshot();

SPContentDatabase unDB = SPContentDatabase.CreateUnattachedContentDatabase(snap.ConnectionString);

unDB.Sites.Backup(siteCol.ServerRelativeUrl.Trim('/'), "\\Server\Backups\MySite.bak", true);
Dim siteCol As SPSite = SPContext.Current.Site
Dim cDB As SPContentDatabase = siteCol.ContentDatabase

Dim snap As SPDatabaseSnapshot = cDB.Snapshots.CreateSnapshot()

Dim unDB As SPContentDatabase = SPContentDatabase.CreateUnattachedContentDatabase(snap.ConnectionString)

unDB.Sites.Backup(siteCol.ServerRelativeUrl.Trim("/"c), "\Server\Backups\MySite.bak", True)

関連項目

概念

データベース スナップショットのプログラムによる管理