Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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