Share via


Restauración de datos específicos de base de datos no adjunta

Última modificación: domingo, 22 de noviembre de 2009

Hace referencia a: SharePoint Foundation 2010

En este tema se describe el modo en que el modelo de objetos de Microsoft SharePoint Foundation admite la creación de bases de datos no adjuntas a partir de las cuales se pueden restaurar datos pormenorizados, hasta el nivel de campos particulares, en una base de datos de contenido de SharePoint Foundation.

Reparación de datos específicos

SharePoint Foundation admite la recuperación de datos altamente pormenorizados por medio de la característica de base de datos no adjunta. El proceso es simple: el código crea un objeto SPContentDatabase (no adjunto) con una llamada al método CreateUnattachedContentDatabase() estático. Posteriormente, el código puede usar el modelo de objetos de SharePoint Foundation para extraer del objeto de base de datos no adjunta colecciones de sitios, sitios web, listas, elementos de lista o campos de elementos particulares. Los datos se agregan al objeto primario adecuado (o invalidan el destino adecuado) de la base de datos de contenido de destino. Cualquiera de los siguientes elementos puede actuar como base de datos de origen:

  • Una instantánea de base de datos. Para obtener más información acerca de la admisión de instantáneas de base de datos en SharePoint Foundation, vea SPContentDatabase.

  • Una instantánea del Servicio de instantáneas de volumen (VSS) montado en Microsoft SQL Server. Para obtener más información acerca de la admisión de VSS en SharePoint Foundation, vea Windows SharePoint Foundation y el servicio de instantáneas de volumen.

  • Cualquier base de datos de contenido de la misma versión principal de SharePoint Foundation que se ejecuta en una sesión accesible de SQL Server.

    Nota

    Microsoft no admite la creación de un objeto de base de datos no adjunta a partir de una base de datos de contenido de una versión principal anterior de SharePoint Foundation.

Nota de precauciónPrecaución

Una base de datos no adjunta debe tratarse como de solo lectura. Si llama al método Update() de una base de datos no adjunta, se producirá NotSupportedException.

En el siguiente ejemplo, un campo de una lista de empleados especifica en número de identificación de una llave del edificio donde trabajan los empleados. Específicamente, identifica la llave que se emitió para el empleado. Imagine un escenario en el cual este campo se cambió por error por el empleado número 24. El siguiente código restablecerá el identificador de la llave del edificio del empleado número 24 al que existía cuando se tomó la instantánea de la base de datos. Suponga que snap es un objeto SPDatabaseSnapshot que aquí actúa como base de datos de origen.

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