DPM Fails To Restore From Tape

[Solved] Data Protection Manager fails to recover data from tape.

So recently I ran into a pretty significant problem involving tape restores in DPM 2012 R2 on one of the Windows Server 2012 R2 servers I support for a large law firm.

Whenever I would select to recover a data set from any of the written tapes in the tape library. DPM would throw up an error message very similar to the one below before promptly crashing and restarting.

DPM restore error


DPM’s GUI was generally unhelpful, displaying a failed restore and very little information.

Event viewer error logs were present. The most prominent one being:

Log Name:      Application
 Source:        MSDPM
 Date:          4/2/2015 9:02:55 AM
 Event ID:      943
 Task Category: None
 Level:         Error
 Keywords:      Classic
 User:          N/A
 Computer:      DPM_SERVER_NAME
 The description for Event ID 943 from source MSDPM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

Unable to connect to the DPM database because the database is in an inconsistent state.

Problem Details:
 19989094/2/2015 2:02:55 PMDpmThreadPool.cs163TrueDBCorruptionExceptionDLS error:  SP='dbo.prc_ARM_DataSource_GetServerName' Error=50001Microsoft.Internal.EnterpriseStorage.Dls.DB.DBCorruptionException: DLS error:  SP='dbo.prc_ARM_DataSource_GetServerName' Error=50001
    at Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlRetryCommand.ValidateReturnValue(String errorTitle)
    at Microsoft.Internal.EnterpriseStorage.Dls.PRMCatalog.DatasourceHelper.GetDatasourceServerName(SqlContext sqlCtx, Guid datasourceId)
    at Microsoft.Internal.EnterpriseStorage.Dls.PRMCatalog.PrmCatalog.GetDatasourceServerName(Guid datasourceId)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.Datasource.FillAppSpecificPropertiesForFS(ProtectionConfigType protectionConfig)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.Datasource.SetDestinationConfig(IMCatalogDB imCatalog, DatasetType dataset, RecoveryInformationType recoveryInformation, RecoveryTaskDefinitionType recoveryTaskDefinition)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.Datasource.AddRecoveryTaskDefinitionForDataset(IMCatalogDB imCatalog, JobTranslator jobTranslator, DatasetType dataset, RecoveryInformationType recoveryInformation, Boolean additionalRestore, Boolean isSerial, Guid parentTaskDefId)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.Datasource.GenerateRecoveryTaskDefinitions(IMCatalogDB imCatalog, JobTranslator jobTranslator, RecoveryInformationType recoveryInformation, Guid parentTaskDefId)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.RecoveryTranslator.GenerateRecoveryTaskDefinitionsRecursively(IMCatalogDB imCatalog, JobTranslator jobTranslator, RecoveryInformationType recoveryInformation, Guid parentTaskDefId)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.RecoveryTranslator.GenerateRecoveryTaskDefinitions(IMCatalogDB imCatalog, RecoveryInformations recoveryInformations)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.RecoveryTranslator.StartRecovery(Guid jobDefinitionId, Guid jobId, RecoveryInformations recoveryInformations, AdhocJobsContext jobContext)
    at Microsoft.Internal.EnterpriseStorage.Dls.Intent.RecoveryTranslator.StartRecovery(String recoveryXml, Guid jobDefinitionId, Guid jobId, AdhocJobsContext jobContext)
    at Microsoft.Internal.EnterpriseStorage.Dls.Engine.CIntentServices.TriggerRecovery(UInt16* bstrIMCatalogXml, _GUID jobDefinitionId, _GUID jobId, AdhocJobsContext jobContext)
    at Microsoft.Internal.EnterpriseStorage.Dls.Engine.CCoreServices.TriggerRecovery(CCoreServices* , UInt16* bstrRecoveryInformationXml, _GUID jobDefinitionId, _GUID jobId, UInt16* bstrJobContextXml, tagSAFEARRAY** exceptionResult)

After doing some digging online, it seemed as if the first step towards resolving this issue was to upgrade DPM to the latest roll-up. In short that’s all that was required, in addition to upgrading the DPM agents through the gui.

In my case Update Rollup 12 was the latest version.

Update location:

Update Roll up 12 for System Center 2012 R2 Data Protection Manager

This specific update is also included in Windows Updates, run an update scan from Control Panel, it might just save you some hassle.

Before preforming the upgrade – make sure to backup your DPM database and take a snapshot of the server if it’s virtual, better to be safe than sorry!

If needed check out my guide on How to Backup a DPM (SQL) database using SQL Studio Management.

Hope this helps!


Thanks for reading – feel free to follow and stay updated 🙂  View sysadminguides’s profile on Facebook View GuidesSysadmin’s profile on Twitter View 115372466162675927272’s profile on Google+

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s