Lavorando ormai da un po' di tempo sul cloud, ed in particolare sfruttando i SQL Database forniti con
Windows Azure, mi sono ritrovato a dover progettare una procedura di backup per il mio database.
In
questo post, ho spiegato in pochi passi come è semplice connettersi ad un SQL Database utilizando il client fornito con l'installazione di SQL Server.
Una volta connessi, per chi ha familiarità con SSMS, le operazioni da effettuare sono molto semplici.
Innanzitutto serve approfondire il concetto di file
DACPAC e BACPAC; per farlo, leggere qui.
Una volta pronti, vediamo passo passo come effettuare backup su BACPAC file:
1) Creare una copia del database
Il primo step consiste nel creare una copia del database Azure tramite T-SQL, ecco il comando:
CREATE DATABASE DBSource_Copy AS COPY OF DBSource;
Attenzione, questa query DEVE essere lanciata partendo dal database master. Lo statement USE non è ammesso, se provate ad utilizzarlo riceverete il seguente errore:
"Msg 40508, Level 16, State 1, Line 1
USE statement is not supported to switch between databases. Use a new connection to connect to a different Database."
La creazione della copia, consente l'eventuale successiva creazione di un file BACPAC (lo vediamo nello step successivo).
Perchè la copia ? la risposta si ha direttamente dalla documentazione:
"Per assicurarsi di disporre di una copia isolata dei dati coerente dal punto di vista transazionale, è necessario innanzitutto creare la copia di un database e, successivamente, creare il file BACPAC dalla copia. In alternativa, è inoltre possibile evitare la modifica dei dati nei database durante l'esportazione limitando l'accesso ai database tramite autorizzazioni o connessioni. Attenersi ai passaggi seguenti per creare un backup del database SQL."
Abbiamo quindi seguito il primo consiglio
e alla fine abbiamo già un backup full del nostro database, la copia stessa.
Se però vogliamo avere un file da salvare altrove (localmente o su un cloud storage), dovremo creare il file BACPAC..
2) Creare un file BACPAC
Il secondo step corrisponde alla creazione di un file BACPAC, che altro non è che un file contenente schema e dati, chiamato logical export file.
Questo file, che andremo a generare direttamente dalla copia del database precedentemente creata, può essere gestito tramite management studio.
Premendo il tasto destro del mouse sul vostro Azure SQL Database "copia", nel menu Task, troverete la voce "Export Data-tier Application..".
Apparirà il wizard seguente (saltando la prima pagina di introduzione):
Come è possibile vedere, si può scegliere di salvare il BACPAC o in locale (pensando di avere un backup al di fuori dello storage di Windows Azure) oppure direttamente sul cloud storage. Nel secondo caso è necessario premere su connect per inserire le credenziali di accesso (storage account e key):
i dati relativi allo storage account sono disponibili sul portale, una volta selezionato lo storage, alla voce "Manage Keys" che si trova alla fine della pagina:
Il popup che si apre alla pressione di questo link mostrerà quanto serve per la connessione.
Dopo una breve verifica, la connessione verrà stabilita. A questo punto mancherà solamente la selezione del container (blob) sul quale salvare il file BACPAC.
Nel caso in cui non disponiate già di un blob container, crearne uno sempre dal portale, selezionando la clip "Storage", il vostro storage (potreste averne più d'uno) ed infine l'opzione CONTAINERS in alto:
Seguite le istruzioni e il vostro container sarà creato in pochi secondi. Determinate anche il tipo di accesso, nel nostro esempio potete impostarlo come privato.
A questo punto, con un refresh della connessione, potrete selezionare il container appena creato.
Prima di procedere al passo successivo, fate attenzione anche al tab Advanced, col quale è possibile selezionare di cosa fare esportazione nel BACPAC file:
Nel mio esempio ho selezionato tutto, ma voi potrete andare nel dettaglio e cambiare selezione.
Noterete che in questa sezione è possibile selezionare solo tabelle, ricordate che stiamo parlando di esportazioni di dati. Implicitamente però il BACPAC file avrà anche l'intero schema.
Ora possiamo spostarci verso la fine, dopo il solito summary proposto, per ottenere, si spera
, il seguente report:
In questo caso l'operazione è stata effettuata correttamente. Nel caso di errore riceverete per ogni voce errata, un messaggio esplicativo che riassume l'errore verificatosi.
Il backup è fatto, ma come ogni backup, va testato..
3) Restore e test del backup effettuato
Sempre direttamente dal management studio, è possible fare restore del backup che abbiamo appena creato.
Premere il tasto destro sulla cartella dei nostri database direttamente su SSMS e selezionare "Import Data-tier application..".
Un wizard, molto simile al precedente verrà proposto. Le differenze da sottolineare sono date dalla maschera di connessione allo storage e dai settings per il db:
La voce "File name" è una dropdown che mostra i file che abbiamo creato e tramite il "Browse.." è possibile aprire lo storage su Azure e selezionare il file precedentemente creato.
Il database di destinazione viene impostato nella finestra successiva:
il server è tipicamente già proposto (primo textbox) ed il nuovo nome di database può essere impostato direttamente dalla seconda textbox. Inoltre è possibile cambiare il tipo di edizione e la dimensione massima del database.
Alla fine dell'importazione, è possibile andare a navigare il proprio nuovo database per controllare che tutto sia a posto.
Tutto quanto indicato in questo post, è possibile farlo anche tramite lo strumento di gestione fornito dal portale di Windows Azure per i SQL Database:
Notate anche una voce "Add sync", utile per la sincronizzazione tra la versione OnPremise e Azure SQL Database, oppure anche per database che stanno tutti su Azure.
Stay tuned!