接続されていないデータベースからの詳細なデータ復元
最終更新日: 2009年11月22日
適用対象: SharePoint Foundation 2010
このトピックでは、Microsoft SharePoint Foundation オブジェクト モデルが、接続されていないデータベースの作成をサポートする方法について説明します。接続されていないデータベースにより、特定のフィールドのレベルに至る詳細なデータを SharePoint Foundation コンテンツ データベースに復元できます。
詳細なデータ復元
SharePoint Foundation では、接続されていないデータベース機能によって、非常に詳細なデータ復元をサポートしています。そのプロセスは単純です。コードで CreateUnattachedContentDatabase() 静的メソッドを呼び出して、(接続されていない) SPContentDatabase オブジェクトを作成します。次に、SharePoint Foundation オブジェクト モデルを使用して、接続されていないデータベース オブジェクトから、サイト コレクション、Web サイト、リスト、リスト アイテム、または特定のアイテム内のフィールドを抽出します。そのデータを、目的のコンテンツ データベース内の該当の親オブジェクトに追加します (または、該当のターゲットを上書きします)。次のものが、ソース データベースとして機能します。
データベース スナップショット。SharePoint Foundation におけるデータベース スナップショットのサポートの詳細については、「SPContentDatabase」を参照してください。
Microsoft SQL Server にマウントされている Volume Shadow Copy Service (VSS) からのシャドウ コピー。SharePoint Foundation における VSS のサポートの詳細については、「SharePoint Foundation およびボリューム シャドウ コピー サービス」を参照してください。
アクセス可能な SQL Server のインスタンスで実行されている同じメジャー バージョンの SharePoint Foundation のコンテンツ データベース。
注意
以前のメジャー バージョンの SharePoint Foundation のコンテンツ データベースから、接続されていないデータベース オブジェクトを作成することはサポートされていません。
![]() |
---|
接続されていないデータベースは、読み取り専用で処理する必要があります。接続されていないデータベースの Update() メソッドを呼び出すと、NotSupportedException がスローされます。 |
以下の例では、Employees リスト内のフィールドが、従業員が働いているビルのキー ID 番号を指定しています。具体的には、従業員に発行されたキーが特定されます。従業員番号 24 のこのフィールドが間違って変更されたものとします。次のコードでは、従業員番号 24 の BuildingKeyID を、データベースのスナップショットが作成された時点の内容にリセットします。snap が、ここではソース データベースとしての役割を果たす SPDatabaseSnapshot オブジェクトであることが前提です。
// Create the unattached database from the source.
SPContentDatabase unattachedDB = SPContentDatabase.CreateUnattachedContentDatabase(snap.ConnectionString);
// Get the good data.
SPList goodEmployeeList = unattachedDB.Sites["CustomSiteCol"].AllWebs["CustomSite"].Lists["Employees"];
SPListItemCollection goodItems = goodEmployeeList.GetItems(goodEmployeeList.DefaultView);
SPListItem employeeGoodData = goodItems[24];
Int32 keyNumber = employeeGoodData["BuildingKeyID"];
// Get a reference to the bad data.
SPSite siteCol = SPContext.Current.Site;
SPList badList = siteCol.AllWebs["CustomSite"].Lists["Employees"];
SPListItemCollection badItems = badList.GetItems(badList.DefaultView);
SPListItem employeeBadData = badItems[24];
// Overwrite the bad data.
employeeBadData["BuildingKeyID"] = keyNumber;
siteCol.ContentDatabase.Update();