BACPAC import export database con SQL Azure e SQL Server
Come segnalato dal blog del product team di Windows Azure ieri è stata rilasciata in produzione la funzionalità di Import/Export. Permette di importare ed esportare database SQL Azure da e verso uno storage account in Windows Azure. Alcuni dei possibili scenari di utlizzo sono :
- Backup del database
- Migrazione di database on-premise verso SQL Azure sfruttando il DAC Framework
Vediamo un esempio per entrambi gli scenari, ma prima prepariamo l’ambiente configurando alcuni requisiti, che sono :
A. Uno storage account su Windows Azure. Per crearlo è sufficiente selezionare l’opzione “New Storage Account” dal management portal (figura 1).
L’URL generato dovrà essere univoco e avrà l’estensione core.windows.net. La Region permetterà di scegliere l’area geografica più adatta ad ospitare i dati. E’ anche possibile sfruttare gli affinity group, che permettono a diversi servizi di una sottoscrizione di risiedere all’interno di un unico datacenter.
Figura 1
B. Una volta creato lo storage account abbiamo bisogno di un container per ospitare i blob, ossia i dati binari creati dalla procedura di esportazione. Potremmo scrivere un client utilizzando il .NET Framework, oppure appoggiarci a dei tool già pronti, come per esempio Azure Storage Explorer, scaricabile gratuitamente da Codeplex. L’opzione “New” ci consentirà di avere uno spazio per caricare i blob (figura 2).
Figura 2
Ora possiamo procedere con una breve guida passo passo per spiegare i due scenari.
1. BACKUP DEL DATABASE
Prima cosa importante da considerare è che l’esportazione tramite Import/Export non è transazionale. Un workaround possibile per mantenere sempre la consistenza tra i dati del database e il backup in un determinato momento è quello di creare una copia del database struttando DATABASE COPY, opzione TSQL specifica per SQL Azure, e poi fare il backup della copia.
CREATE DATABASE destination_database_name
AS COPY OF [source_server_name.]source_database_name
Ora è sufficiente selezionare il database e far partire il wizard di esportazione facendo click su Export dal management portal.
Figura 3
Nella schermata di esportazione i paramentri nella parte in alto devono contenere login e password del server SQL Azure, mentre la parte in basso contiene l’URL del blob (nel nostro caso il file si chiamerà test e risiederà all’interno del Container chiamato bacpac, come mostrato in figura 4) e la chiave di accesso allo storage account.
Figura 4
Lo status delle attività può essere sempre consultato da una schermata dedicata (figura 5).
Figura 5
Per verificare se il blob è stato creato facciamo refresh dall’interfaccia di Azure Storage Explorer
Figura 6
2. Migrazione di un database schema da SQL Server a SQL Azure
In questo esempio useremo il tool DACCLI, un client command-line che implementa le API del DAC Framework per generare un BACPAC partendo da un database SQL Server. Prima di poterlo utilizzare è necessario registrare gli Assemblies che trovate qui, disponibili sia a 32 che a 64bit.
I parametri che è possibile specificare sono i seguenti :
-H[elp] | -? Show this help text.
-X[export] Perform an export action.
-SX[SelectiveExport] Perform a selective export action.
-I[mport] Perform an import action.
-D[atabase] <database> Database name to perform the action on.
-F[ile] <filename> Name of the backup file.
-SXF[SELECTIVEEXPORTFILENAME] <filename> Name of the file that contains the tables names in xml format for selective export.
-S[erver] <servername> SQL Server Name and instance.
-E Use Windows authentication
(not valid for SQL Azure)
-U[ser] User name for SQL authentication.
-P[assword] Password for SQL authentication.
-DROP Drop a database and remove the DAC registration.(*2)
-EDITION <business|web> SQL Azure edition to use during database creation.(*4)
-SIZE <1> SQL Azure database size in GB.(*4)
-N Encrypt Connection using SSL.
-T Force TrustServerCertificate(*6)
-EXTRACT Extract database schema only.
-DEPLOY Deploy schema only to database.
Ecco di seguito una esportazione di esempio del database Northwind.
C:\sw\DACCLI\DAC CLI EXE v 1.4>daccli -S .\sql2008r2 -E -B -D northwind_original -F northwind.bacpac -X
Figura 7
Per fare l’upload del bacpac sullo storage di Windows Azure utilizzo ancora Azure Storage Explorer, come mostrato in figura 8.
Figura 8
Ora non rimane che tornare nel management portal di Windows Azure e selezionare l’opzione Import. Di seguito trovate gli screenshot catturati durante la procedura di importazione. In figura 9 vengono specificati server di destinazione, nome e edizione del database, e URL del BACPAC da caricare.
Figura 9
Figura 10
Figura 11
Francesco