Restoring SharePoint with Data Protection Manager

~ Chris Butcher | Senior Support Escalation Engineer

FIXHi folks, Chris Butcher here again with the final part in my series on protecting SharePoint with System Center 2012 Data Protection Manager. In part 1 I went through the process of enabling protection and examined issues you might encounter when configuring SharePoint Protection in Data Protection Manager. If you missed part 1 you can find it here:

Configuring SharePoint protection in Data Protection Manager and troubleshooting related issues

In part 2 we took a look at the backup process and some of the more common issues you may see when backing up SharePoint. That installment can be found here:

Backing up SharePoint with Data Protection Manager and troubleshooting related issues

Today with part 3, we’re going to talk about restoring SharePoint and a few of the more common issues you may run into during that process.

Restoring a Content Database

This will restore the selected content database as well as SharePoint Farm configuration. There are three things you should be aware of when restoring a content database:

– When the SharePoint Administrator deletes a content database, all references of this database are removed from the farm but the database itself can be kept attached to SQL assuming that the administrator didn’t select the option to delete the content database as well.

– Every time a content database is restored, the SharePoint Data source will become inconsistent.

– Restoring a content database won’t bring all of the settings back to the SharePoint farm. The SharePoint Administrator will still need to use the SharePoint tools to attach that database back to the farm.

Scenario

Let’s say that we have SharePoint admin who goes to SharePoint 2010 Central Administrator -> Manage Content Database and removes the WSS_Content database by mistake. The next thing he does is engage the DPM administrator to restore the affected content database. Then once the restore is complete, the SharePoint administrator says that the restored content database isn’t showing up in the content database list in SharePoint 2010 Central Administration.

In this scenario we have two options to get the restored content database to show back up:

Option 1: Restore the SharePoint configuration database as well. Note that if any changes were done to the farm after the backup, those changes will be lost.

Option 2: Run the following SharePoint PowerShell command:

Mount-SPContentDatabase "WSS_Content" -DatabaseServer SPSQL –WebApplication <parameter>

In my case the command line would be as follows:

Mount-SPContentDatabase "WSS_Content" -DatabaseServer SPSQL –WebApplication http://wilson-sp

In your environment you can get the WebApplication parameter by going to WebApplication under SharePoint 2010 Central Administrator provided that the WebApplication wasn’t also deleted.

 

Restoring a Site Collection/Site/List/ListItem to the original location

This will always be a two steps process. DPM will restore the content database where the site collection belongs to a temporary SQL Server and the restored database will have a different name than the original. This allows you to use the same SQL server that holds the SharePoint content databases. When the database is restored, the second part of the process is to extract the Site Collection/Site/List/List Item you selected and import it back to the production database.

Please note that doing any of these steps will fail if you select a share as the staging area. Microsoft does not officially support this but the UI will allow you to select one. The restore will ultimately fail but the error message isn’t clear on why it has failed. In DPM 2012, the share shows up as well but it will fail in the same way if it’s selected. Below are the two screens shown in the Recovery Wizard that give you the option to select a share. DON’T USE THEM!

clip_image001

clip_image002

NOTE In DPM 2012, if a share is selected for file location (the screenshot just above), then DPMRA from SQL server will crash. The crash will prevent the DPMRA from detaching the restored database. In DPM 2010, DPMRA will also crash but the database will be removed.

Scenario 1

The first scenario is when the user doesn’t know that a share should not be used and thus perform several restores, selecting a share every time. This can cause the SQL server to run out of disk space due to those restored databases.

clip_image003

clip_image005

clip_image006

Below is a snippet from DPMRACurr.errlog on the SharePoint Web Front End (WFE) server:

0F38   0EE8   05/18  05:40:27.018  18     fsutils.cpp(3723)                 WARNING       Failed: Hr: = [0x80070002] : G: lVal : HRESULT_FROM_WIN32(dwError)
0F38   0EE8   05/18  05:40:27.018  18     fsutils.cpp(2173)                 WARNING       Failed: Hr: = [0x80990a52] : Invalid filespec:Datasources\PSExchangeDatasourceConfig.xml
0F38   0EE8   05/18  05:40:27.018  61     inquirysubtask.cpp(1031)   [0000000000436030]              NORMAL <–CInquirySubTask::ExecuteInquiry
0F38   134C   05/18  05:40:27.018  61     inquirysubtask.cpp(458)    [0000000000436030]       E56D1666-1101-465E-ACC5-B25DE3696D9F     NORMAL Sending final response with 10 records
0F38   134C   05/18  05:40:27.112  61     inquirysubtask.cpp(990)    [0000000000436030]       E56D1666-1101-465E-ACC5-B25DE3696D9F     NORMAL CInquirySubTask::Inquiry finished with status [0000000000]
0F38   134C   05/18  05:40:27.175  03     workitem.cpp(272)    [00000000004364B0]       E56D1666-1101-465E-ACC5-B25DE3696D9F     ACTIVITY      WorkItem stopping
0F38   134C   05/18  05:40:27.175  31     vsssnapshotrequestor.cpp(94)       [0000000000436358]   E56D1666-1101-465E-ACC5-B25DE3696D9F     NORMAL       CVssSnapshotRequestor::~CVssSnapshotRequestor [0000000000436358]
0F38   134C   05/18  05:40:27.175  31     vsssnapshotrequestor.cpp(1763)       [0000000000436358]   E56D1666-1101-465E-ACC5-B25DE3696D9F     NORMAL       CVssSnapshotRequestor::CleanUp [0000000000436358]
0F38   134C   05/18  05:40:27.175  31     vssbaserequestor.cpp(80)   [0000000000436358]       E56D1666-1101-465E-ACC5-B25DE3696D9F     NORMAL CVssBaseRequestor: destructor [0000000000436358]
0F38   134C   05/18  05:45:12.427  03     workitem.cpp(86)     [0000000000449A90]       037F22CA-C1CF-476B-9E4E-6D58C1D2A248     ACTIVITY      Idle Timer created with timeout = 390000
0F38   134C   05/18  05:45:13.333  31     vadatasourcestate.cpp(729)        037F22CA-C1CF-476B-9E4E-6D58C1D2A248 WARNING       Failed: Hr: = [0x8007007e] GetModuleHandle failed for Library [WSSWriterHelperPlugin], will try LoadLibrary
0000   134C   05/18  05:45:13.349  00     agentutils.hpp(68)         037F22CA-C1CF-476B-9E4E-6D58C1D2A248     WARNING       Failed: Hr: = [0x80070002] : F: lVal : r.GetValue(pszKey, pT)
0000   134C   05/18  05:45:13.349  00     fsutils.cpp(4426)          037F22CA-C1CF-476B-9E4E-6D58C1D2A248     NORMAL CClientReadThrottler::InitializeWaitForClientRead Failed to read sleep time from registry [hr = 0x80070002]. Setting default [50 ms].
0F38   134C   05/18  05:45:13.349  31     dllmain.cpp(38)            037F22CA-C1CF-476B-9E4E-6D58C1D2A248     NORMAL WSSWriterHelperPlugin: DLL_PROCESS_ATTACH
0F38   134C   05/18  05:45:13.349  31     wss4writerhelperplugin.cpp(577)       [00000000003CF130]   037F22CA-C1CF-476B-9E4E-6D58C1D2A248     NORMAL Export And Import Operation to be performed in PostRestore WSS Specific Operations
0F38   134C   05/18  05:45:13.364  18     fsutils.cpp(3723)          037F22CA-C1CF-476B-9E4E-6D58C1D2A248     WARNING       Failed: Hr: = [0x80070003] : G: lVal : HRESULT_FROM_WIN32(dwError)
0F38   134C   05/18  05:45:13.380  31     wss4writerhelperplugin.cpp(246)       [00000000003CF130]   037F22CA-C1CF-476B-9E4E-6D58C1D2A248     NORMAL Successfully created Export Files Staging Directory \\wilson-sp.wsouza.local\MTATempStore$\DPM_40cb1167_d579_471c_91e4_6cbf3cd44193\cmp
0F38   134C   05/18  05:46:50.415  18     fsutils.cpp(663)           037F22CA-C1CF-476B-9E4E-6D58C1D2A248     WARNING       Failed: Hr: = [0x80070057] : Invalid path:\\wilson-sp.wsouza.local\MTATempStore$\DPM_40cb1167_d579_471c_91e4_6cbf3cd44193\cmp0000000.dat
0F38   134C   05/18  05:46:50.415  18     fsutils.cpp(698)           037F22CA-C1CF-476B-9E4E-6D58C1D2A248     WARNING       Failed: Hr: = [0x80070057] : GetVolumePrefixLength failed for \\wilson-sp.wsouza.local\MTATempStore$\DPM_40cb1167_d579_471c_91e4_6cbf3cd44193\cmp0000000.dat
0F38   134C   05/18  05:46:50.493  22     watsonintegration.cpp(73)         037F22CA-C1CF-476B-9E4E-6D58C1D2A248 NORMAL Inside Watson Handler
0F38   134C   05/18  05:46:50.509  22     watsonintegration.cpp(116)        037F22CA-C1CF-476B-9E4E-6D58C1D2A248 CRITICAL      Raising Watson for process

Here’s what you see on the DPM 2010 Administrator Console/Monitoring tab:

clip_image008

Error Description text: The recovery jobs for SharePoint Farm SharePoint Farm \SPSQL\SharePoint_Config that started at Friday, May 18, 2012 12:45:05 AM, with the destination of Wilson-sp.wsouza.local, have completed. Most or all jobs failed to recover the request data. (ID 3111)

The protection agent on Wilson-sp.wsouza.local was temporarily unable to respond because it was in an unexpected state. (ID 60 Details: Internal error code: 0x809909B0)

Scenario 2

The second scenario is where a site collection or site is deleted from the farm, and right away the SharePoint administrator requests you to do a Site Collection/Site restore but the restore fails.

The reason for this is because when SharePoint exports and imports the data it needs to import to an existing Site Collection/Site. If the Site Collection/Site wasn’t recreated before you started the restore from DPM then the failure is expected.

So let’s say that the SharePoint administrator removed the Site Collection as shown below.

clip_image010

Once it was removed he noticed that he actually meant to remove a different site collection than the one he selected. The DPM administrator then gets a call from the SharePoint administrator saying that he needs the site collection named http://wilson-sp/sites/blog restored to its original location. The DPM admin then attempts to recover it.

clip_image011

Unfortunately, after few minutes the restore fails on the second step as shown below.

clip_image013

Note that the first step was to restore the SQL database. In Monitoring/Jobs, the SQL DB restore job is called Disk recovery and as you can see here, that step was successful:

clip_image015

It’s the second step (SharePoint export and import task) that we’re interested in and the error message here is pretty clear:

clip_image017

Error Description text: DPM was unable to import the item http://wilson-sp/sites/Blog/ to the protected farm. Exception Mesaage = The site http://wilson-sp/sites/Blog/ could not be found in the Web application SPWebApplication Name=SharePoint – 80.. (ID 32005 Details: The system cannot find the file specified (0x80070002)

Here is a snippet from WssCmdletsWrapperCurr.errlog:

0770 0A9C 05/18 06:14:19.774 31 wsscmdletswrapperfactory.cpp(235) ACTIVITY Principal name HOST/WILSON-SP.WSOUZA.LOCAL@WSOUZA.LOCAL
0770 12E8 05/18 06:14:41.478 31 WSSCmdlets.cs(1362) NORMAL Successfully added UnAttachedContentDatabase [WILSON-SQL\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab].
0770 12E8 05/18 06:14:41.541 31 WSSCmdlets.cs(418) NORMAL Triggering Export of Source Url =
http://wilson-sp/sites/Blog/ to File = C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp\
0770 12E8 05/18 06:14:41.775 31 WssExportHelper.cs(125) NORMAL Export Parameters:- SourceUrl = [
http://wilson-sp/sites/Blog], ExportFilePath = [C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp], ExportFileName = [], RoType = [SiteCollection]
0770 12E8 05/18 06:14:41.775 31 WssExportHelper.cs(131) NORMAL Export Parameters:- Unattached Database :: [WILSON-SQL\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab]
0770 12E8 05/18 06:14:41.916 31 WssExportHelper.cs(278) NORMAL Source url : [
http://wilson-sp/sites/Blog] , HostHeaderIsSiteName = False
0770 12E8 05/18 06:14:41.931 31 WSSObjectModelHelper.cs(114) NORMAL Modified Source Url =
http://wilson-sp:44573/sites/Blog
0770 12E8 05/18 06:14:42.291 31 WssExportHelper.cs(303) NORMAL Triggering Export of SiteCollection =
http://wilson-sp:44573/sites/Blog
0770 12E8 05/18 06:15:21.464 31 WSSCmdlets.cs(444) NORMAL Successfully exported Source Url =
http://wilson-sp/sites/Blog to File = C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp\
0770 12E8 05/18 06:15:21.464 31 WSSCmdlets.cs(502) NORMAL Triggering Import of Target Url =
http://wilson-sp/sites/Blog/ from File = C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp\
0770 12E8 05/18 06:15:21.464 31 WssImportHelper.cs(157) NORMAL Import Parameters:- TargetUrl = [
http://wilson-sp/sites/Blog/], ImportFilePath = [C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp], ImportFileName = [], ImportSecurity = [False], IsAlternateUrl = [False], roType = [SiteCollection]
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(518) WARNING Caught IOException while trying to import Url [
http://wilson-sp/sites/Blog/] from File [C:\temp\DPM_7a6721a8_22e0_48c0_ae67_f0154c517bab\cmp\], will retry
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1281) WARNING ————————————————–
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1282) WARNING Exception Message =
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1282) WARNING The site
http://wilson-sp/sites/Blog/ could not be found in the Web application SPWebApplication Name=SharePoint – 80.
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING Exception Stack =
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.SPSite..ctor(String requestUrl)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.SPImport.InitializeImport()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.SPImport.Run()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at WSSCmdlets.CWssImportHelper.ImportUrlDelegate()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1283) WARNING at WSSCmdlets.CWSSCmdlets.ImportUrl(String targetUrl, String importPath, String importFileName, Boolean importSecurity, Boolean isAlternateURLRecovery, String roType, Int32& hr, String& exceptionMessage)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1284) WARNING Inner Exception =
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING Exception String =
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING System.IO.FileNotFoundException: The site
http://wilson-sp/sites/Blog/ could not be found in the Web application SPWebApplication Name=SharePoint – 80.
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.SPSite..ctor(String requestUrl)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.Deployment.SPImport.InitializeImport()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.Deployment.SPImport.Run()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at WSSCmdlets.CWssImportHelper.ImportUrlDelegate()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1285) WARNING at WSSCmdlets.CWSSCmdlets.ImportUrl(String targetUrl, String importPath, String importFileName, Boolean importSecurity, Boolean isAlternateURLRecovery, String roType, Int32& hr, String& exceptionMessage)
0770 12E8 05/18 06:15:21.745 31 WSSCmdlets.cs(1286) WARNING

So at this point you call the SharePoint administrator and ask him to recreate the site collection (blank is fine). The SharePoint admin creates the site collection as shown below and then tells you that you can proceed with the restore.

clip_image019

However, even after doing this the restore fails again and the error message doesn’t help at all.

clip_image021

Monitoring/Jobs gives you a little better error message:

clip_image023

Error Description text: DPM was unable to import the item http://wilson-sp/sites/Blog/ to the protected farm. Exception Message = Cannot import site. The exported site is based on the template BLOG#0 but the destination site is based on the template STS#1. You can import sites only into sites that are based on the same template as the exported site.. (ID 32005 Details: Unknown error (0x80131600) (0x80131600)

Below is a snippet from WssCmdletsWrapperCurr.errlog:

1310 11CC 05/18 06:31:42.803 31 wsscmdletswrapperfactory.cpp(235) ACTIVITY Principal name HOST/WILSON-SP.WSOUZA.LOCAL@WSOUZA.LOCAL
1310 0B4C 05/18 06:31:56.178 31 WSSCmdlets.cs(1362) NORMAL Successfully added UnAttachedContentDatabase [WILSON-SQL\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a].
1310 0B4C 05/18 06:31:56.194 31 WSSCmdlets.cs(418) NORMAL Triggering Export of Source Url =
http://wilson-sp/sites/Blog/ to File = C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp\
1310 0B4C 05/18 06:31:56.335 31 WssExportHelper.cs(125) NORMAL Export Parameters:- SourceUrl = [
http://wilson-sp/sites/Blog], ExportFilePath = [C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp], ExportFileName = [], RoType = [SiteCollection]
1310 0B4C 05/18 06:31:56.335 31 WssExportHelper.cs(131) NORMAL Export Parameters:- Unattached Database :: [WILSON-SQL\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a]
1310 0B4C 05/18 06:31:56.413 31 WssExportHelper.cs(278) NORMAL Source url : [
http://wilson-sp/sites/Blog] , HostHeaderIsSiteName = False
1310 0B4C 05/18 06:31:56.428 31 WSSObjectModelHelper.cs(114) NORMAL Modified Source Url =
http://wilson-sp:44573/sites/Blog
1310 0B4C 05/18 06:31:56.710 31 WssExportHelper.cs(303) NORMAL Triggering Export of SiteCollection =
http://wilson-sp:44573/sites/Blog
1310 0B4C 05/18 06:32:23.811 31 WSSCmdlets.cs(444) NORMAL Successfully exported Source Url =
http://wilson-sp/sites/Blog to File = C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp\
1310 0B4C 05/18 06:32:23.811 31 WSSCmdlets.cs(502) NORMAL Triggering Import of Target Url =
http://wilson-sp/sites/Blog/ from File = C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp\
1310 0B4C 05/18 06:32:23.811 31 WssImportHelper.cs(157) NORMAL Import Parameters:- TargetUrl = [
http://wilson-sp/sites/Blog/], ImportFilePath = [C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp], ImportFileName = [], ImportSecurity = [False], IsAlternateUrl = [False], roType = [SiteCollection]
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(540) WARNING Caught Exception while trying to import Url
http://wilson-sp/sites/Blog/ from File C:\temp\DPM_0dfb31ba_a9c0_454a_84da_0cd87cd5fd2a\cmp\
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1281) WARNING ————————————————–
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1282) WARNING Exception Message =
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1282) WARNING Cannot import site. The exported site is based on the template BLOG#0 but the destination site is based on the template STS#1. You can import sites only into sites that are based on same template as the exported site.

1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING Exception Stack =
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.WebSerializer.IsWebTemplateCompatible(String sourceWebTemplateName, String destinationWebTemplateName)
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.WebSerializer.SetObjectData(Object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector)
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.XmlFormatter.CallSetObjectData(Object obj, SerializationInfo objectData, ISerializationSurrogate surrogate, ISurrogateSelector selector)
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.XmlFormatter.ParseObject(Type objectType, Boolean isChildObject)
1310 0B4C 05/18 06:32:24.608 31 WSSCmdlets.cs(1283) WARNING at Microsoft.SharePoint.Deployment.XmlFormatter.DeserializeObject(Type objectType, Boolean isChildObject, DeploymentObject envelope)

So what’s the problem? As we can see, the template used by the SharePoint administrator for the blank site collection doesn’t match the template used for the deleted Site Collection. In this case, the template used for the Site Collection we are trying to restore is BLOG#0. This clearly tells that the template used was BLOG. In case your template isn’t as clear as this one, you can get a list of templates by running this command:

Get-SPWebTemplate | Sort-Object Name | ft –auto

So with that in mind, this is how the Site Collection should be recreated in our example:

clip_image025

 

Other Issues

There are also a few other known issues when restoring SharePoint Site Collection/Sites that you’ll want to be aware of:

1. If there is a space in a site name, protection will work but the restore of the site will not.

2. If a site is renamed and later on you need to restore that site, the restore will fail. This happens because once the site is renamed, DPM will treat the site as an Item. During restore DPM will complain that an Item can’t be restored to a site since they both have the same path.

 

Restoring Items Outside of DPM

Situations may arise where an item needs to be restored but using the DPM process will not work. For example, maybe there is a failure in the DPM restore process. Or maybe backups were done but catalogs failed and thus items are not enumerated in the DPM UI.

In these types of situations, you can use DPM to restore the content database to an alternate SQL server that SharePoint is using and then use SharePoint tools to restore a given item to a network location. The steps for this are below:

1. From DPM, select and restore the content database that holds the item you are trying to restore to a SQL server. For example, here we’ll restore file DownloadCenter.xml:

clip_image026

2. The item above is on content database WSS_Content so we’ll right-click that content database and select Recover

clip_image027

3. Click Next on the first screen of the recovery wizard (Review Recovery Selection).

clip_image029

4. On Select Recovery Type, select Recover to any SQL instance and click Next.

clip_image031

5. Select a SQL server where you want to restore the content database.

NOTE If you select the SQL Server\Instance where the content database you are restoring exist, give an alternate name for the database as well as a different path for the MDF and LDF files.

In our example here I am selecting the same SQL server\Instance name where content database WSS_Content exists so I will use an alternate name and database path for the MDF and LDF files.

clip_image032

6. Complete the Recovery Wizard accepting all defaults.

7. Once the restore is completed, go to SQL server\instance where the database was restored and verify that the database is there.

clip_image033

Now navigate to the SharePoint front end server for the remaining steps.

8. From Central Administration, click on Backup and Restore.

clip_image034

9. Click on Recover data from an unattached content database.

clip_image035

10. Enter the database server, database name, select Browse Content and then click Next.

clip_image037

11. Select the Site Collection, Site and List for the item you want to restore, then select Export site or list and then click Next.

clip_image039

12. Select the UNC path to store the exported item and click Start Export.

NOTE The path needs to be an existing share where the SharePoint admin has permission to write the file.

clip_image041

13. Once export is complete, check on the share/folder for the exported file.

This concludes our series on protecting SharePoint with System Center 2012 Data Protection Manager. Chances are you’ll never encounter any problems protecting your SharePoint farms but if you do, hopefully the information here will help you get past them.

Chris Butcher | Senior Support Escalation Engineer | Microsoft GBS Management and Security Division
Wilson Souza | Senior Support Escalation Engineer | Microsoft GBS Management and Security Division

Get the latest System Center news on Facebook and Twitter:

clip_image001 clip_image002

System Center All Up: http://blogs.technet.com/b/systemcenter/

Configuration Manager Support Team blog: http://blogs.technet.com/configurationmgr/
Data Protection Manager Team blog: http://blogs.technet.com/dpm/
Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
Operations Manager Team blog: http://blogs.technet.com/momteam/
Service Manager Team blog: http://blogs.technet.com/b/servicemanager
Virtual Machine Manager Team blog: http://blogs.technet.com/scvmm

Microsoft Intune: http://blogs.technet.com/b/microsoftintune/
WSUS Support Team blog: http://blogs.technet.com/sus/
The RMS blog: http://blogs.technet.com/b/rms/
App-V Team blog: http://blogs.technet.com/appv/
MED-V Team blog: http://blogs.technet.com/medv/
Server App-V Team blog: http://blogs.technet.com/b/serverappv
The Surface Team blog: http://blogs.technet.com/b/surface/
The Application Proxy blog: http://blogs.technet.com/b/applicationproxyblog/

The Forefront Endpoint Protection blog : http://blogs.technet.com/b/clientsecurity/
The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity-support/
The Forefront TMG blog: http://blogs.technet.com/b/isablog/
The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/

DPM 2012 R2 SharePoint 2010 SharePoint 2012