Backup de Base de Datos SQL Azure con tan un solo comando


Hay una entrada más nueva basada en esta idea, en
Backup de Base de Datos SQL Azure Mejorado y PowerShell
.

Mover una base de datos entre SQL Server Local y Azure siempre ha sido un trabajo farragoso y tedioso. Con la ultima actualización de DAC ya es posible obtener un backup de una base de datos de Azure con tan solo una linea de comando. Y con otra linea de comando restaurar el backup en otro SQL Server.

Realizar un Backup de una Base de Datos de SQL Azure

Ejecutar el siguiente comando sustituyendo adecuadamente:

daccli -S [SERVIDOR AZURE] -U [USUARIO] -P [PASSWORD]  -D [NOMBRE DE BASE DE DATOS] -F [RUTA LOCAL DEL BACKUP] -X

Ejemplo de ejecución del comando:

C:\Tools\DCImport\Import Export CLI V1.2>daccli -S servidorazure.database.windows.n
et -U usuario -P password  -D DataBase_Example_Azure -F C:\BACKUP.BACPAC -X
Microsoft (R) DAC Import Export Sample version 1.2.0.0
Copyright (C) Microsoft Corporation. All rights reserved.

Connecting to servidorazure.database.windows.net...
Connection Open.
Export started: 24/11/2011 9:02:32
[19:02:34] ExtractDac: Pending Extracting Database 'DataBase_Example_Azure'
[19:03:19] ExtractDac: Success Extracting Database 'DataBase_Example_Azure'
[19:03:19] ExportBacpac: Pending Exporting Database 'DataBase_Example_Azure'
[19:03:19] ExportTable: Pending Exporting table data for table 'Client'
[19:03:20] ExportTable: Success Exporting table data for table 'Client'
[19:03:20] ExportTable: Pending Exporting table data for table 'Invoice'
[19:03:20] ExportTable: Success Exporting table data for table 'Invoice'
[19:03:20] ExportTable: Pending Exporting table data for table 'Address'
[19:04:15] ExportTable: Success Exporting table data for table 'Address'
[19:15:18] ExportBacpac: Success Exporting Database 'DataBase_Example_Azure'
Export Complete.  Total time: 00:12:45.8893794
Output file: C:\BACKUP.BACPAC Size: 41331752 bytes

Restaurar el Backup en una Base de Datos de SQL Local

Ejecutar el siguiente comando sustituyendo adecuadamente

  • Con autenticación de SQL:
daccli -S [SERVIDOR LOCAL] -U [USUARIO] -P [PASSWORD]  -D [NOMBRE DE BASE DE DATOS] -F [RUTA LOCAL DEL BACKUP] -I
  • Con Autenticación Integragada:
daccli -S [SERVIDOR LOCAL] -E -D [NOMBRE DE BASE DE DATOS] -F [RUTA LOCAL DEL BACKUP] -I

Ejemplo de ejecución del comando:

C:\Tools\DCImport\Import Export CLI V1.2>daccli -S SERVIDORBD\SQL2008 -U usuario -P
 password -D DataBase_Example_Local-F C:\BACKUP.BACPAC -I
Microsoft (R) DAC Import Export Sample version 1.2.0.0
Copyright (C) Microsoft Corporation. All rights reserved.

Import started: 23/11/2011 20:37:33
Connecting to SERVIDORBD\SQL2008...
Connection Open.
[20:38:02] PrepareSystemTables: Pending Preparing DAC metadata in the SQL Server
 instance 'SERVIDORBD\SQL2008'
[20:38:02] PrepareSystemTables: Success Preparing DAC metadata in the SQL Server
 instance 'SERVIDORBD\SQL2008'
[20:38:04] CreateDatabase: Pending Creating database 'DataBase_Example_Local'

[20:38:05] CreateDatabase: Success Creating database 'DataBase_Example_Local'

[20:38:05] ScriptDACObjects: Pending Preparing deployment script
[20:38:13] ScriptDACObjects: Success Preparing deployment script
[20:38:13] CreateDatabaseObjects: Pending Creating schema objects in database 'D
ataBase_Example_Local'
[20:38:17] CreateDatabaseObjects: Success Creating schema objects in database 'D
ataBase_Example_Local'
[20:38:17] PrepareImportTables: Pending Preparing Import data from tables of dat
abase 'DataBase_Example_Local'
[20:38:17] PrepareImportTables: Success Preparing Import data from tables of dat
abase 'DataBase_Example_Local'
[20:38:17] ImportTable: Pending Importing data from table'[dbo].[Client]'
[20:38:18] ImportTable: Success Importing data from table'[dbo].[Client]'
[20:38:18] ImportTable: Pending Importing data from table'[dbo].[Invoice]'
[20:38:18] ImportTable: Success Importing data from table'[dbo].[Invoice]'
[20:38:18] ImportTable: Pending Importing data from table'[dbo].[Address]'
[20:38:52] ImportTable: Success Importing data from table'[dbo].[Address]'
[20:38:53] FinalizeImportTables: Pending Finalizing Import data from tables of d
atabase 'DataBase_Example_Local'
[20:38:56] FinalizeImportTables: Success Finalizing Import data from tables of d
atabase 'DataBase_Example_Local'
[20:38:56] RegisterDAC: Pending Registering the DAC in DAC metadata.
[20:38:56] RegisterDAC: Success Registering the DAC in DAC metadata.
Import Complete.  Total time: 00:01:23.6661365

Instalación del entorno de ejecución de Comandos

Instalar DAC Framework API y Ejecutable DAC ImportExportTool que se apoya en esta API para realizar los backups y restores.

Los pasos a seguir:

  • Instalar los siguientes paquetes; actualizan a la ultima versión DAC.

Estos paquetes instalan la versión del DAC disponible en la ultima versión de SQL Server “Denali”; esta incluye las mejoras que permiten la importación y exportación de BACPAC. En la pagina adjunta se describen los necesarios para utilizar disponibles:
http://sqldacexamples.codeplex.com/wikipage?title=Required%20Assemblies%20Links&referringTitle=Home

NOTA: Asegurarse aunque no lo indique la instalar primero System CLR Types SQLSysClrTypes.msi

  • Bajar el Paquete DAC Import Export Client-side Tools

http://sqldacexamples.codeplex.com/releases
Dentro del paquete tenemos el archivo ejecutable daccli.exe. Si lo ejecutamos sin parametros veremos las opciones disponibles

Limitaciones

Los ficheros BACPAK no son consistentes transacionalmente. En estos ficheros se generan realizando un volcado iterativo de las tablas como se ve en el ejemplo de ejecución. Esto puede ser problemático si hacemos un backup de la base de datos se esta modificando; ya que nos encontraremos errores de coherencia. Si no podemos evitar que la base datos se este modificando podemos generar una base de datos de copia apartir de la que queremos realizar el backup; y realizar el backup de esta.

CREATE DATABASE [DataBase_Example_Local_ToBackup] AS COPY OF[DataBase_Example_Local]
--STATE OF DATABASE COPY
--SELECT name, state, state_desc from sys.databases WHERE name = 'DataBase_Example_Local_ToBackup'
--RENAME DATABASE BACKUPED TO ORIGINAL
--ALTER DATABASE DataBase_Example_Local_ToBackup] MODIFY NAME = [DataBase_Example_Local]

Más info del crear bases de datos como copia.
http://msdn.microsoft.com/en-us/library/windowsazure/ff951624.aspx

Mejoras

Este método sirve para mover base de datos entre diferentes versiones de SQL

  • Versiones Exportables: SQL Azure, SQL Server “Denali”,SQL Server 2008 R2 ,SQL Server 2008,SQL Server 2005,SQL Server 2000
  • Versiones Importables: SQL Azure, SQL Server “Denali” , SQL Server 2008 R2, SQL Server 2008 (SP1),SQL Server 2005 (SP4)
Anuncios
Esta entrada fue publicada en Azure, Base de Datos, Sql Server y etiquetada , , , , , , , . Guarda el enlace permanente.

2 respuestas a Backup de Base de Datos SQL Azure con tan un solo comando

  1. Pingback: Backup de Base de Datos SQL Azure con tan un solo comando « DbRunas – Noticias y Recursos sobre Bases de Datos

  2. Pingback: Backup de Base de Datos SQL Azure Mejorado y PowerShell | Pensando bajo la lluvia

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s