Cómo recuperar una base de datos SQL mediante la recuperación de línea de comandos con NMM
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
En este artículo, se describe el procedimiento que se debe seguir para restaurar correctamente una base de datos de SQL respaldada con NMM mediante VDI
. Es posible que sea necesario restaurar una base de datos de SQL desde el respaldo mediante la línea de comandos si hay un problema con la restauración desde la GUI (GUI de usuario de NetWorker para SQL Server o el plug-in de SSMS). La tarea de navegación desde la GUI es lenta o la base de datos necesaria no está visible en la GUI para la restauración.
Por lo general, se crean los siguientes savesets cuando se respalda una sola base de datos:
Un respaldo completo de una sola base de datos tendrá los siguientes savesets:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:26:41 119 MB 3209027663 cb full MSSQL$FINANCE:testdb ==> Saveset
de respaldo completo SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 5 KB 3192250597 cb incr MSSQL$FINANCE: testdb ==> saveset de metadatos.
Un respaldo incremental de una sola base de datos tendrá los siguientes savesets:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:34:14 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb ==> Saveset
de respaldo de registros SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:40:31 5 KB 3125142409 cb incr MSSQL$FINANCE:testdb ==> saveset
de metadatos Tenga en cuenta que cada respaldo tiene un saveset de metadatos, que siempre se crea con un nivel "incr" y normalmente es muy pequeño. Este saveset contiene información que permite ver la lista de base de datos en la GUI de "usuario de NetWorker para SQL Server". Este saveset se crea con cada respaldo de SQL VDI. Sin embargo, es posible que este saveset no exista si el proceso de clonación manual no incluyó incorrectamente este saveset para la clonación y si los savesets originales ya no existen. Si este es el caso, la restauración de la línea de comandos es la única opción.
Una vez que determine desde qué respaldo necesita recuperarse, puede crear la línea de comandos. A continuación, se muestra un ejemplo de un comando de restauración:
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"
En el comando
anterior, la opción es especificar el nombre del servidor de NetWorker,
La opción -c se utiliza para especificar el cliente de origen (si la recuperación se realiza en un host que no es el cliente de origen),
-d especifica la base de datos de destino a la que se restaurará. Esta base de datos no existirá. El proceso de restauración creará la base de datos en la instancia de destino.
-C especifica que se trata de una restauración de copia. Los parámetros después de -C especifican los nombres lógicos de los archivos en la base de datos. Tenga en cuenta que estos nombres deben coincidir exactamente con los nombres lógicos de la base de datos que se está restaurando. Si la base de datos existe, realice las propiedades en el nombre de la base de datos desde la GUI de SSMS y busque en "Files".
Si la restauración se realiza en un SQL Server en clúster, agregue "-A "virtual-Server name" " al comando de restauración.
El último componente del comando es el nombre de la base de datos que se está restaurando, por ejemplo, MSSQL$
FINANCE:testdb
Si no está seguro de cuáles son los nombres lógicos de los archivos de base de datos, puede proporcionar un comando incompleto como se indica a continuación:
nsrsqlrc -s nsr-server -c sql12srv1 -t "25/05/2016 1:34:14 PM" -d "MSSQL$FINANCE:testdb-recovered" -C " 'mydb' = 'c:\ recover\testdb.mdf'" "MSSQL$FINANCE:testdb"
43708:(pid 2144):Hora de inicio: Mié May 25 15:37:42 2016
43621:(pid 2144):Nombre de la computadora: SQL12SRV1 Nombre de usuario: administrador
NSR_CLIENT: sql12srv1.jets.local;
NSR_SERVER: nsr-server;
37725:(pid 2144):Recuperando la base de datos 'testdb' en 'testdb-recovered' ...
142468:(pid 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Búsqueda de respaldo para el saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144): falta la reubicación para el archivo lógico testdb.
37945:(pid 2144): falta la reubicación para el testdb_log de archivos lógicos.
37945:(pid 2144): falta la reubicación para el testdb_log1 de archivos lógicos.
37946:(pid 2144):No hay un archivo lógico llamado mydb en la base de datos
original 29401:(pid 2144):D error de lista de reubicación de archivos atabase. La lista de archivos real es:
37947:(pid 2144): testdb = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(pid 2144): testdb_log1 = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
142468:(pid 2144):[2292]nsr/db_apps/bsmsql/rcstripes.c(222): Búsqueda de respaldo para el saveset MSSQL$FINANCE:/testdb.
37945:(pid 2144): falta la reubicación para el archivo lógico testdb.
37945:(pid 2144): falta la reubicación para el archivo lógico testdb_log.
37945:(pid 2144): falta la reubicación para la testdb_log1 de archivos lógicos.
37946:(pid 2144):No hay ningún archivo lógico llamado mydb en la base de datos
original 29401:(pid 2144):D error de lista de reubicación de archivos atabase. La lista de archivos real es:
37947:(pid 2144): testdb = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\
testdb.mdf 37947:(PID 2144): testdb_log = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log.ldf
37947:(pid 2144): testdb_log1 = C:\Archivos de programa\Microsoft SQL Server\MSSQL11. FINANCE\MSSQL\DATA\testdb_log1.ldf
La operación de restauración finalizó con error(es). Consulte el archivo de registro de respaldo del módulo para obtener más información. Error XBSA desconocido 1169 (0x491) nsr/db_apps/bsmsql/rcovmain.cpp(442): Ingresando cleanUp(). nsr/db_apps/bsmsql/rcovmain.cpp(500): Saliendo de cleanUp().
43709:(pid 2144):Hora de parada: Mié May 25 15:37:49 2016
***********************En el comando anterior,
le di un nombre lógico aleatorio 'mydb' y el comando escupe el nombre lógico real de los archivos de base de datos y la ubicación original de ellos. Puede usar esta información para crear el comando de restauración. Tenga en cuenta que debe proporcionar una ruta diferente para restaurar los datos. No puede ni debe proporcionar la ruta de origen original en el comando de restauración para evitar el riesgo de sobrescribir los datos existentes.
El tiempo de ejecución del respaldo para la restauración se puede obtener del comando mminfo. Se puede utilizar el savetime que se muestra en la salida o puede generar un informe sobre nsavetime y utilizar este tiempo en su lugar.
por ejemplo:
mminfo -avot -s nsr-server -q "client=sql12srv1,savetime >= yesterday"
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:26:41 119 MB 3209027663 cb completo MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:29:16 13:29:16 3192250597 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1 25/05/2016 13:34:14 1320 MB 3141919250 cb incr MSSQL$FINANCE:testdb
SQLbackups.001 Data Domain sql12srv1
25/05/2016 13:40:31 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 completo 25/05/2016 13:26:41 1464197201 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/05/2016 13:29:16 1464197356 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 1320 MB incr 25/05/2016 13:34:14 1464197654 MSSQL$FINANCE:testdb
SQLbackups.001 sql12srv1 cb 5 KB incr 25/05/2016 13:40:31 1464198031 MSSQL$FINANCE:testdb Nota: puede especificar el nsavetime/savetime del saveset de metadatos o del saveset
de datos real. Cualquiera de estas opciones funcionará.
Escenario 2:
Si los respaldos se registran en la base de datos de medios sin los nombres de la base de datos, la hora del respaldo requerido no será tan obvia. Por ejemplo, todos los respaldos de base de datos tienen los mismos nombres de saveset que se muestran a continuación:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:45:26 151 KB 2655391455 cb incr MSSQL$FINANCE:
De lo anterior no se puede decir qué saveset tiene la copia de seguridad que necesita.
Si existe el saveset de datos medata, los respaldos se podrán navegar desde la GUI y podrá encontrar el nombre de la base de datos y la hora del respaldo desde la GUI. Por ejemplo, si se requería DB24, la GUI muestra la hora de respaldo como "25/05/2016 4:49 PM".
Si el saveset de metadatos no está allí, deberá ejecutar el comando nsrinfo para encontrar la hora de guardado para la restauración. Por ejemplo, si mminfo muestra los savesets como se muestra a continuación:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:43:15 151 KB 2672168543 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:45:26 151 KB 2655391455 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:47:34 151 KB 2638614367 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:49:42 151 KB 2621837279 cb incr MSSQL$FINANZAS:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:51:50 151 KB 2605060191 cb incr MSSQL$FINANCE:
SQLbackups.001 Data Domain sql12srv1 25/05/2016 16:53:58 151 KB 2588283103 cb incr MSSQL$FINANCE:
Ejecute nsrinfo en las horas de guardado como se muestra a continuación para obtener información sobre la base de datos que forma parte del saveset:
nsrinfo -n mssql -t "25/05/2016 16:43:15" sql12srv1
analizando el cliente 'sql12srv1' para savetime 1464208995(25/05/2016 16:43:15) desde el espacio
de nombres mssql MSSQL$FINANCE:/ DB21
MSSQL$FINANCE:/DB21%/files.1464208995.1464209044
2 objetos encontrados
nsrinfo -n mssql -t "25/05/2016 16:49:42" sql12srv1
cliente de escaneo 'sql12srv1' para savetime 1464209382(25/05/2016 16:49:42) desde el espacio
de nombres mssql MSSQL$FINANCE:/DB24
MSSQL$FINANCE:/DB24%/files.1464209382.1464209437
2 objetos encontrados
Dado que los savesets no muestran los nombres de las bases de datos, lo anterior podría ser un poco de prueba y error, en el caso de que el saveset de metadatos no exista. Utilice el tamaño aproximado de la base de datos como una pista para limitar la consulta nsrinfo a unos pocos savesets.
Article Properties
Article Number: 000022417
Article Type: How To
Last Modified: 09 Aug 2022
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.