Como DBA de producción, puedo contar con una mano la cantidad de veces que tengo que restaurar la base de datos master como resultado de un desastre. En otras palabras, esto no es algo que deba hacer con mucha frecuencia. Pero cuando llegue el momento (en medio de la noche, por supuesto) querrás estar preparado para realizar los siguientes pasos.
Restaurar la base de datos maestra es sorprendentemente fácil. Por supuesto, supongo que tienes una copia de seguridad. Estás ejecutando copias de seguridad, ¿verdad? OK.
Suponiendo que tenga una buena copia de seguridad del maestro para usar, el proceso que utilizo es el siguiente:
- Detener instancia
- Abrir símbolo del sistema
- Ejecute –m, NO CIERRE LA VENTANA
- Abrir sqlcmd
- Restaurar el maestro desde el archivo CON REEMPLAZAR (Nota: Windows se cerrará, ¡que no cunda el pánico!)
- Reiniciar instancia
Eso es todo al respecto. Haría que mi equipo practicara esto de vez en cuando en un servidor de prueba solo para asegurarse de que sus habilidades fueran perfectas en caso de que alguna vez tuvieran que restaurar el master cuando estaban medio dormidos en medio de la noche. Como parte de la prueba, les pediría que crearan un usuario nuevo al principio. De esa manera, cuando se completara la restauración, pudieron verificar que el usuario desapareció.
Analicémoslo juntos.
Recuperar la base de datos maestra en SQL 2012
Analicémoslo juntos. Recuperar la base de datos maestra en SQL 2012 Primero, hagamos una copia de seguridad de la base de datos maestra:
BACKUP DATABASE [master] TO DISK = N'C:SQLBackupsmaster.bak' WITH INIT GO
Bien, ahora crearemos ese usuario ficticio como parte de nuestra ejecución de práctica. Aquí hay una secuencia de comandos lo suficientemente simple para hacer eso, revisa que el usuario no existía antes de comenzar:
SELECT * FROM sys.server_principals WHERE name = 'master_restore_test' GO USE [master] GO CREATE LOGIN [master_restore_test] WITH PASSWORD=N'test', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO SELECT * FROM sys.server_principals WHERE name = 'master_restore_test' GO
OK, a continuación, detendremos la instancia. Solo usaré la ventana de comando predeterminada de Powershell:
Ahora necesitamos reiniciar la instancia usando el parámetro de inicio –m desde una ventana de comando. Navegaré hasta el directorio donde reside sqlservr.exe (para mí eso es C: Program FilesMicrosoft SQL ServerMSSQL11.JAMBONMSSQLBinn, probablemente no sea lo mismo para usted). Uno allí ejecutaré el siguiente comando:
.sqlservr.exe –c –m –s JAMBON
Si está utilizando la instancia predeterminada de SQL Server, solo necesita ejecutar:
.sqlservr.exe –m
Pero como estoy usando una instancia con nombre (JAMBON), necesito incluir el modificador –s seguido del nombre. El modificador –c permite un tiempo de inicio más rápido cuando SQL Server no se ejecuta como un servicio.
A continuación, abriré una ventana de comando (ejecutándose como administrador) para conectarme a mi instancia nombrada usando:
SQLCMD –S .JAMBON
Después de conectarme a la instancia, puedo restaurar la base de datos master usando:
RESTORE DATABASE master FROM DISK = 'C:SQLBackupsmaster.bak' WITH REPLACE
Tenga en cuenta que una vez que se complete la restauración, la instancia se cerrará. Se parece a esto:
La ventana de Powershell reflejará que la instancia se ha cerrado:
Usaré el Administrador de configuración de SQL Server para reiniciar la instancia. Una vez iniciado, abriré SSMS y ejecutaré la siguiente consulta:
SELECT * FROM sys.server_principals WHERE name = 'master_restore_test' GO.
Y luego, verifique que el inicio de sesión ya no esté allí.
¡Felicidades! Acaba de restaurar su base de datos maestra y ahora puede continuar con cualquier otra cosa que necesite hacer para recuperarse de cualquier desastre ocurrido.
Comentarios recientes