sql >> Base de Datos >  >> RDS >> Database

Migración de bases de datos SQL con línea de comandos

¿Qué pasa si tiene docenas de bases de datos SQL y hacer una copia de seguridad/restaurar manualmente cada base de datos lleva demasiado tiempo para su proyecto? ¡No hay problema! Podemos generar un método que exportará e importará todas las bases de datos a la vez sin necesidad de intervención manual. Para obtener ayuda con la transferencia de inicios de sesión de SQL y procedimientos almacenados y vistas, consulte nuestro artículo Migración de MSSQL con SSMS.

Copia de seguridad de bases de datos en el servidor de origen

1. Abra SSMS (Microsoft SQL Server Management Studio) en el servidor de origen, inicie sesión en la instancia de SQL y abra una ventana Nueva consulta. Ejecute la siguiente consulta:

SELECT name FROM master.sys.databases

Este comando generará una lista de todas las bases de datos MSSQL en su servidor. Para copiar esta lista, haga clic en cualquier parte de los resultados y use el método abreviado de teclado CTRL+A (Comando + A para usuarios de Mac) para seleccionar todas las bases de datos. Después de resaltar todas las bases de datos, haga clic derecho y seleccione copiar.

2. Abra el Bloc de notas, pegue sus resultados y elimine todas las bases de datos (en el texto del bloc de notas recién copiado) que NO desea migrar, además de eliminar las siguientes entradas:

  • maestro
  • tempdb
  • modelo
  • msdb

Estas entradas son las bases de datos del sistema y no es necesario copiarlas. Asegúrese de eliminar todo excepto explícitamente las bases de datos que necesita migrar. Ahora debería tener una lista de todas las bases de datos requeridas separadas por una línea. es decir,

  • AdventureWorks2012
  • AdventureWorks2014
  • AdventureWorks2016

3. Guarde este resultado en la computadora como C:\databases.txt .

4. Cree una nueva ventana del Bloc de notas, copie/pegue lo siguiente en el documento y guárdelo como C:\db-backup.bat

mkdir %systemdrive%\dbbackups
for /F "tokens=*" %%a in (databases.txt) do ( sqlcmd.exe -Slocalhost -Q"BACKUP DATABASE %%a TO DISK ='%systemdrive%\dbbackups\%%a.bak' WITH STATS" )

5. Ahora que ha guardado el archivo como C:\db-backup.bat, vaya a Inicio menú y escriba cmd y haga clic con el botón derecho en Símbolo del sistema para seleccionar Ejecutar como administrador .Escriba el siguiente comando:

cd C:\

Y pulsa enter. Luego, escriba db-backup.bat y presione enter una vez más.

En este punto, sus bases de datos han comenzado a exportarse y verá el porcentaje de progreso de cada exportación de base de datos (imagen a continuación).

Tome nota de cualquier base de datos fallida, ya que puede volver a ejecutar el archivo por lotes cuando haya terminado, utilizando solo las bases de datos que pueden haber fallado. Si las bases de datos no se pueden respaldar, tome nota del mensaje de error que se muestra en el símbolo del sistema, resuelva el error modificando el archivo C:\databases.txt existente para incluir solo las bases de datos fallidas y vuelva a ejecutar db-backup.bat hasta que todas las bases de datos se exporten con éxito.

Restauración de bases de datos en el servidor de destino

Ahora tienes la carpeta C:\dbbackups\ que contiene archivos .bak para cada base de datos que desee migrar. Deberá copiar la carpeta y su C:\bases de datos.txt archivo al servidor de destino. Existen numerosas formas de mover sus datos al servidor de destino; puede usar USB, Robocopy o FTP. La carpeta en la unidad C del servidor de destino debe llamarse C:\dbbackups . Es importante nombrar el archivo con precisión, ya que nuestro script buscará los archivos .bak aquí. Asegúrese de que el servidor de destino también tenga su archivo C:\databases.txt, ya que nuestro script buscará aquí los nombres de las bases de datos.

1. Abra un Bloc de notas y copie/pegue lo siguiente en el documento y guárdelo como C:\db-restore.bat

for /F "tokens=*" %%a in (C:\databases.txt) do (
sqlcmd.exe -E -Slocalhost -Q"RESTORE DATABASE %%a FROM DISK='%systemdrive%\dbbackups\%%a.bak' WITH RECOVERY"
)

2. Guarde el archivo como C:\db-restore .murciélago

3. Navegue hasta el menú Inicio y escriba cmd .

4. Haga clic derecho en Símbolo del sistema y seleccione Ejecutar como administrador . Escribe el siguiente comando:

cd C:\

y presione Entrar. Ahora escriba db-restore.bat y pulsa Intro.

Sus bases de datos ahora han comenzado a importar. Verá el porcentaje de restauración de cada base de datos y el mensaje "RESTAURAR BASE DE DATOS procesada con éxito ” por cada base de datos que haya sido procesada con éxito.

Tome nota de cualquier base de datos fallida, ya que puede volver a ejecutar el archivo por lotes cuando haya terminado, utilizando solo las bases de datos que han fallado. Si las bases de datos no se pueden respaldar, tome nota del mensaje de error que se muestra en el símbolo del sistema, corrija el error (puede cambiar el archivo por lotes según sea necesario), modifique C:\databases.txt para incluir solo las bases de datos fallidas y vuelva -Ejecute db-restore.bat hasta que todas las bases de datos se exporten correctamente.

Enhorabuena, ya ha realizado una copia de seguridad y ha restaurado todas sus bases de datos en el nuevo servidor. Si tiene algún problema de inicio de sesión mientras prueba las conexiones SQL en el servidor de destino, consulte Migración de inicios de sesión de Microsoft SQL (enlace ancla) de este artículo y siga los pasos que se indican. Para migrar vistas o procedimientos almacenados, consulte Migración de vistas y procedimientos almacenados sección. Cada servidor SQL tendrá sus configuraciones y obstáculos que enfrentar, pero esperamos que este artículo le haya brindado una base sólida para su migración a Microsoft SQL Server.