Migrating DNS from Windows Server 2003 to Windows Server 2012 R2

domain-name-systemmigrationwindows-server-2003windows-server-2012-r2

Current environment: Two Windows Server 2003 servers, not joined to our domain (These are here to handle our outside DNS requests).

Plan: Stand up Windows Server 2012 R2 server, do not join to our domain. Give IP and install DNS role on server. Mark server as slave to our master DNS server which is Windows Server 2003. Once replication is complete, mark 2012 R2 DNS server as master. Build secondary DNS server on 2012 R2 platform, join as slave to 2012 R2 master. Then decommission 2003 DNS servers.

My question is, are there any "gotchas" or issue with this plan? Will there be compatibility issues between the 2003 server and the 2012 R2 server? Is our plan viable? I have been searching around and have not found anything about doing this either from Microsoft or from one of their partners.

Best Answer

Edit:

Please note the below only transfers A records and no other so you would still need to manually input remaining.

I've never done the above, but another alternative would be to:

  1. export your A records and zones from 2003. Save it - c:\dnsrecords.txt
  2. re-importing into Server 2012.
  3. Replicate other 2003 settings on 2012 that covers external lookups.
  4. Assign one PC with the new DNS servers and monitor the effects.

Exporting the DNS entries can be done on 2003 server. You should have a text file similar to the below.

User-PC Host (A)    10.24.2.48
Fileserver  Host (A)    10.25.2.49
  • Get the file into XLS and turn Host & (A) into columns so you are only left with.

    User-PC 10.24.2.48

    Fileserver 10.25.2.49

You can then use for & dnscmd to import the entries into your server 2012. Below is the dnscmd syntax and below that an example, which will run the command multiple times using the .txt you created as the input. It will replace %i with the hostname and %j with the IP address.

dnscmd ServerName /RecordAdd DNSZoneName HostName RecordType IPAddress

DNScmd syntax:

for /f "tokens=1-2" %i in (c:dnsrecords.txt) do dnscmd Server2012 /RecordAdd test.local %i A %j