DNS: Scavenging: Records aren't deleted if scavenging manually disabled with DNSCMD
This article provides a solution to an issue where you enable Scavenging on the Windows DNS Server to get rid of some old and stale records on the zone.
Original KB number: 2791165
Symptoms
You may find yourself in a scenario where you enable Scavenging on the Windows DNS Server to get rid of some old and stale records on the zone.
You configure the Scavenging Cycle and Aging (No Refresh and Refresh interval) appropriate to your environment and wait for the Scavenging cycle to delete your records.
You notice that the Scavenging cycle runs but doesn't delete the records with old time stamps.
You decide to wait for another scavenging cycle to run, but still the records don't get deleted.
Cause
You may get into this scenario where the DNS Zone was previously configured manually for scavenging by a different server (using dnscmd), then scavenging was disabled in the environment and then enabled again on another server.
Resolution
For the zone in question, run the following command:
dnscmd /zoneinfo contoso.com
(I'll use the zone as contoso.com for example) You'll get the result like this:
Zone query result:
Zone info:
ptr = 0000000000327C90
zone name = ocntoso.com
zone type = 1
shutdown = 0
paused = 0
update = 2
DS integrated = 1
read only zone = 0
in DS loading queue = 0
currently DS loading = 0
data file = (null)
using WINS = 0
using Nbstat = 0
aging = 1
refresh interval = 168
no refresh = 168
scavenge available = 3606130
Zone Masters NULL IP Array.
Zone Secondaries NULL IP Array.
secure secs = 3
directory partition = AD-Domain flags 00000015
zone DN = DC=contoso.com,cn=MicrosoftDNS,DC=DomainDnsZones,DC=contoso,DC=com Scavenge Servers
Ptr = 000000000031D480
MaxCount = 1
AddrCount = 1
Server[0] => af=2, salen=16, [sub=0, flag=00000000] p=13568, addr=192.168.1.1
Here you notice the IP address 192.168.1.1. It's the IP address of the server that has the permission to scavenge the zone (Most likely this could be a server that is no longer existing) If it isn't the IP address of the server that on which you have configured Scavenging then we need to change that. To change the Scavenging server for a zone, run the command:
dnscmd /zoneresetscavengeservers contoso.com <Ip of the current DNS Server>
where <IP of the current DNS Server> is the IP address of the DNS Server where Scavenging is configured.
More information
The following command resets all scavenging server settings and removes manually specified servers.
dnscmd /zoneresetscavengeservers contoso.com (without ip address).
Note
The maximum time that an stale record may take to be deleted through Scavenging is (No Refresh interval + Refresh interval + Scavenging cycle interval).