zondag 30 mei 2010

SharePoint 2007 Restore van een Site Collection & Sub Site

Restoren van een Site Collection

Niet zo ingewikkeld toch? We maken voor deze activiteit gebruik van de commandline administration tool STSADM.
Een waarschuwing vooraf, voor de problemen die we zijn tegengekomen hebben we rechtstreeks in de SharePoint databases updates uitgevoerd. DEZE ZIJN NIET SUPPORTED en bieden dus geen enkele garantie.

MAAK EERST EEN FULL BACKUP!

De situatie is dat er een nieuwe MOSS 2007 portal is ingericht, zonder language packs met SP2. Op een eerder ingericht MOSS 2007 portal zien we site collections met grote hoeveelheden data die moeten worden verplaatst naar de nieuwe portal omgeving. Het gaat om een aantal specifieke site collections, de basis structuur van de nieuwe portal is afwijkend. Een full restore van de oude portal is daarom niet mogelijk.


Laten we maar starten met het maken van een backup van een site collection.

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o backup -url http:// -filename \\\backup\.cab

Het maken van de backup lukt alleen aan het eind wordt er gemeld dat er errors zijn. Als we gaan kijken in de log zien we verschillende error meldingen als onderstaande:

Progress: Exporting File .
Error: Exception from HRESULT: 0x80041051 at Microsoft.SharePoint.Library.SPRequest.GetFileAsByteArray(String bstrUrl, String bstrWebRelativeUrl, Boolean bHonorLevel, Byte iLevel, OpenBinaryFlags grfob)
at Microsoft.SharePoint.Deployment.FileSerializer.SaveFile(SerializationInfo info, ExportObjectManager objectManager, ExportDataFileManager fileManager, SPExportSettings settings, SPWeb parentWeb, Boolean isGhosted, String setupPath, String setupPathUser, Byte setupPathVersion, String webRelativeFileUrl, Int32 size, Byte level)


Na zoeken op internet vinden we in een blog dat dit mogelijk aan ForeFront kan liggen. Om te zien of dit de oorzaak is voeren we de onderstaande query uit op de SharePoint Content database van de site collection die je wilt backuppen:


select * from docs where (VirusStatus > 0) AND (VirusStatus IS NOT NULL)

Dit resulteerde in ongeveer 230 rijen met documenten met een geblokeerde virus status.
Wat doe je dan om dit op te lossen? Updaten in de SharePoint database waar de Site Collection zich bevint. Aangezien docs een view is moet je wel even kijken waar deze zijn resultaat vandaan haalt. Voor het updaten kan de volgende query worden gebruikt:


update dbo.allDocs
set VirusVendorID=NULL, VirusStatus=NULL, VirusInfo=NULL
where (VirusStatus > 0) AND (VirusStatus IS NOT NULL)


Resultaat 230 updates, dus gaan met die banaan.

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o backup -url http:// -filename e:\backup\.cab

Weer errors:


Progress: Exporting File .
Error: Exception from HRESULT: 0x80041051
at Microsoft.SharePoint.Library.SPRequest.GetFileAsByteArray(String bstrUrl, String bstrWebRelativeUrl, Boolean bHonorLevel, Byte iLevel, OpenBinaryFlags grfob)
at Microsoft.SharePoint.Deployment.FileSerializer.SaveFile(SerializationInfo info, ExportObjectManager objectManager, ExportDataFileManager fileManager, SPExportSettings settings, SPWeb parentWeb, Boolean isGhosted, String setupPath, String setupPathUser, Byte setupPathVersion, String webRelativeFileUrl, Int32 size, Byte level)


Ok, hoe kan dit? ForeFront is nog actief als service en update dus weer de tabellen. Dus ForeFront services stoppen, dan de queries uitvoeren en dan de backup pas gaan maken!

De backup is eindelijk succesvol en de backup bestanden worden verplaatst naar de nieuwe MOSS Portal. We kunnen gaan starten met de restore van de site collection, vooraf is de nieuwe sitecollection via Central Administration aangemaakt:


"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o restore -url http:// -filename \\\backup\.cab -overwrite

Exporteren en Importeren van een Sub Site onder een sitecollection

Een aantal Site Collections bevat sub sites die naar een andere site collection moeten worden verplaatst tijdens de overzetting naar de nieuwe omgeving.

Eerst een export aanmaken:

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o export -url http:/// -filename \\\backup\.cab -versions 2


Hier geen problemen, dus op naar de import, ook hier hebben we de target subsite eerst aangemaakt.


"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o import -url http:/// -filename \\\backup\.cab


Na even wachten hebben we geluk en verschijnt de error:

[5/21/2010 12:39:44 PM]: Start Time: 5/21/2010 12:39:44 PM.
[5/21/2010 12:39:44 PM]: Progress: Initializing Import.
[5/21/2010 12:40:20 PM]: FatalError: Could not find language Dutch.
at Microsoft.SharePoint.Deployment.ImportRequirementsManager.VerifyInstalledLanguage(String id, String name) at Microsoft.SharePoint.Deployment.ImportRequirementsManager.VerifyLanguage(SPRequirementObject reqObj) at Microsoft.SharePoint.Deployment.ImportRequirementsManager.Validate(SPRequirementObject reqObj) at Microsoft.SharePoint.Deployment.ImportRequirementsManager.DeserializeAndValidate() at Microsoft.SharePoint.Deployment.SPImport.VerifyRequirements() at Microsoft.SharePoint.Deployment.SPImport.Run()
[5/21/2010 12:40:21 PM]: Progress: Import Completed.
[5/21/2010 12:40:21 PM]: Finish Time: 5/21/2010 12:40:21 PM.
[5/21/2010 12:40:21 PM]: Completed with 0 warnings.
[5/21/2010 12:40:21 PM]: Completed with 1 errors.

Could not find language Dutch?? Ik zag toch echt engels op de Site Collection, Site collection geopend in IE, deze is engels talig. Browsen naar de “Sub Site” die we gaan overzetten. Deze is inderdaad Nederlands talig, prachtig maar helaas! De nieuwe portal bevat geen Language Packs en ik wil ze er ook niet op hebben.


Er is vast wel ergens in de SharePoint database iets te vinden, dit wordt uitgevoerd op de oude SharePoint farm:

select * from dbo.webs

Gelukkig, we zien hier de FullUrl en Language setting van de sites en zien dus waarden 1033 (Engels), 1043 (Nederlands). Naast dat wat we zochten zien we een Id, SiteID & ParentWebId. We registreren de Id van de sub site. Als je een volledige SC of Portal wilt wijzigen dan registreer je de SiteID of ParentWebId. Hierna de volgende query uitgevoerd:


update dbo.webs
set [language]=1033
where Id =

OOK DIT IS NIET SUPPORTED!!!!


Nu moet het toch gaan lukken:

"C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\stsadm" -o import -url http:/// -filename \\\backup\.cab

Resulteerd in error:

[5/21/2010 1:29:24 PM]: Start Time: 5/21/2010 1:29:24 PM.

[5/21/2010 1:29:24 PM]: Progress: Initializing Import.
[5/21/2010 1:30:08 PM]: Progress: Starting content import.
[5/21/2010 1:30:08 PM]: Progress: De-Serializing Objects to Database.
[5/21/2010 1:30:08 PM]: FatalError: Cannot import site. The exported site is based on the template BDR#0 but the destination site is based on the template CMSPUBLISHING#0. You can import sites only into sites that are based on same template as the exported site.at Microsoft.SharePoint.Deployment.WebSerializer.IsWebTemplateCompatible(String sourceWebTemplateName, String destinationWebTemplateName) at Microsoft.SharePoint.Deployment.WebSerializer.SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) at Microsoft.SharePoint.Deployment.XmlFormatter.ParseObject(Type objectType, Boolean isChildObject)
at Microsoft.SharePoint.Deployment.XmlFormatter.DeserializeObject(Type objectType, Boolean isChildObject, DeploymentObject envelope) at Microsoft.SharePoint.Deployment.XmlFormatter.Deserialize(Stream serializationStream) at Microsoft.SharePoint.Deployment.ObjectSerializer.Deserialize(Stream serializationStream) at Microsoft.SharePoint.Deployment.ImportObjectManager.ProcessObject(XmlReader xmlReader) at Microsoft.SharePoint.Deployment.SPImport.DeserializeObjects() at Microsoft.SharePoint.Deployment.SPImport.Run()
[5/21/2010 1:30:08 PM]: Progress: Import Completed.
[5/21/2010 1:30:08 PM]: Finish Time: 5/21/2010 1:30:08 PM.
[5/21/2010 1:30:08 PM]: Completed with 0 warnings.
[5/21/2010 1:30:08 PM]: Completed with 1 errors.

The exported site is based on the template BDR#0 but the destination site is based on the template CMSPUBLISHING#0, De Sub Site die wie exporteren heeft dus een andere template, BDR#0 is document center. Op de target opnieuw een Sub Site aangemaakt met de juiste template, de import uitgevoerd en eindelijk zijn we gereed!!!

Geen opmerkingen: