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 :

  1. Backup del database
  2. 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.

0

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).

1

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.

2_export

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.

3

Figura 4

Lo status delle attività può essere sempre consultato da una schermata dedicata (figura 5).

4

Figura 5

Per verificare se il blob è stato creato facciamo refresh dall’interfaccia di Azure Storage Explorer

8

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

image

Figura 7

Per fare l’upload del bacpac sullo storage di Windows Azure utilizzo ancora Azure Storage Explorer, come mostrato in figura 8.

5

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.

2_import

6

Figura 9

image

Figura 10

7

Figura 11

Francesco