Restauration de données de granularité fine à partir d’une base de données non attachée

Dernière modification : dimanche 22 novembre 2009

S’applique à : SharePoint Foundation 2010

Cette rubrique décrit comment le modèle objet Microsoft SharePoint Foundation prend en charge la création de bases de données non attachées dont les données granulaires, d’un niveau inférieur à celui de champs particuliers, peuvent être restaurées dans une base de données de contenu SharePoint Foundation.

Réparation de données de granularité fine

SharePoint Foundation prend en charge la récupération de données de haute granularité au moyen de la fonctionnalité de base de données non attachée. Le processus est simple. Votre code crée un objet SPContentDatabase (non attaché) avec un appel à la méthode CreateUnattachedContentDatabase() statique. Votre code peut ensuite utiliser le modèle objet SharePoint Foundation pour effectuer des extractions depuis les collections de sites, sites Web, listes, éléments de liste ou champs d’éléments de l’objet de base de données non attachée dans des éléments particuliers. Les données sont ensuite ajoutées à l’objet parent approprié (ou elles remplacent la cible appropriée) dans la base de données de contenu cible. Les éléments suivants peuvent servir de base de données source :

  • Une capture instantanée de base de données. Pour plus d’informations sur la prise en charge des captures instantanées de base de données par SharePoint Foundation, voir SPContentDatabase.

  • Un cliché instantané provenant du service de cliché instantané des volumes (Volume Shadow Copy Service, VSS) qui a été monté dans Microsoft SQL Server. Pour plus d’informations sur la prise en charge de VSS par SharePoint Foundation, voir SharePoint Foundation et le Service VSS.

  • Toute base de données de contenu de la même version principale de SharePoint Foundation s’exécutant sur une instance accessible de SQL Server.

    Notes

    Microsoft ne prend pas en charge la création d’un objet de base de données non attachée provenant d’une base de données de contenu d’une version principale antérieure de SharePoint Foundation.

Note AttentionAttention

Une base de données non attachée doit être traitée comme étant en lecture seule. Si vous appelez la méthode Update() d’une base de données non attachée, une exception NotSupportedException est déclenchée.

Dans l’exemple qui suit, un champ d’une liste Employees spécifie le numéro d’ID d’une clé pour l’immeuble où travaillent les employés. Plus particulièrement, il identifie la clé qui a été remise à l’employé. Considérons un scénario où ce champ a été modifié par erreur pour l’employé portant le numéro 24. Le code suivant rétablit l’ID de clé de l’employé ayant le numéro 24 à ce qu’il était lorsqu’une capture instantanée de la base de données a été effectuée. Supposons que snap soit un objet SPDatabaseSnapshot qui sert ici de base de données source.

// 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();