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 アプリケーションを読み取り専用にする必要はありません。
データベース スナップショットのプログラム的制御の詳細については、「データベース スナップショットのプログラムによる管理」を参照してください。
サイト コレクションをバックアップするには
コンテンツ データベースへの参照を取得します。
コンテンツ データベースの Snapshots コレクションの CreateSnapshot() メソッドを呼び出します。
スナップショットの ConnectionString プロパティを静的 CreateUnattachedContentDatabase(SqlConnectionStringBuilder) メソッドに渡します。
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)