How to Set Up Windows Server 2016 Data Protection Manager

System Center Data Protection Manager (DPM) is Microsoft’s enterprise backup and recovery solution designed for protecting Windows servers, virtual machines, SQL Server databases, Exchange servers, SharePoint farms, and client workstations. Unlike file-level backup tools, DPM uses Volume Shadow Copy Service (VSS) and application-aware backup agents to capture consistent backups of running services without downtime. Deployed on Windows Server 2016, DPM provides short-term disk-based recovery with near-continuous data protection, medium-term tape archival, and long-term cloud backup through Azure Backup integration. This tutorial covers installing DPM 2016, configuring protection groups, performing recoveries, and managing the storage pool.

Prerequisites

You need a dedicated Windows Server 2016 server for DPM with at least 8 GB of RAM and a dedicated storage pool consisting of one or more unformatted disks for backup storage (DPM manages this storage itself). SQL Server 2016 is required for the DPM database. A service account (svc-dpm) with local administrator rights on the DPM server is required. The DPM server must have network connectivity to all protected servers and sufficient storage for the configured retention period.

Step 1: Install Required Windows Features

DPM requires .NET Framework 3.5 and 4.6, Windows PowerShell, and several other features. Install them before running DPM setup.

Install-WindowsFeature `
    NET-Framework-Features, `
    NET-Framework-45-Features, `
    Windows-Server-Backup `
    -IncludeManagementTools

# Install .NET 3.5 from Windows Server 2016 media if not available online
Install-WindowsFeature NET-Framework-Features `
    -Source D:sourcessxs

Step 2: Install DPM 2016

Mount the DPM 2016 installation media and run Setup.exe. Accept the license agreement, enter your product key, specify the SQL Server instance for the DPM database, and provide the service account credentials. DPM setup automatically installs the DPM service and creates the DPMDB database on the specified SQL Server instance.

# Unattended DPM installation
Setup.exe /i /f C:DPMSetupDPMInstall.ini

# Sample DPMInstall.ini content:
# [Options]
# SQLServerInstance=SQL01MSSQLSERVER
# UseExistingInstance=1
# ProgramFiles=C:Program FilesMicrosoft System Center 2016DPM
# DatabaseFiles=E:DPMDatabase
# DPMDatabaseName=DPMDB
# CustIdentFlag=1
# CompanyName=Corp
# UserName=Administrator

Step 3: Add Disks to the DPM Storage Pool

DPM uses a dedicated storage pool of unformatted disks for backup storage. Add available disks to the pool using the DPM Administrator Console or PowerShell.

Import-Module DataProtectionManager

# Connect to DPM server
$dpm = Connect-DPMServer -DPMServerName 'DPM01.corp.local'

# List available disks not yet in the pool
Get-DPMDisk -DPMServerName 'DPM01.corp.local' | Where-Object { $_.IsInStoragePool -eq $false }

# Add a disk to the storage pool
$disk = Get-Disk | Where-Object { $_.PartitionStyle -eq 'RAW' } | Select-Object -First 1
Add-DPMDisk -DPMServerName 'DPM01.corp.local' -Disk $disk

Step 4: Install DPM Protection Agents on Target Servers

Before DPM can protect a server, a DPM protection agent must be installed on that server. Deploy agents from the DPM Administrator Console or via PowerShell.

Import-Module DataProtectionManager
$dpm = Connect-DPMServer -DPMServerName 'DPM01.corp.local'

# Install agent on a remote server
Install-DPMAgentOnServer -DPMServerName 'DPM01.corp.local' `
    -Servers @('sql01.corp.local','web01.corp.local','fileserver01.corp.local') `
    -ProtectionAgentInstaller 'C:Program FilesMicrosoft System Center 2016DPMDPMagentsDPMAgentInstaller.exe'

# Verify agent status
Get-DPMProductionServer -DPMServerName 'DPM01.corp.local' |
    Select-Object ServerName, AgentVersion, IsAgentInstalled

Step 5: Create a Protection Group for File Servers

A protection group defines what data to protect, the retention policy, the backup schedule, and the storage allocation. Create a protection group for file server volumes.

Import-Module DataProtectionManager
$dpm = Connect-DPMServer -DPMServerName 'DPM01.corp.local'

# Create new protection group
$pg = New-ProtectionGroup -DPMServerName 'DPM01.corp.local' -Name 'File Servers'

# Add a volume to protect
$ps = Get-ProductionServer -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.ServerName -eq 'fileserver01.corp.local' }
$volumes = Get-Datasource -ProductionServer $ps | Where-Object { $_.Type -eq 'Volume' }
Add-Datasource -ProtectionGroup $pg -Datasources $volumes

# Set short-term disk-based protection (7 days retention, 2x daily sync, 8PM recovery point)
Set-ProtectionType -ProtectionGroup $pg -ShortTerm Disk
Set-ShortTermGoal -ProtectionGroup $pg -RetentionRangeInDays 7 `
    -SynchronizationFrequencyMinutes 720 `
    -RecoveryPointGoal (New-Object Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.RecoveryPointGoal(20, 0))

# Commit the protection group
Set-ProtectionGroup $pg

Step 6: Create a Protection Group for SQL Server

DPM provides application-consistent SQL Server backups using VSS. Create a separate protection group for SQL Server databases with a shorter synchronization interval to minimize data loss.

$pg = New-ProtectionGroup -DPMServerName 'DPM01.corp.local' -Name 'SQL Databases'

$ps = Get-ProductionServer -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.ServerName -eq 'sql01.corp.local' }

# Get SQL Server data sources
$sqlDBs = Get-Datasource -ProductionServer $ps |
    Where-Object { $_.Type -eq 'SqlDatabase' }

Add-Datasource -ProtectionGroup $pg -Datasources $sqlDBs

# Set synchronization every 15 minutes for SQL
Set-ShortTermGoal -ProtectionGroup $pg -RetentionRangeInDays 14 `
    -SynchronizationFrequencyMinutes 15

Set-ProtectionGroup $pg

Step 7: Perform an On-Demand Recovery Point

Create an on-demand recovery point at any time outside the regular schedule. This is useful before making changes to a protected server or application.

$pg = Get-ProtectionGroup -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.FriendlyName -eq 'SQL Databases' }

$ds = Get-Datasource -ProtectionGroup $pg | Select-Object -First 1

# Create a recovery point now
New-RecoveryPoint -Datasource $ds -BackupJobType CreateOnDemandRPDisk

Step 8: Recover Data from DPM

Recover a file or database to its original location or an alternate location. The following example recovers a file share to an alternate path for testing.

$ps = Get-ProductionServer -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.ServerName -eq 'fileserver01.corp.local' }

$ds = Get-Datasource -ProductionServer $ps | Select-Object -First 1
$rps = Get-RecoveryPoint -Datasource $ds | Sort-Object RepresentedPointInTime -Descending

# Recover the most recent recovery point to an alternate location
$rp = $rps | Select-Object -First 1
Restore-DPMRecoverableItem -RecoveryOption (
    New-RecoveryOption -HyperVDatasource `
        -TargetServer 'fileserver01.corp.local' `
        -RecoveryLocation AlternateLocation `
        -AlternatePath 'D:Recovery'
) -RecoveryPoint $rp

Step 9: Configure Azure Backup for Long-Term Retention

Extend DPM protection to Azure Backup for long-term retention and off-site protection. Install the Azure Backup agent on the DPM server, register it with a Recovery Services vault, and configure online protection.

# Install the Microsoft Azure Recovery Services Agent from the Azure portal download
# After installation, register the DPM server with your Recovery Services vault
# using the vault credentials file downloaded from the Azure portal

# Enable online protection for an existing protection group
$pg = Get-ProtectionGroup -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.FriendlyName -eq 'SQL Databases' }

Set-ProtectionType -ProtectionGroup $pg -LongTerm Online
Set-LongTermGoal -ProtectionGroup $pg -RetentionRangeWeeks 52
Set-ProtectionGroup $pg

Step 10: Monitor DPM Jobs and Alerts

Review DPM job status and alerts regularly to ensure backups are completing successfully. Failed jobs require prompt attention to avoid gaps in protection.

Import-Module DataProtectionManager
$dpm = Connect-DPMServer -DPMServerName 'DPM01.corp.local'

# Get recent jobs
Get-DPMJob -DPMServerName 'DPM01.corp.local' -From (Get-Date).AddDays(-1) |
    Select-Object DatasourceName, JobCategory, Status, StartTime, EndTime |
    Format-Table -AutoSize

# Get active alerts
Get-DPMAlert -DPMServerName 'DPM01.corp.local' |
    Where-Object { $_.Severity -in 'Error','Warning' } |
    Select-Object AlertMessage, Severity, OccurredSince |
    Format-Table -AutoSize

System Center Data Protection Manager on Windows Server 2016 provides a robust, application-aware backup solution that protects against accidental deletion, hardware failures, and ransomware attacks. By following this guide you have installed DPM, configured the storage pool, deployed protection agents, created protection groups for files and SQL databases, performed on-demand recovery points, configured Azure integration for long-term retention, and established monitoring practices. Test your recovery procedures regularly, not just your backup procedures, to ensure you can meet your Recovery Time Objective when a real incident occurs. Document your DPM configuration and keep it updated as your protected environment evolves.