NVP-vProxy:Data Protection Restore Client 不列出 SQL 虚拟机备份
摘要: NetWorker VMware Protection (NVP) vProxy 用于备份 Microsoft SQL 虚拟机 (VM)。该环境包含多个 vCenter 环境,并且 SQL 虚拟机被复制到 NetWorker 实践之外的另一个 vCenter。SQL 虚拟机还原从 Data Protection Restore Client (DPRC) 执行。DPRC 向导不显示虚拟机的 SQL 备份,不会返回任何错误。 ...
症状
- Data Protection Restore Client (DPRC) 可从网页浏览器访问:
https://NetWorker_Server_Address:9090/flr - 管理员和应用程序选项处于选中状态,并且用户成功进行身份验证。
- 指定源 vCenter 和时间范围,选择 SQL 虚拟机,但不显示任何备份:
- 该环境由多个 vCenter Server 组成。选择要恢复的 SQL 虚拟机已复制(或复制)到新 vCenter。虚拟机同时存在于两个 vCenter 环境中。使用的复制方法在 NetWorker 外部。
原因
使用导致“复制”VMware 通用唯一标识符 (UUID) 的方法复制虚拟机。NetWorker 介质数据库在两个不同的 vCenter 下列出相同的 UUID。例如:
[root@nsr ~]# mminfo -avot -q vmname=SQLVM02 -r name | sort | uniq vm:503df65c-90cd-e729-13a4-2f5711ba5b85:MyOldvCente.amer.lan vm:503df65c-90cd-e729-13a4-2f5711ba5b85:MyNewvCenter.amer.lan
DPRC 使用 REST API 连接到 NetWorker 服务器并列出备份。它使用全局 REST API GET 请求来查找虚拟机,方法是使用 global/vmware/vms?q=Uuid:UUID。以下内容显示在 flr-server.log。
- Linux:
/nsr/authc/logs/flr-server.log - Windows(默认值):
C:\Program Files\EMC NetWorker\nsr\authc-server\tomcat\logs\flr-server.log
2026-04-08 13:43:42,855 [https-jsse-nio-9090-exec-4] INFO c.e.n.c.n.i.NwRestApiBase.buildWebResourceFromUri 171 - Call NW: [https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/vmware/vms?q=Uuid:VM_UUID]
DPRC 无法提供备份,因为冲突是由于在多个 vCenter 中出现的唯一标识符而出现的。同一 REST API 调用将返回两个 vCenter:
Linux:
curl -k --user Administrator "https://localhost:9090/nwrestapi/v3/global/vmware/vms?q=Uuid:UUID
Windows:
curl.exe -k --user Administrator "https://localhost:9090/nwrestapi/v3/global/vmware/vms?q=Uuid:UUID
示例:
[root@nsr ~]# curl -k --user Administrator:'!Password1' "https://localhost:9090/nwrestapi/v3/global/vmware/vms?q=Uuid:503df65c-90cd-e729-13a4-2f5711ba5b85" | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1213 0 1213 0 0 17328 0 --:--:-- --:--:-- --:--:-- 17328
{
"count": 2,
"vms": [
{
"annotation": "",
"connectionState": "connected",
"hostname": "SQLVM02",
"ipAddress": "192.168.9.10",
"ipAddresses": [
"192.168.9.10"
],
"links": [
{
"href": "https://localhost:9090/nwrestapi/v3/global/vmware/vcenters/MyNewvCenter.amer.lan/vms/503df65c-90cd-e729-13a4-2f5711ba5b85",
"rel": "item"
}
],
"morefId": "vm-1364",
"name": "SQLVM02",
"osId": "windows2019srv_64Guest",
"osName": "Microsoft Windows Server 2019 (64-bit)",
"powerState": "on",
"state": "running",
"status": "green",
"type": "VirtualMachine",
"uuid": "503df65c-90cd-e729-13a4-2f5711ba5b85",
"vCenterHostname": "MyNewvCenter.amer.lan",
"version": "vmx-18"
},
{
"annotation": "",
"connectionState": "connected",
"hostname": "",
"ipAddress": "",
"ipAddresses": [],
"links": [
{
"href": "https://localhost:9090/nwrestapi/v3/global/vmware/vcenters/MyOldvCenter.amer.lan/vms/503df65c-90cd-e729-13a4-2f5711ba5b85",
"rel": "item"
}
],
"morefId": "vm-15697",
"name": "SQLVM02",
"osId": "windows9Server64Guest",
"osName": "Microsoft Windows Server 2016 (64-bit)",
"powerState": "off",
"state": "notRunning",
"status": "gray",
"type": "VirtualMachine",
"uuid": "503df65c-90cd-e729-13a4-2f5711ba5b85",
"vCenterHostname": "MyOldvCenter.amer.lan",
"version": "vmx-18"
}
]
}
这不是预期行为。UUID 的固有期望是它是唯一的。查询虚拟机 UUID 时,只预期一个 vCenter 中的一个虚拟机的结果。
解决方案
由于 VMware 环境中的 UUID 冲突,无法从 DPRC 恢复数据。有关解决方法,请参阅 “其他信息 ”部分。
以下步骤可以更正重复的 UUID;但是,这不会使现有备份数据可恢复。以下更改是针对更改后及以后执行的备份的纠正措施。使用重复 UUID 的备份从 NetWorker 过期后,恢复 UI 会使用虚拟机备份的通用唯一 ID (UUID) 正确查找虚拟机备份。
- 对于重复的虚拟机,将其从当前备份的任何 NetWorker 保护组中删除。
- VMware 中新虚拟机的强大功能。
- 从 vCenter 清单中取消注册虚拟机(选择“从清单中删除”)。请勿 删除虚拟机。
- 重新注册虚拟机:浏览数据存储区时,右键单击
.vmx文件,然后选择“Register VM”。 - 启动虚拟机。当 vCenter 提示时,选择“I copied it”。这迫使 vSphere 生成全新的唯一 BIOS 和实例 UUID。
- 将虚拟机 (VM) 添加回在步骤 1 中删除它的保护组。
请参阅以下 VMware 文档,了解重复 UUID 的影响:更改或保留已移动虚拟机的 UUID
其他信息
.mdf 和 .ldf 文件将从磁盘复制到 VM 上的其他位置,并导入到 SQL Server Management Studio (SSMS) 中。
前提条件:
- 恢复所需的存储集必须是数据库存储集,而不是
txnlog备份。这可以使用 NetWorker 服务器进行标识mminfo命令检查它们是否正在运行:
mminfo -avot -q vmname=SQL_VM-NAME
示例:
[root@nsr ~]# mminfo -avot -q vmname=win-sql01.amer.lan volume type client date time size ssid fl lvl name ... VMBackupPool.002 Data Domain vcsa.amer.lan 04/11/2026 11:38:14 AM 104 GB 4124732135 cr full vm:503ea434-0331-8ed6-8b19-b9cd408cce7a:vcsa.amer.lan VMBackupPool.002 Data Domain vcsa.amer.lan 04/11/2026 12:30:09 PM 2341 KB 4107958035 cr txnlog vm:503ea434-0331-8ed6-8b19-b9cd408cce7a:vcsa.amer.lan
而 full 备份是包括虚拟机磁盘 (VMDK) 在内的完整数据库备份。而 txnlog 备份只包含事务日志,不包括数据库。
- 虚拟机备份必须驻留在 Data Domain 上,如果它位于其他介质类型(磁带、CloudBoost、AFTD)上,则将备份从磁带克隆到 vCenter 可访问的 Data Domain:NVP vProxy:如何手动将虚拟机存储集从非 Data Domain 设备克隆到 Data Domain 克隆设备
- 以下文章介绍了创建 NFS 导出并将其装载到 VMware 和目标虚拟机的过程:NetWorker:在没有 vProxy 一体机的情况下手动装载 Windows VM 存储集磁盘以执行 FLR 过程
数据恢复:
执行前提条件步骤后,包含 SQL 数据的虚拟机磁盘应装载到具有随机驱动器号的 SQL 虚拟机。执行以下步骤:
- 复制 SQL 数据库
.mdf和.ldf文件从附加的磁盘复制到虚拟机上的其他位置。例如,在连接的磁盘中可以找到以下数据库:
PS R:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA> dir
Directory: R:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA
Mode LastWriteTime Length Name
---- ------------- ------ ----
...
-a---- 4/10/2026 11:46 AM 8388608 NetWorkerSupport.mdf
-a---- 4/10/2026 11:32 AM 8388608 NetWorkerSupport_log.ldf
...
C:\tmp\RecoveredSQLdata管理此进程:
PS C:\tmp\RecoveredSQLdata> dir
Directory: C:\tmp\RecoveredSQLdata
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/10/2026 11:46 AM 8388608 NetWorkerSupport.mdf
-a---- 4/10/2026 11:32 AM 8388608 NetWorkerSupport_log.ldf
- 确保文件和文件夹不是“只读”。右键单击指向数据的文件夹路径,并确保未选中“Read Only”。文件也不得选择“Read Only”:
- 使用管理用户帐户登录到 SQL Server Management Studio (SSMS)。
- 右键单击 Databases,然后单击 Attach。
- 在 “要附加的数据库 ”窗口中,单击 “添加”。浏览到
.mdf文件已复制到并选择它。 - 如果 SQL Server 包含与原始数据库同名的数据库,则必须重命名要导入的数据库。选择 Attach As 字段并重命名数据库,例如 add
_OLD。

- 单击 “确定”,数据库将导入到 SQL Server Management Studio 中。
警告:任何权限或基于操作系统的导入错误都必须由系统或数据库管理员解决。
在此示例中,原始数据库存在 NetWorkerSupport ,并导入了备份拷贝“NetWorkerSupport_OLD”。

数据库表包含备份时原始数据库中的内容:

SQL 数据将恢复到系统,并可由 SQL 数据库管理员进行管理。数据恢复后,备份介质中不再需要任何数据,磁盘可以与 VMware 分离。也可以将临时 NFS 数据存储区与 VMware 分离,并且可以移除 Data Domain 上的 NFS 导出项。以下文章的 还原操作之后的清理 部分详细介绍了这些清理步骤: NetWorker:在没有 vProxy 一体机的情况下手动装载 Windows VM 存储集磁盘以执行 FLR 过程