如何在 NMM 中使用命令行恢复来恢复 SQL 数据库

Ця стаття стосується Ця стаття не стосується Ця стаття не стосується якогось конкретного продукту. У цій статті зазначено не всі версії продукту.

Instructions


本文记录了使用 VDI

成功还原通过 NMM 备份的 SQL 数据库要遵循的步骤。如果从 GUI(SQL Server GUI 或 SSMS 插件的 Networker 用户)还原时出现问题,则可能需要使用命令行从备份还原 SQL 数据库。GUI 中的浏览任务速度缓慢,或者所需的数据库在 GUI 中不可见,无法还原。


Typically the following savesets are created when a single DB is backupup:

A full backup of a single DB will have the following savesets:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb ==> Full backup saveset
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb ==> metadata saveset。


单个数据库的增量备份将具有以下存储集:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:34:14 PM 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> Log backup saveset
SQLbackups.001 Data Domain sql12srv1 5/25/2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> metadata saveset


请注意,每个备份都有一个元数据存储集,该存储集始终创建为“incr”级别,并且通常非常小。此存储集包含的信息使您可以在“Networker User for SQL Server”GUI 中查看数据库列表。每次执行 SQL VDI 备份都会创建此存储集。但是,如果手动克隆过程错误地将此存储集不包括用于克隆,并且原始存储集不再存在,则此存储集可能不存在。如果是这种情况,则命令行恢复是唯一的选择。

确定需要从哪个备份进行恢复后,您可以构造命令行。下面是还原命令的示例:

nsrsqlrc -s nsr-server -c sql12srv1 -t “5/25/2016 1:34:14 PM” -d “MSSQL$FINANCE:testdb-recovered” -C “ 'testdb' = 'c:\recover\testdb.mdf', 'testdb_log' = 'c:\recover\testdb_log.ldf', 'testdb_log1' = 'c:\recover\testdb_log1.ldf'” “MSSQL$FINANCE:testdb”

在上面的命令

-s选项中是指定Networker服务器名称,
-c 选项用于指定源客户端(如果在源客户端以外的主机上执行恢复),
-d 指定要恢复到的目标数据库。此数据库将不存在。还原过程将在目标实例上创建数据库。
-C 指定这是拷贝恢复。-C 后面的参数指定数据库中文件的逻辑名称。  请注意,这些名称必须与要还原的数据库的逻辑名称完全匹配。  如果数据库存在,则从 SSMS GUI 中对数据库名称执行属性操作,并在“Files”下查看。

如果要还原到群集 SQL Server,请将“-A ”virtual-Server name“添加到还原命令中。

命令中的最后一个组件是要还原的数据库的名称,例如 MSSQL$
FINANCE:testdb

如果您不确定数据库文件的逻辑名称是什么,则可以提供不完整的命令,如下所示:

nsrsqlrc -s nsr-server -c sql12srv1 -t “5/25/2016 1:34:14 PM” -d “MSSQL$FINANCE:testdb-recovered” -C “ 'mydb' = 'c:\recover\testdb.mdf'“ ”MSSQL $ FINANCE: testdb“
43708:(pid 2144):开始时间:Wed May 25 15:37:42 2016
43621:(pid 2144):Computer Name:SQL12SRV1用户名:管理员
NSR_CLIENT:sql12srv1.jets.local;
                 NSR_SERVER: nsr-server;
37725:(pid 2144):正在将数据库“testdb”恢复到“testdb-recovered”...
142468:(pid 2144):[2292] nsr/db_apps/bsmsql/rcstripes.c (222):查找存储集 MSSQL$FINANCE:/testdb 的备份。
37945:(pid 2144):逻辑文件 testdb 缺少重定位。
37945:(pid 2144):缺少逻辑文件testdb_log的重新定位。
37945:(pid 2144):逻辑文件testdb_log1缺少重定位。
37946:(pid 2144):原始数据库
29401:(pid 2144) 中没有名为 mydb 的逻辑文件:D atabase 文件重定位列表错误。实际文件列表为:
37947:(pid 2144):       testdb = C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(pid 2144):       testdb_log1= C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\testdb_log1.ldf

142468:(pid 2144):[2292] nsr/db_apps/bsmsql/rcstripes.c (222):查找存储集 MSSQL$FINANCE:/testdb 的备份。
37945:(pid 2144):逻辑文件 testdb 缺少重定位。
37945:(pid 2144):缺少逻辑文件testdb_log的重新定位。
37945:(pid 2144):缺少逻辑文件testdb_log1的重新定位。
37946:(pid 2144):原始数据库
29401:(pid 2144):D atabase 文件重定位列表错误中名为 mydb 的逻辑文件。实际文件列表为:
37947:(pid 2144): testdb = C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144):       testdb_log = C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(pid 2144):       testdb_log1= C:\Program Files\Microsoft SQL Server\MSSQL11.FINANCE\MSSQL\DATA\testdb_log1.ldf

还原操作已完成,但有错误。有关详细信息,请参阅模块备份日志文件。未知 XBSA 错误 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442):输入 cleanUp()。nsr/db_apps/bsmsql/rcovmain.cpp(500):退出 cleanUp()。
43709:(pid 2144):停止时间:Wed May 25 15:37:49 2016


***********************

在上面的命令中,我给出了一个随机逻辑名称“mydb”,该命令会吐出数据库文件的实际逻辑名称及其原始位置。您可以使用此信息来构建还原命令。请注意,您必须提供不同的路径才能将数据还原到。您不能也不应在还原命令中提供原始源路径,以避免覆盖现有数据的风险。

可从 mminfo 命令获取还原的备份时间。可以使用输出中所示的保存时间,也可以报告 nsavetime 并改用此时间。

e.g:

mminfo -avot -s nsr-server -q “client=sql12srv1,savetime >= yesterday”

SQLbackups.001 Data Domain SQL12SRV1 5/25/2016 1:26:41 PM 119 MB 3209027663 cb full MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain SQL12SRV1 5/25/2016 1:29:16 PM 5 KB 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain SQL12SRV1 5/25/2016 1:34:14 PM 1320 MB 3141919250 CB INCR MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain SQL12SRV15/25/2016 1:40:31 PM 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb

mminfo-avot -s nsr-server -q “client=sql12srv1,savetime >= yesterday” -r volume,client,sumflags,sumsize,level,savetime(25),nsavetime,name

SQLbackups.001 sql12srv1 cb 119 MB full 5/25/2016 1:26:41 PM 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 5/25/2016 1:29:16 PM 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 5/25/2016 1:34:14 PM 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 5/25/2016 1:40:31 PM 1464198031 MSSQL$FINANCE:testdb

注意:您可以指定元数据存储集或实际数据存储集的 nsavetime/savetime。其中任何一个都可以。

情况 2:

如果在没有数据库名称的情况下在媒体数据库中注册备份,则所需备份的时间将不那么明显。例如,所有数据库备份都具有相同的存储集名称,如下所示:

SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:

从上面无法分辨哪个存储集具有所需的备份。

如果 medata 数据存储集存在,则备份可从 GUI 浏览,您可以从 GUI 中找到数据库名称和备份时间。例如,如果需要 DB24,GUI 会将备份时间显示为“5/25/2016 4:49 PM”。

kA5j0000000TNJYCA4_1_0

如果不存在元数据存储集,则需要运行 nsrinfo 命令来查找还原的保存时间。例如,如果 mminfo 显示存储集如下:

SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:43:15 PM 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:45:26 PM 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:47:34 PM 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:49:42 PM 151 KB 2621837279 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:51:50 PM 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 5/25/2016 4:53:58 PM 151 KB 2588283103 cb incr MSSQL$FINANCE:在保存时间上运行 nsrinfo,

如下所示,以获取有关存储集一部分的数据库的信息:

nsrinfo-n mssql-t “5/25/2016 4:43:15 PM” sql12srv1
扫描客户端“sql12srv1”保存时间1464208995(5/25/2016 4:43:15 PM) 来自 mssql 命名空间
MSSQL$FINANCE:/DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 objects found

nsrinfo-n mssql-t “5/25/2016 4:49:42 PM” sql12srv1
scanning client 'sql12srv1' for savetime 1464209382(5/25/2016 4:49:42 PM) from the mssql
namespace MSSQL$FINANCE:/DB24
MSSQL$FINANCE:/DB24%/files.1464209382.1464209437
2 objects found

由于存储集不显示数据库名称,因此在元数据存储集不存在的情况下,上述操作可能需要一些试错。使用近似的数据库大小作为线索,将 nsrinfo 查询范围缩小到几个存储集。

Властивості статті
Article Number: 000022417
Article Type: How To
Востаннє змінено: 09 серп. 2022
Version:  4
Отримайте відповіді на свої запитання від інших користувачів Dell
Служба підтримки
Перевірте, чи послуги служби підтримки поширюються на ваш пристрій.