一、从Windows 2000 DHCP 服务器上导出DHCP 数据库
 
1.使用管理员登录,打开一个“CMD”命令行窗口.
 
2.运行此命令以停止DHCP服务:net stop dhcpserver
 
3.运行以下命整理DHCP数据库:
Cd %systemroot%\system32\dhcp
Jetpack dhcp.mdb temp.mdb
 
4.访问 http://support.microsoft.com/kb/927229 并下载dhcpexim.exe工具,然后安装并运行。Dhcpxim工具地址:
http://www.microsoft.com/downloads/details.aspx?familyid=3603ae26-81f0-478a-836c-b31ed463af5e
 
5.点击“Export configuration of the local service to a file”并将输入保存文件名,如:dhcp.txt
 
6.选择要导出的作用域,并选中“Disable the selected scopes on local machine before export”复选框,然后导出.
 
7. 从命令行运行:services.msc,然后将“Microsoft DHCP Server”的启动类型设为“禁用”.
 
二、导入到win2003 DHCP 服务器
2003的dhcp并不能通过dhcpxim工具导入。需要通过netsh导入。
1.将导出的dhcp.txt复制到2008 DHCP服务器,如:c:\dhcp.txt.
 
2.在2003 DHCP服务器上安装DHCP角色,然后从服务管理器中停止DHCP服务.
 
3.从c:\windows\system32\dhcp文件夹中删除dhcp.mdb,然后启动DHCP服务.
 
4.以管理员权限运行一个“CMD”窗口
 
5.运行以下命令:
Netsh dhcp server import c:\dhcp.txt
 
6.重启DHPC服务,并确认DHCP服务配置已成功导入。
 
三、异常过程的处理
迁移过程中,运行
C:\>netsh dhcp server import c:\dhcp.txt all
出现错误提示:
导入类别 "Microsoft Windows 2000 选项" 时出错。
此类别和现存的类别 "Microsoft Windows 2000 选项" 冲突。
 
根据网上的资料,这是由于不同版本之间的DHCP的类别或类别的描述不同造成的。解决的方法是删除2000的类别和类别描述,并且导入windows2003的类别和类别描述。
1、 分别导出2000和2003的dhcp类别和类别描述
在2000下运行 netsh dhcp server dump > c:\dhcp2000.txt
在2003下运行 netsh dhcp server dump > c:\dhcp2003.txt
2、 比较dhcp2000和dhcp2003
Dhcp2000:
# =====================================
#     Add Classes                     
# =====================================
 
Dhcp Server 10.0.1.199 Add Class "Microsoft Windows 2000 选项" "Microsoft 的 Windows 2000 客户的特定供应商选项" 4d53465420352e30 1 b
Dhcp Server 10.0.1.199 Add Class "Microsoft Windows 98 选项" "Windows 98 客户的 Microsoft 供应商专用的选项" 4d534654203938 1 b
Dhcp Server 10.0.1.199 Add Class "Microsoft 选项" "Microsoft Windows 98 和 Windows 2000 适用的客户指定的选项" 4d534654 1 b
Dhcp Server 10.0.1.199 Add Class " 默认 BOOTP 的类别" "BOOTP 客户的用户类别" 424f4f54502e4d6963726f736f6674 0 b
Dhcp Server 10.0.1.199 Add Class " 默认路由和远程访问类别" " 用户类别的常用和远程访问客户" 525241532e4d6963726f736f6674 0 b
# =====================================
#     Add Classes  结束
# =====================================
 
 
Dhcp2003:
# =====================================
#     Add Classes                     
# =====================================
 
Dhcp Server 10.10.10.11 Add Class " 默认路由和远程访问类别" " 远程访问客户端的用户类别" 525241532e4d6963726f736f6674 0 b
Dhcp Server 10.10.10.11 Add Class " 默认 BOOTP 的类别" "BOOTP 客户端的用户类别" 424f4f54502e4d6963726f736f6674 0 b
Dhcp Server 10.10.10.11 Add Class "Microsoft Windows 2000 选项" "Windows 2000 客户端的 Microsoft 供应商特定选项" 4d53465420352e30 1 b
Dhcp Server 10.10.10.11 Add Class "Microsoft Windows 98 选项" "Windows 98 客户端的 Microsoft 供应商特定选项" 4d534654203938 1 b
Dhcp Server 10.10.10.11 Add Class "Microsoft 选项" " 适用于 Windows 98 和 Windows 2000 客户端的 Microsoft 供应商特定选项" 4d534654 1 b
 
# =====================================
#     Add Classes  结束
# =====================================
 
 
可以看出2000的dhcp中描述为
"Microsoft Windows 2000 选项" "Microsoft 的 Windows 2000 客户的特定供应商选项"
而2003的dhcp中描述为
"Microsoft Windows 2000 选项" "Windows 2000 客户端的 Microsoft 供应商特定选项"
此处存在的差异导致导入出错。
 
3、 如何处理
在2000的dhcp服务器中建立一个deleteclass.bat的批处理,内容如下:
# ------------------ start of resulting script -----------------
# Script to delete and add classes with NETSH
 
# ===== Delete old classes ======
 
netsh Dhcp Server 10.0.1.199 Delete Class "Microsoft Windows 2000 选项" "Microsoft 的 Windows 2000 客户的特定供应商选项" 4d53465420352e30 1 b
netsh Dhcp Server 10.0.1.199 Delete Class "Microsoft Windows 98 选项" "Windows 98 客户的 Microsoft 供应商专用的选项" 4d534654203938 1 b
netsh Dhcp Server 10.0.1.199 Delete Class "Microsoft 选项" "Microsoft Windows 98 和 Windows 2000 适用的客户指定的选项" 4d534654 1 b
netsh Dhcp Server 10.0.1.199 Delete Class " 默认 BOOTP 的类别" "BOOTP 客户的用户类别" 424f4f54502e4d6963726f736f6674 0 b
netsh Dhcp Server 10.0.1.199 Delete Class " 默认路由和远程访问类别" " 用户类别的常用和远程访问客户" 525241532e4d6963726f736f6674 0 b
 
# ===== End delete old classes =====
 
# ===== Add new classes =====
 
netsh Dhcp Server 10.0.1.199 Add Class " 默认路由和远程访问类别" " 远程访问客户端的用户类别" 525241532e4d6963726f736f6674 0 b
netsh Dhcp Server 10.0.1.199 Add Class " 默认 BOOTP 的类别" "BOOTP 客户端的用户类别" 424f4f54502e4d6963726f736f6674 0 b
netsh Dhcp Server 10.0.1.199 Add Class "Microsoft Windows 2000 选项" "Windows 2000 客户端的 Microsoft 供应商特定选项" 4d53465420352e30 1 b
netsh Dhcp Server 10.0.1.199 Add Class "Microsoft Windows 98 选项" "Windows 98 客户端的 Microsoft 供应商特定选项" 4d534654203938 1 b
netsh Dhcp Server 10.0.1.199 Add Class "Microsoft 选项" " 适用于 Windows 98 和 Windows 2000 客户端的 Microsoft 供应商特定选项" 4d534654 1 b
 
#===== End Add new classes =====
 
# ------------------ end of resulting script -----------------
 
其中,我们把2000中原有的class以及描述删除,添加与2003服务器中一致的class和描述。
4、 在win2000中成功执行完上述脚本后,再次按照前述步骤,导出并导入dhcp数据库。
 
四、win2003 dhcp备份方法
Set log=”%date%”.txt
Netsh dhcp server export c:\%log% all