Moving Protection Groups (With replica/recovery volumes) to Another DPM.
I am checking and find there's a way to create manual replica and copy paste old replica data on new dpm server and then Sync it. Is there any way to copy recovery point volume as well to another DPM server?
I have stand up second DPM server and want to move some protection groups from DPM1 to DPM2 as DPM1 is overloaded. What I want to move some protection groups (Along with replica and recovery point volume) to DPM2 so that I can restore 30 days recovery points
as well from DPM2.
Please advice me, is it possible or not.
Hi,
That is not possible. Recovery points are VSS snapshots of the replica volume, and cannot be copied. You can stop protection on DPM1 and retain the replica for recoveries. On DPM2 - re-protect the data from scratch.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights.
Similar Messages
-
Moving the Individual Protection group from one SAN Volume to another SAN Volume
Hi Professionals
Dudes !!! There is no much information about migratedatasourcedatafromdpm.ps1
script on the technet. My question is that I need to move Individual Protection group in an orderly manner from one SAN Storage to Another. I have more than 30 protection groups. I want to move individually 2 to 3 protection groups at one time from
Old SAN Storage to New SAN storage. Is it possible that I mention protection group individually and move each protection group bit-by-bit to the new SAN Storage.Hi,
you can use this GUI Option, to move a whole Disk.
in the next Version, hopefully published this Week, you can select a whole Protectiongroup to move
http://gallery.technet.microsoft.com/Migrate-DPM-Disk-or-dea8d4e9
Seidl Michael | http://www.techguy.at |
twitter.com/techguyat | facebook.com/techguyat -
Moving protection groups to a new server - How do I move tape data?
Hello, I am looking to install a new DPM server and decommission the existing DPM server.
I did read the Technet documentation on
Moving the DPM Server to a different computer
However, it seems easier to load a new DPM server, point protection agents to it and then recreate Protection Groups. Once all of the recovery points on the original server have expired I can proceed in removing it.
The only thing I'm stuck on is how to move all of the Tape data to the new server. And once I do that, how do I associate the recovery points on tape with the newly created Protection Groups?Hi,
The DPM tapes written to on the old DPM server can be moved to the new DPM server and imported, however, the data on them cannot be restored until you re-catalog the tapes, then the recovery points will show up under the recovery tape under EXTERNAL DPM
TAPES.
However - These recovery points can only be restored as flat files using the "recover to an alternate location" option. The browse will only see protected servers on the new DPM server. So basically, if you don't use the same DPM Server
name and restore the DPMDB, you will not get the option to recovery any data back to original location including application data. This will mean after a flat file restore, you will need to manually move or copy the files back to the applications folder
and replace the existing files for the application to be able to use them.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights. -
Moving SQL servers from one Protection group to another
We are using DPM 2012 R2 Update Rollup 4. We have started to move some SQL servers from a Protection group with 90 days of retention to a Protection group with 15 days of retention. The recovery data is co-located on the backup device and we are using
disk based backup. A couple days after moving a couple of the servers, I have noticed that the number of recovery points has stayed the same and not decreased. It would seem that when moving to a different protection group, that the SQL server
would inherit the new retention settings instead of retaining the ones from the old protection group. When I moved them, I stop protection of the databases and then added them to the new group. Why is this occurring and how do I get the new retention
settings in the new protection group to take affect?Thanks for the information. DPM is really a pain when trying to move co-located data sources to different protection groups. I do hope in future versions that this is simplified and corrected. I am now stuck for 90 days with data that I
don't want and I can't get rid of without getting rid of every recovery point for that group. That is bad news when my LDM DB is almost full.
An important note for those who are trying to see how many extents certain data sources have when following this article
http://blogs.technet.com/b/dpm/archive/2010/03/30/what-volume-to-migrate-first.aspx
If your DPM DB has changed from "DPMDB" to DPMDB with bunch of random characters, you will need to this line in the script for it to work.
$db = $srvr.Databases["DPMDB"]
<-- change this to your server’s DPMDB name
Also, you will need to greatly increase the width of your command window to see the "NumberOfExtents" column which is the most important column. -
Due times not aligned with Protection Group retention periods
We have a customer running DPM 2012 and using disk and tape backup.
There are 2 protection groups which have retention periods of 1 year and one with 5 year.
In the tape report the following tapes are mentioned:
4 tapes with a due date 1/2/2020
4 tapes with a due date 1/2/2016
And strange : 1 tape with a due date of 2/1/2018. This tape contains the protection for 2 servers using colocation for the so called Low and High group (1 year and 5 year which I mentioned previously).
We can't explain the fact that the due date is on 2018 since we don't have a protection group with that retention parameter.
Can anybody clarify with an example or assist?Plase put in this tape, make a rightclick and Show the "Tape Content"
you should see which Datasource has which Retention range, maybe this helps.
Seidl Michael | http://www.techguy.at | twitter.com/techguyat |
facebook.com/techguyat |
youtube.com/techguyat -
A few SQL related protection group Questions - DPM 2012 R2
Hi - Here is my environment: DPM 2012 R2 backing up SQL 2012 DBs. Some of the DBs are simple recovery model, some are full recovery model in the same protection group.
1) Regarding the fact that DPM only looks to the recovery model when the DB is first added to the protection group, if I ever changed the recovery model in the future, would stepping through the "Modify Protection Group" wizard without changing
anything be the solution for DPM not changing its methodology on the backing up or not backing up the log files? Or would I have to remove the affected databases from the protection group and add them back in?
2) I have disk protection configured for 30 Days, sync every 15 minutes, and application recovery points once per day. Online protection is configured for 90 Days. Does this mean my disk consumption on the DPM side for full model databases will be the full
size of the databases, plus the amount of changes observed over 30 days? OR does it mean it will keep 30 full copies of the DB? I am fairly sure the former.
3) If I do decide to reduce the retention range on the disk side of this protection group to say 14 days, are there any specific issues with changing that after the PG has been working for some time?
4) My former backup solution had an option to run consistency checks after every SQL job. Is that still considered best practice? Would the "Run a daily consistency check" be a better choice than the "Only run if a replica becomes inconsistent"
option that I currently have in place? Would there be any ramifications to enabling this now after this PG has been in place for some time?
Thanks very much!Hi
Q1) Regarding the fact that DPM only looks to the recovery model when the DB is first added to the protection group, if I ever changed the recovery model in the future, would stepping through the "Modify Protection Group" wizard without changing
anything be the solution for DPM not changing its methodology on the backing up or not backing up the log files? Or would I have to remove the affected databases from the protection group and add them back in?
A1)
Changing the Recovery Model of a Database
To change the recovery model of a protected database to the simple recovery model
Stop protection of the database, selecting the retain replica option.
Change the recovery model on the SQL Server database.
Add the database to a protection group.
Q2) I have disk protection configured for 30 Days, sync every 15 minutes, and application recovery points once per day. Online protection is configured for 90 Days. Does this mean my disk consumption on the DPM side for full model databases will be the full
size of the databases, plus the amount of changes observed over 30 days? OR does it mean it will keep 30 full copies of the DB? I am fairly sure the former.
A2) Your disk consumption on the DPM will be for size of model databases plus the amount of changes observed over 30 days.
Q3) If I do decide to reduce the retention range on the disk side of this protection group to say 14 days, are there any specific issues with changing that after the PG has been working for some time?
A4) Not really, but to gain back the potential extra space allocated for the original 30 day retention - you can try shrinking the recovery point volume once the retention range is reduced and the older recovery points are pruned. I would wait until
after midnight to be sure the old RP's are deleted, then try to shrink.
Q4) My former backup solution had an option to run consistency checks after every SQL job. Is that still considered best practice? Would the "Run a daily consistency check" be a better choice than the "Only run if a replica becomes inconsistent"
option that I currently have in place? Would there be any ramifications to enabling this now after this PG has been in place for some time?
A4) A consistency check will only run if DPM detects the replica is inconsistent. Even if you have the option selected to run nightly, if the replica is already consistent a consistency check will be skipped.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights. -
Unable to modify or create Protection Groups in DPM 2012 R2 - Error: 31220
"DPM failed to apply the required policies to this protection group since the recovery point limit for this DPM server has been exceeded. (ID: 31220)"
I am trying to add new data sources to our DPM server and continually run into the above message. I get the same error whether I attempt to create a new Protection Group and add the data sources to it... or if I attempt to modify an existing Protection Group
to add data sources to it. I can guess that the obvious answer is "You have too many data sources or to many recovery points for the server to handle..." If that's the case, I need to figure out how to tell how many I have. As best as I can figure
myself, I have less than 150 data sources and less than 2500 recovery points/snapshot/express-full. If there is a tool or a command that I can run to tell that, I'd be grateful to anyone who can point me in that direction.
I have tried to remove inactive member servers that no longer exist from our Protection Groups... no effect. I have tried to completely delete the removed server's data from replica... no effect. We began seeing this issue in 2012 SP1, so I ran
through the upgrade to 2012 R2 hoping that it would resolve the issue... no effect. I am able to remove members from our Protection Groups, but if I try to add an entirely new member or even just a single DB on an already protected member... fails with
above message. I also tried to adjust the retention and backup schedule... fails with above error.
Other than the stock answer from Microsoft that I am truly exceeding some limit, is there any other underlying issue that can cause this to be mis-reported to me? I hope that SOMEONE has an answer or guidance for me.Hi,
Another DPM PowerShell script - this one allows you to delete older recovery points for a selected datasource without having to modify the PG.
#Author : Ruud Baars
#Date : 11/09/2008
#Edited : 11/15/2012 By: Wilson S.
#edited : 11/27/2012 By: Mike J.
# NOTE: Update script to only remove recovery points on Disk. Recovery points removed will be from the oldest one up to the date
# entered by the user while the script is running
#deletes all recovery points before 'now' on selected data source.
$version="V4.7"
$ErrorActionPreference = "silentlycontinue"
add-pssnapin sqlservercmdletsnapin100
Add-PSSnapin -Name Microsoft.DataProtectionManager.PowerShell
$MB=1024*1024
$logfile="DPMdeleteRP.LOG"
$wait=10 #seconds
$confirmpreference = "None"
function Show_help
cls
$l="=" * 79
write-host $l -foregroundcolor magenta
write-host -nonewline "`t<<<" -foregroundcolor white
write-host -nonewline " DANGEROUS :: MAY DELETE MANY RECOVERY POINTS " -foregroundcolor red
write-host ">>>" -foregroundcolor white
write-host $l -foregroundcolor magenta
write-host "Version: $version" -foregroundcolor cyan
write-host "A: User Selects data source to remove recovery points for" -foregroundcolor green
write-host "B: User enters date / time (using 24hr clock) to Delete recovery points" -foregroundcolor green
write-host "C: User Confirms deletion after list of recovery points to be deleted is displayed." -foregroundcolor green
write-host "Appending to log file $logfile`n" -foregroundcolor white
write-host "User Accepts all responsibilities by entering a data source or just pressing [Enter] " -foregroundcolor white -backgroundcolor blue
"**********************************" >> $logfile
"Version $version" >> $logfile
get-date >> $logfile
show_help
$DPMservername=&"hostname"
"Selected DPM server = $DPMservername" >> $logfile
write-host "`nConnnecting to DPM server retrieving data source list...`n" -foregroundcolor green
$pglist = @(Get-ProtectionGroup $DPMservername) # WILSON - Created PGlist as array in case we have a single protection group.
$ds=@()
$tapes=$null
$count = 0
$dscount = 0
foreach ($count in 0..($pglist.count - 1))
# write-host $pglist[$count].friendlyname
$ds += @(get-datasource $pglist[$count]) # WILSON - Created DS as array in case we have a single protection group.
# write-host $ds
# write-host $count -foreground yellow
if ( Get-Datasource $DPMservername -inactive) {$ds += Get-Datasource $DPMservername -inactive}
$i=0
write-host "Index Protection Group Computer Path"
write-host "---------------------------------------------------------------------------------"
foreach ($l in $ds)
"[{0,3}] {1,-20} {2,-20} {3}" -f $i, $l.ProtectionGroupName, $l.psinfo.netbiosname, $l.logicalpath
$i++
$DSname=read-host "`nEnter a data source index from list above - Note co-located datasources on same replica will be effected"
if (!$DSname)
write-host "No datasource selected `n" -foregroundcolor yellow
"Aborted on Datasource name" >> $logfile
exit 0
$DSselected=$ds[$DSname]
if (!$DSselected)
write-host "No datasource selected `n" -foregroundcolor yellow
"Aborted on Datasource name" >> $logfile
exit 0
$rp=get-recoverypoint $DS[$dsname]
$rp
# $DoTape=read-host "`nDo you want to remove when recovery points are on tape ? [y/N]"
# "Remove tape recovery point = $DoTape" >> $logfile
write-host "`nCollecting recoverypoint information for datasource $DSselected.name" -foregroundcolor green
if ($DSselected.ShadowCopyUsedspace -gt 0)
while ($DSSelected.TotalRecoveryPoints -eq 0)
{ # "still 0"
#this is on disk
$oldShadowUsage=[math]::round($DSselected.ShadowCopyUsedspace/$MB,1)
$line=("Total recoverypoint usage {0} MB on DISK in {1} recovery points" -f $oldShadowUsage ,$DSselected.TotalRecoveryPoints )
$line >> $logfile
write-host $line`n -foregroundcolor white
#this is on tape
#$trptot=0
#$tp= Get-RecoveryPoint($dsselected) | where {($_.Datalocation -eq "Media")}
#foreach ($trp in $tp) {$trptot += $trp.size }
#if ($trptot -gt 0 )
# $line=("Total recoverypoint usage {0} MB on TAPE in {1} recovery points" -f ($trptot/$MB) ,$DSselected.TotalRecoveryPoints )
# $line >> $logfile
# write-host $line`n -foregroundcolor white
[datetime]$afterdate="1/1/1980"
#$answer=read-host "`nDo you want to delete recovery points from the beginning [Y/n]"
#if ($answer -eq "n" )
# [datetime]$afterdate=read-host "Delete recovery points AFTER date [MM/DD/YYYY hh:mm]"
[datetime]$enddate=read-host "Delete ALL Disk based recovery points BEFORE and Including date/time entered [MM/DD/YYYY hh:mm]"
"Deleting recovery points until $enddate" >>$logfile
write-host "Deleting recovery points until and $enddate" -foregroundcolor yellow
$rp=get-recoverypoint $DSselected
if ($DoTape -ne "y" )
$RPselected=$rp | where {($_.representedpointintime -le $enddate) -and ($_.Isincremental -eq $FALSE) -and ($_.DataLocation -eq "Disk")}
else
$RPselected=$rp | where {($_.representedpointintime -le $enddate) -and ($_.Isincremental -eq $FALSE)}
if (!$RPselected)
write-host "No recovery points found!" -foregroundcolor yellow
"No recovery points found, aborting...!" >> $logfile
exit 0
$reselect = $enddate
$adjustflag = $false
foreach ($onerp in $RPselected)
$rtime=[string]$onerp.representedpointintime
$rsize=[math]::round(($onerp.size/$MB),1)
$line= "Found {0}, RP size= {1} MB (If 0 MB, co-located datasource cannot be computed), Incremental={2} "-f $rtime, $rsize,$onerp.Isincremental
$line >> $logfile
write-host "$line" -foregroundcolor yellow
#Get dependent rp's for data source
$allRPtbd=$DSselected.GetAllRecoveryPointsToBeDeleted($onerp)
foreach ($oneDrp in $allRPtbd)
if ($oneDrp.IsIncremental -eq $FALSE) {continue}
$rtime=[string]$oneDrp.representedpointintime
$rsize=[math]::round(($oneDrp.size/$MB),1)
$line= ("`t...is dependancy for {0} size {1} `tIncremental={2}" -f $rtime, $rsize, $oneDrp.Isincremental)
$line >> $logfile
if ($oneDrp.representedpointintime -ge $enddate)
#stick to latest full ($oneDrp = dependents, $onerp = full)
$adjustflag = $true
$reselect = $onerp.representedpointintime
"<< Dependents newer than BEFORE date >>>" >> $logfile
Write-Host -nonewline "`t <<< later than BEFORE date >>>" -foregroundcolor white -backgroundcolor red
write-host "$line" -foregroundcolor yellow
else
#Ok, include current latest incremental
$reselect = $oneDrp.representedpointintime
write-host "$line" -foregroundcolor yellow
if ($reselect -lt $oneDrp.representedpointintime)
#we adjusted further backward than latest incremental within selection
$reselect = $rtime
$line = "Adjusted BEFORE date to be $reselect to include dependents to $enddate"
$line >> $logfile
Write-Host $line -foregroundcolor white -backgroundcolor blue
$line="`n<<< SECOND TO LAST CHANCE TO ABORT - ONE MORE PROMPT TO CONFIRM. >>>"
write-host $line -foregroundcolor white -backgroundcolor blue
$line >> $logfile
$line="Above recovery points within adjusted range will be permanently deleted !!!"
write-host $line -foregroundcolor red
$line >> $logfile
$line="These RP's include dependent recovery points and may contain co-located datasource(s)"
write-host $line -foregroundcolor red
$line >> $logfile
$line="Data source activity = " + $DSselected.Activity
$line >> $logfile
write-host $line -foregroundcolor white
$DoDelete=""
while (($DoDelete -ne "N" ) -and ($DoDelete -ne "Y"))
$line="Continue with deletion (must answer) Y/N? "
write-host $line -foregroundcolor white
$DoDelete=read-host
$line = $line + $DoDelete
$line >> $logfile
if (!$DSselected.Activity -eq "Idle")
$line="Data source not idle, do you want to wait Y/N ? "
write-host $line -foregroundcolor yellow
$Y=read-host
$line = $line + $Y
$line >> $logfile
if ($Y -ieq "Y")
Write-Host "Waiting for data source to become idle..." -foregroundcolor green
while ($DSselected.Activity -ne "Idle")
("Waiting {0} seconds" -f $wait) >>$logfile
Write-Host -NoNewline "..." -ForegroundColor blue
start-sleep -s $wait
if ($DoDelete -eq "Y")
foreach ($onerp in $RPselected)
#reselect is adjusted to safe range relative to what was requested
#--- if adjustflag not set then all up to including else only older because we must keep the full
if ((($onerp.representedpointintime -le $reselect) -and ($adjustflag -eq $false)) -or ($onerp.representedpointintime -lt $reselect))
$rtime=[string]$onerp.representedpointintime
write-host `n$line -foregroundcolor red
$line >>$logfile
if (($onerp ) -and ($onerp.IsIncremental -eq $FALSE)) { remove-recoverypoint -RecoveryPoint $onerp -confirm:$True} # >> $logfile}
$line =("---`nDeleting recoverypoint -> " + $rtime)
$line >>$logfile
"All Done!" >> $logfile
write-host "`nAll Done!`n`n" -foregroundcolor white
$line="Do you want to View DPMdeleteRP.LOG file Y/N ? "
write-host $line -foregroundcolor white
$Y=read-host
$line = $line + $Y
$line >> $logfile
if ($Y -ieq "Y")
Notepad DPMdeleteRP.LOG
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT] This
posting is provided "AS IS" with no warranties, and confers no rights. -
Monthly and Yearly backups not working for Protection Group?
Hi
We have a Protection Group with 160 members currently attached to it. The group has the following customized Recovery Points:-
- 1 recovery point every 1 day for the last 2 weeks, 1 recovery point every 1 month for the last 60 months and 1 recovery point every year for the last 5 years.
The schedule is as follows:-
- Every Day at 01:00, Every Month on First Day at 01:00 and Every 12 Months on 01 January at 01:00.
The daily tape backups are working fine without issue but neither the Monthly or Yearly backups are being attempted. We have checked the monthly backups for this issue for the last few months and are unable to see any evidence of the Monthly schedule even
running? This means that we are having to manually label the Daily tapes once a month as Monthly tapes but they will then stay on the Reports for the next 5 years as DPM will constantly request these tapes back.
Are you able to help with this matter?
Not that we really want to do this but if we removed the group completely and re-create it would this cause problems with our restore points?Hi,
This is a known issue that can occur in all current versions of
DPM including DPM 2012, to correct the condition, you simply need to perform this step. Any time before the next scheduled (monthly or longer) backup, manually update
the long term backup schedule by hitting the MODIFY button. The code that runs when modifying the backup schedule redoes the bacup schedules and it fixes the scheduling issue.
Below is a DPM Power-shell script that will show you the scheduled backups for all recovery goals for all protection groups. You can see the last time each recovery goal ran, and the NEXT run time, so you can monitor
the goals and re-fix them if necessary.
NOTE: It takes about 20-30 minutes before the fixed next run time schedule will be populated after modify the protection group and updating the schedule.
# This script will list all currently scheduled backup to tape jobs #
# It will list scheduled, last run and next run dates #
# Note: The script takes in consideration that the DPM Database was installed locally on its #
# Default instance. If SQL is installed on a different location/instance, edit the line #
# that starts with $instance = '.\msdpm2010 #
# Author : Wilson Souza #
# Date Created : 1/13/2012 #
# Last modified : 1/17/2012 #
# Version : 1.0 #
# This version of the script was only tested on DPM 2010 #
param([string] $verbose)
add-pssnapin sqlservercmdletsnapin100
Add-PSSnapin -Name Microsoft.DataProtectionManager.PowerShell
$ConfirmPreference = 'None'
cls
$instance = '.\msdpm2010' # <---- If DPM Database is on a different location, edit this line accordinly
$query = "use DPMDB
go
CREATE FUNCTION label (@GUID varchar(36), @kindred varchar(4), @vault varchar(8))
returns varchar (1024)
as
Begin
declare @result varchar (1024)
select @result = vaUltlabel from tbl_mm_vaultlabel where mediapoolid = @GUID and generation =
case @kindred
when 'Fath' Then '2'
when 'Gran' then '1'
when 'grea' Then '0'
end and
vault =
case @vault
when 'Offsite1' then '3'
when 'Offsite2' then '4'
when 'Offsite3' then '5'
when 'Offsite4' then '6'
when 'Offsite5' then '7'
when 'Offsite6' then '8'
when 'Offsite7' then '9'
else
'1'
end
RETURN @result
END
go
use DPMDB
select ScheduleId as name
,def.JobDefinitionId as JD
,FriendlyName as PG
,SUBSTRING (CONVERT(VARCHAR(10),active_start_date),5,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),active_start_date),7,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),active_start_date),1,4) as SD
,jobs.date_created as SCD
,SUBSTRING (CONVERT(VARCHAR(10),last_run_date),5,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),last_run_date),7,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),last_run_date),1,4) + ' ' +
SUBSTRING (CONVERT(VARCHAR(6),last_run_time),1,2) + ':' + SUBSTRING (CONVERT(VARCHAR(6),last_run_time),3,2) + ':' + SUBSTRING (CONVERT(VARCHAR(6),last_run_time),5,2) as LRD
,SUBSTRING (CONVERT(VARCHAR(10),next_run_date),5,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),next_run_date),7,2) + '-' + SUBSTRING (CONVERT(VARCHAR(10),next_run_date),1,4) + ' ' +
SUBSTRING (CONVERT(VARCHAR(6),next_run_time),1,2) + ':' + SUBSTRING (CONVERT(VARCHAR(6),next_run_time),3,2) + ':' + SUBSTRING (CONVERT(VARCHAR(6),next_run_time),5,2) as NRD
,dbo.label ((substring(xml,(patindex('%MediaPoolId%',Xml))+13,36)), (substring(xml,(patindex('%generation%',Xml))+12,4)), (substring(xml,(patindex('%vault%',Xml))+7,8))) as TL
,case
when substring(xml,(patindex('%vault%',Xml))+7,3) = 'off' then 'Long-Term'
else 'Short-term'
end as STLT
,case
when substring(xml,(patindex('%generation%',Xml))+12,4) = 'Fath' then 'Recovery Goal 1'
when substring(xml,(patindex('%generation%',Xml))+12,4) = 'Gran' then 'Recovery Goal 2'
when substring(xml,(patindex('%generation%',Xml))+12,4) = 'Grea' then 'Recovery Goal 3'
end as RG
from tbl_SCH_ScheduleDefinition sch
,msdb.dbo.sysjobs jobs
,tbl_JM_JobDefinition def
,DPMDB.dbo.tbl_IM_ProtectedGroup prot
,msdb.dbo.sysjobschedules jobsch
,msdb.dbo.sysjobsteps jobsteps
,msdb.dbo.sysschedules syssch
where CAST(sch.ScheduleId as NCHAR (128)) = jobs.name
and def.JobDefinitionId = sch.JobDefinitionId
and def.ProtectedGroupId = prot.ProtectedGroupId
and jobs.job_id = jobsch.job_id
and jobs.job_id = jobsteps.job_id
and jobsch.schedule_id = syssch.schedule_id
and (def.Type = '913afd2d-ed74-47bd-b7ea-d42055e5c2f1' or def.Type = 'B5A3D25C-8EB2-4032-9428-C852DA5CE2C5')
and sch.IsDeleted = '0' and def.ProtectedGroupId is not null
order by FriendlyName, next_run_date, next_run_time
go
drop function label
go"
$result = Invoke-Sqlcmd -ServerInstance $instance -Query $query
$count = 1
write-host " The list below shows all scheduled backup to tape jobs (short term and long term)" -f green
write-host
if ($verbose.ToLower() -eq '')
write-host " For optimun output, set PoweShell Width for screen buffer size to at least 200" -f yellow; write-host
write-host
write-host " Protection Group name Creation Date [Schedule Creation Date] [Last Run Date / time] [Next Sched Run Date/time] Goal type Recovery Goal # Custom Tape Label"
write-host " ------------------------------ ------------- ------------------------ ---------------------- -------------------------- ---------- --------------- -----------------"
foreach ($result1 in $result)
if ($color -eq 'white') {$color = 'cyan'} else {$color = 'white'}
write-host ("{0,2}"-f $count) -foreground green -nonewline
write-host ( " - {0,-30} {1,-13} {2,-24} {3,-24} {4,-27} {5,-10} {6,15} " -f $result1.PG, $result1.SD, $result1.SCD, $result1.LRD, $result1.NRD, $result1.STLT, $result1.RG) -nonewline -f $color
write-host $result1.TL -f yellow
$count++
else
write-host " For optimun output, set PoweShell Width for screen buffer size to at least 110" -f yellow; write-host
write-host " Protection Group Term Goal Tape Label"
write-host " ------------------------------ ---------- --------------- --------------"
foreach ($result1 in $result)
if ($color -eq 'white') {$color = 'cyan'} else {$color = 'white'}
write-host ("{0,2}"-f $count) -foreground green -nonewline
write-host ( " - {0,-30} {1,-10} {2,15} " -f $result1.PG, $result1.STLT, $result1.RG) -nonewline -f $color
write-host $result1.TL -f yellow
$count++
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT] This
posting is provided "AS IS" with no warranties, and confers no rights.
I cant seem to get this script to run.. can someone point out what might be missing..
I've tried creating a shortcut like the following as well:
Target: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -File "C:\Program Files\Microsoft
DPM\DPM\bin\dpmcliinitscript.ps1" "C:\Data\scripts\scheduledjobs.ps1"
Start in: "C:\Program Files\Microsoft DPM\DPM\bin\"
If i run as admin in just takes you to a command line prompt in PS..
Any thoughts on what is missing here.. i've modified the ps1 to reflect 2012 in my case.. 2012 R2
DPM
Tech, the Universe, Everything: http://tech-stew.com
Ok, the 1.6 script works.. but only if i run it from the ps1 script file.. by right clicking it and doing the Run with Powershell option (non admin).. my shortcut doesnt work.. same issue.. it just goes to a power shell prompt. The right click and
run is non admin mode as well.
When I run it with the right click it shows no jobs scheduled.. If i look in dpm 2012 r2 i see a yearly tape backup scheduled for today.. the script doesnt show me a way to also get the monthly to appear (i've set the monthly for a day later but it doesnt
appear in the scheduled tasks for next 7 days).. i was under the impression this script would help force the monthly to appear/run.. but even the yearly that does show in DPM scheduled tasks isnt showing up with the script (maybe admin issue?)
Tech, the Universe, Everything: http://tech-stew.com -
Error creating and modifying protection groups
When modifying or creating a new protection group I periodically get a DPM 945 event with this text:
<FatalServiceError><__System><ID>19</ID><Seq>27</Seq><TimeCreated>1/6/2012 4:54:22 AM</TimeCreated><Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System><ExceptionType>SqlException</ExceptionType><ExceptionMessage>Cannot
insert the value NULL into column 'owner_sid', table 'msdb.dbo.sysjobs'; column does not allow nulls. INSERT fails.
The statement has been terminated.</ExceptionMessage><ExceptionDetails>System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'owner_sid', table 'msdb.dbo.sysjobs'; column does not allow nulls. INSERT fails.
The error seems to have the following pattern:
1. I log on and launch the MMC. Modification of the protection group works.
2. Try to do a second modification and the error occurs.
3. Log out and log back in, relaunch the MMC and I can modify the protection group.
Seems like a bug?
RobIn further testing with the Release Candidate...here is what is happening:
1. Any change to a protection group or creating a new one causes the error.
2. It does not happen the first time when modifying a protection group. Only subsequent modifications.
3. It happens with protection groups with and without Exchange, a change from my earlier statement.
Here are the event logs that are generated:
The description for Event ID 955 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:
The consistency check resulted in the following changes to SQL Server Agent schedules: Schedules added: 5 Schedules removed: 0 Schedules updated: 0.
Problem Details:
<ConsistencyCheck><__System><ID>26</ID><Seq>15</Seq><TimeCreated>1/20/2012 6:56:13 PM</TimeCreated><Source>SchedulerImpl.cs</Source><Line>719</Line><HasError>True</HasError></__System><Tags><JobSchedule
/></Tags></ConsistencyCheck>
the message resource is present but the message is not found in the string/message table
The description for Event ID 955 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:
The consistency check resulted in the following changes to SQL Server Agent schedules: Schedules added: 0 Schedules removed: 10 Schedules updated: 0.
Problem Details:
<ConsistencyCheck><__System><ID>26</ID><Seq>1228</Seq><TimeCreated>1/20/2012 7:40:18 PM</TimeCreated><Source>SchedulerImpl.cs</Source><Line>719</Line><HasError>True</HasError></__System><Tags><JobSchedule
/></Tags></ConsistencyCheck>
the message resource is present but the message is not found in the string/message table
The description for Event ID 945 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 of a general database failure. Make sure that SQL Server is running and that it is configured correctly.
Problem Details:
<FatalServiceError><__System><ID>19</ID><Seq>1236</Seq><TimeCreated>1/20/2012 7:40:29 PM</TimeCreated><Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System><ExceptionType>SqlException</ExceptionType><ExceptionMessage>Cannot
insert the value NULL into column 'owner_sid', table 'msdb.dbo.sysjobs'; column does not allow nulls. INSERT fails.
The statement has been terminated.</ExceptionMessage><ExceptionDetails>System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'owner_sid', table 'msdb.dbo.sysjobs'; column does not allow nulls. INSERT fails.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.Internal.EnterpriseStorage.Dls.DB.SqlRetryCommand.ExecuteNonQuery()
at Microsoft.Internal.EnterpriseStorage.Dls.Scheduler.SqlAgentHelper.AddJob(String jobName, String jobOwner, String CategoryName)
at Microsoft.Internal.EnterpriseStorage.Dls.Scheduler.SqlAgentHelper.RegisterSchedule(Schedule schedule)
at Microsoft.Internal.EnterpriseStorage.Dls.Scheduler.RegisterScheduleHelper.PerformDBOperation()
at Microsoft.Internal.EnterpriseStorage.Dls.Scheduler.RegisterScheduleHelper.Execute(SqlContext sqlContext)
at Microsoft.Internal.EnterpriseStorage.Dls.Scheduler.SchedulerImpl.Register(SqlContext sqlContext, String scheduleXml)
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ScheduleTranslator.CreateScheduleDefinition(String jobDefinitionId, RecurrenceType[] scheduleRecurrances)
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ScheduleTranslator.ScheduleJobDefinition(JobTranslator jobTranslator)
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ScheduleTranslator.ScheduleReplicationJob(JobTranslator jobTranslator, BackupTypeType backupType, Boolean scheduleOnlyForApplications)
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ScheduleTranslator.ScheduleFullDeltaReplicationJobForApp()
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ProtectedGroupTranslator.UpdateJobDefinitions()
at Microsoft.Internal.EnterpriseStorage.Dls.Intent.ProtectedGroupTranslator.TranslateGroup(IMCatalogType IMCatalogXmlPassed, String intentCatalogXml)
at Microsoft.Internal.EnterpriseStorage.Dls.Engine.CIntentServices.ConfigureProtectedGroup(UInt16* bstrIMCatalogXml)
at Microsoft.Internal.EnterpriseStorage.Dls.Engine.CCoreServices.ConfigureProtectedGroup(CCoreServices* , UInt16* bstrIMCatalogXml, tagSAFEARRAY** exceptionResult)</ExceptionDetails></FatalServiceError>
the message resource is present but the message is not found in the string/message table
Rob -
Event 917 Console Crash when attempting to modify Disk Only Protection Group
Primary DPM 2012 R2 4.2.1254.0 running on Server 2012 -
In the process of decommissioning a number of old servers - I found that I am no longer able to modify a disk only protection group on one of my primary DPM servers. Console crash - noting error 917. I've seen a number of work around in relation to protection
groups with long term storage, but none noting disk only. Notably, kb 2905631 - long term only protection may cause this issue.
Another thread mentioned that re-syncing / consistency checks on the entire server resolved the issue for them, but I find that rather unnecessary. I've over 13Tb of data on this server, and am trying to remove the last 30GB of an old protection group.
Recap-
Error 917 when removing member from protection group
MMC crash with a 999 marked when modifying the protection group
The event log is not noting any service crashes, or the 917 error in the event log. 999 is getting recorded in the event log.
The description for Event ID 999 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:
An unexpected error caused a failure for process 'mmc'. Restart the DPM process 'mmc'.
Problem Details:
<FatalServiceError><__System><ID>19</ID><Seq>0</Seq><TimeCreated>12/2/2014 5:40:14 PM</TimeCreated><Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System><ExceptionType>SqlNullValueException</ExceptionType><ExceptionMessage>Data
is Null. This method or property cannot be called on Null values.</ExceptionMessage><ExceptionDetails>System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.
at System.Data.SqlClient.SqlBuffer.get_String()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.ReadBackupAndCCWindow()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.get_BackupWindow()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.GetPerformanceString()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.AddPerformanceData()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.ConstructDetailsPaneContent()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.CommonControls.UISearchableElement.get_DetailNameValuePairs()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.DisplayDetails()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.FillGroupDetails(GroupingListHeaderItem group)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.UpdateDetailsPane()
at System.EventHandler.Invoke(Object sender, EventArgs e)
at Microsoft.Internal.EnterpriseStorage.UI.CommonControls.GroupingListView.EndUpdate()
at Microsoft.Internal.EnterpriseStorage.UI.CommonControls.GroupingListViewBody.ProcessClick()
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at Microsoft.Internal.EnterpriseStorage.UI.CommonControls.GroupingListViewBody.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</ExceptionDetails></FatalServiceError>
the message resource is present but the message is not found in the string/message tableHi Mike,
That appears to be the case. A row shows NULL for IMCatalogXML. I'm looking at your script to update the value now based on the following thread - thread .
So far, no rows have been modified.
Since I really don't care about this protected member, is this a row I could just delete from the DB, or how to properly update the data so I can remove it from within the confines of the GUI?
Marketing 2011-05-19 18:59:41.917
B7073B10-DDE6-4EA3-BD8C-1E1497C218D5 NULL
NULL 0
0 0 NULL
2 0
NULL
This PG was definitely around back when this server was DPM 2010.
Regards -
DPM2012 R2 - cannot free tapes for deleted protection group
I've deleted one of the protection group with option to delete protected data.
But tapes are still not set as free - and I cannot do it manually - I have constant message that tape is a part of protection group.
I cannot set them also as free by using a script (http://technet.microsoft.com/en-us/library/ff399673.aspx) - the same message is shown :
Set-Tape : The selected tapes cannot be marked as free because they belong to p
rotection groups.
You need to stop protection of the associated protection groups before you can
mark the tapes as free. The protection group that a tape belongs to is listed i
n the Protection Group column. (ID: 31116)
JDHi,
very fine script - but's not working for me - after selecting slot - nothing happens with is - still not set free
Force Free Tape Version 2,4
Type ? for help
DPM Server name ( Enter = <...> ):
Library Name (Only online Libraries will be listed)
1 - IBM TotalStorage 3573 Tape Library
Enter Slot number(s). If entering more than one, separate them by single space
Example (1 5). (Enter to exit): 5
Processing this slot list...
Slot-5
PS C:\Users\....\Desktop>
JD -
Can't create protection groups on the Azure Portal with on-premise hyper-v to Azure
I’m trying to setup Azure Site Recovery on-premise hyper-v to Azure. I have successfully configured the Hyper-V Sites and installed the provider with the registration key. Both servers
show green. I see my hyper-v server on the server tab.
The issue occurred when I’m moving to the next step “creating a Protection Group”. When click on the “create new protection group” I’m getting the error saying "An error
occurred while retrieving the list of servers".
I had this error also yesterday and I tried to delete the sites, vault and create everything again. I used the unregister scripted
https://msdn.microsoft.com/en-us/library/azure/dn903160.aspx?f=255&MSPPError=-2147217396
Still I got the error today again.
I really don’t understand what I’m doing wrong.
Ps. I followed this guide
http://www.ms4u.info/2014/12/configure-azure-site-recovery-asr.htmlYour welcome, glade I could help you out. I'm kind of stuck myself with site-to site vpn part. I made the posted here with all the details.
https://social.msdn.microsoft.com/Forums/en-US/4f981cda-52ea-41e9-b9e7-4c34bb7367b8/need-help-to-configure-a-vpn-connection-to-an-azure?forum=WAVirtualMachinesVirtualNetwork
I want to make a planned failover and connect the network with the virtual machines. Somehow the vpn connection fails on phase 2. -
DPM 2012: MMC crashes when working with 2 particular protection groups
I have a problem with 2 particular protection groups that will not allow me to perform a backup to tape on them. When I try to, the MMC crashes with the following error logged in the application event log:
The description for Event ID 999 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:
An unexpected error caused a failure for process 'mmc'. Restart the DPM process 'mmc'.
Problem Details:
<FatalServiceError><__System><ID>19</ID><Seq>0</Seq><TimeCreated>9/2/2012 3:46:36 PM</TimeCreated><Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System><ExceptionType>ArgumentOutOfRangeException</ExceptionType><ExceptionMessage>Index
was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index</ExceptionMessage><ExceptionDetails>System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException()
at System.Collections.Generic.List`1.get_Item(Int32 index)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.CreateRecoveryPointDialog.InitializeForTapeRecoveryPoint()
at System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
at System.Windows.Forms.ComboBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</ExceptionDetails></FatalServiceError>
the message resource is present but the message is not found in the string/message table
As this appears to be a problem with just these protection groups (I am able to take tape backups of others without a problem) I decided I would try to remove the group, retain the data and re-create it. When I right click on the group and attempt
to stop protection of the group or modify the protection group, the MMC crashes with the same error above.
One protection group is backing up and Exchange 2010 Archive Database, the other, Lync 2010 SQL Databases (and covers 2 different servers).
Does anybody have any suggestions on how I can get these protection groups behaving as they should and working again?
DPM is 2012 RTM running on a Windows Server 2008 R2 SP1 Enterprise physical server. The servers being protected are running Windows Server 2008 R2 SP1 Standard, the Exchange one is virtual (running on Hyper-V), Lync, one physical, one virtual (also running
on Hyper-V).Hi
First of all verify that below services are running and also check which user account is uses for running the DPM and SQL services.
DPM
DPM Replication Agent
SQLAgent$MS$DPM2007$
MSSQL$MS$DPM2007$
Virtual Disk Service
Volume Shadow Copy
Thanks and Regards Deepak -
Hello
I'm setting up a DPM server (2012 R2) at a remote site; everything goes well with no issues until a protection group is created, at which point I get the following error;
Create protection group: Protection Group 1 failed:
Error 360: The operation failed due to a virtual disk service error
Error details: The system cannot find the file specified
Recommended action: Retry the operation.
The environment is as follows;
- Virtual Machine Running Server 2008 R2 Fully updated
- Storage Pool is an iSCSI connection Thick Provisioned 1TB GPT and shows in Disk Management with no issues.
- Have connected to Session 0 (console)
- Error log shows The provider did not receive a Plug and Play service notification for the volume. volume=10 for the VDS Dynamic Provider
Can Anyone Help?
Thanks
.Adam LangdonHi,
Disk defrag is initiated when a volume shrink is attempted. See if there is any problem defragging a volume and correct any problems doing that.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights. -
Performing a manual replica of a new protected workload to an existing protection group
I have read much about creating a manual replica of a datasource when
creating a new protection group. Hopefully my question is simple to answer??!! If I
modify an existing Protection Group and select manual replication, will this only apply to the new protected workload in that protection group or will it apply to all the existing protected workloads that are successfully synchronising
also?
I am using DPM 2012 R2.
Thanks
MarkThat will only apply to newly added Datasources.
attached a Screesnhot for a newly added DS to an existing PG with Manual creation of replica
Seidl Michael | http://www.techguy.at |
twitter.com/techguyat | facebook.com/techguyat
Maybe you are looking for
-
Prevent iTunes on second user account from updating iPod
I was unable to find an answer to this question in a search, so I hope someone out there can help. My wife and I have separate admin user accounts on our Mac. All our music is stored under my user account to which I have granted full access to all us
-
Has anyone had a problem losing e-mail messages after viewing on the iphone
Recently, I have lost a small handful of Yahoo messages. Seriously, they just vanished into thin air. The message would be there in my list of messages, but when I would open it on the iPhone, it would be a completely different message. Initially I t
-
My mac is running so bad since I changed over to Lion
Hi all, Since I up-graded my software to Lion I must say my Mac has never run sooo badly .It takes longer to open and close and it keeps booting up programes from my last session even though I have started closing everything down before I
-
I am using the example from the XML/HTTP which uses a client, servlet and request handler. The Servlet calls the StatefulSession TraderHome Bean. I am getting the following: java.lang.ClassCastException: examples.ejb.basic.statefulSession.TraderBeanH
-
Do not recognize the exact Serial Number when Setup.
Do not recognize the exact Serial Number when Setup. Invalid Serial Number. This is not a valid serial number. Prease go Back and re-enter your serial number. I am a old Korean. I can not speak and write English well. So I write this letter, as trans