[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’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 Description: 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.
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!