Questo sarà un post molto lungo quindi preparatevi !! E’ stata da poco rilasciata una nuova CTP release di SQL Azure Data Sync, un motore di sincronizzazione cloud che permette appunto di mantenere allineate basi dati presenti sia nel Cloud che on premise. E’ quindi possibili attivare una sincronizzazione tra più database SQL Azure oppure realizzare una sincronizzazione tra un database presente sulla propria macchina locale o su un server aziendale con uno o più database presenti nel cloud. Con questa nuova funzionalità di Windows Azure si possono aprire scenari molto interessanti quali :
Probabilmente ci sono molto altri scenari che si possono realizzare con il Data Sync ma già l’elenco qui sopra ci da un buon motivo per capire come funziona. Ecco i passi da fare per attivare il Data Sync per sincronizzare un database locale (sul mio pc in questo caso) e un database su Windows Azure.
Per cominciare diamo per scontato di aver attivato una sottoscrizione Windows Azure (è possibile attivare una trial qui) e di aver creato un database attraverso il portale di gestione https://windows.azure.com/. Il mio esempio si basa su una versione leggermente modificata del database di esempio presente con SQL Server 2008 chiamato AdventureWorksLT.
Attivazione il Data Sync Preview Server
Nella schermata qui sotto vedete evidenziato il database SQL Azure che ho creato su Windows Azure. Il database in questo momento è completamente vuoto.
Selezioniamo dal menù di sinistra la voce Data Sync e selezioniamo la voce Provision Data Sync Preview Server
Una volta terminato il provisioning del server creiamo un Sync Group. Un Sync Group è un raggruppamento logico di sincronizzazione che contiene le informazioni necessarie per mantenere sincronizzati vari database. E’ possibile inserire lo stesso database in più Sync Group anche se è necessario prestare attenzione per non entrare in un loop infinito . Nel mio caso io ho creato un Sync Group chiamato Adventure Works.
Sulla parte sinistra della console possiamo selezionare ogni quando vogliamo eseguire la sincronizzazione e come verranno gestiti i conflitti (cioè se in caso di conflitto vincerà il client o il server). Ora premiamo il + presente sull’icona del database Sync Hub nella fascia Cloud. In ogni Sync Group deve essere presente un database che faccia da Sync Hub. Il database poi può far parte della sincronizzazione oppure no ma in ogni caso deve essere sempre presente.
Nella finestra che appare inseriramo la stringa di connessione completa per accedere al server SQL Azure e il nome del database fornendo anche le credenziali di accesso. Premiamo Add. Ora ripetiamo l’operazione premendo il + presente sull’icona del database nella fascia On-Premise.
La prima volta che facciamo questa operazione selezioniamo Add a new SQL Server database in the sync group , le volte successive il nostro database on-premise sarà già “conosciuto” da Windows Azure. Selezioniamo Bi-Directional (ovviamente possiamo decidere che tipo di Sync attivare) e premiamo Next. La prima volta ci verrà richiesto di installare un Agent locale che è quello che si occuperà di far parlare in nostro server locale con quello nel cloud.
Scarichiamo l’agent e procediamo con la fase di installazione
Troveremo sul computer il software chiamato Microsoft SQL Azure Data Sync Agent Preview. Eseguiamolo.
Inseriamo un Agent Name che sarà di fatto la chiave univoca che collegherà il nostro agente con Windows Azure. Nel mio caso con molta fantasia ho inserito FabioSymc .
Per garantire una corretta sicurezza di comunicazione tra il server locale e quello cloud è necessario utilizzare una chiave che potete generare e copiare all’interno della clipboard. Questa stessa chiave dovrà essere in seguito inserita nel software locale che abbiamo precedentemente installato.
Prima di tutto memorizziamo la chiave appena generate all’interno dell’agent locale. Premiamo Submit Agent Key e inseriamo la chiave appena copiata nella clipboard. Ora selezioniamo Register.
Decidiamo il tipo di autenticazione vogliamo che l’agent utilizzi per accedere al server locale. Facciamo attenzione di utilizzare un utente con i permessi necessari per accedere alle tabelle che vogliamo sincronizzare (lo so sa non è sicuro ma è un esempio dai !!! )
Una volta terminata l’operazione dovreste trovare all’interno della combobox Select Database il database appena configurato.
Premiamo Finish.
Il nostro Sync Group non è ancora stato pubblicato , manca ancora un operazione importante che è quella di stabilire cosa sincronizzare. Premiamo Edit Dataset a destra della schermata.
Selezioniamo il database on-premise (l’unico che in questo momento ha dei data reali) e definiamo quali tabelle e quali campi voglia sincronizzare. Attenzione che in questa Preview non è possibile sincronizzare campi di tipo User Defined e campi calcolati (ecco perchè ho dovuto modificare la struttura di AdventureWorks ). Premiamo Ok.
Premiamo in alto Deploy. Alla fine del deploy dovremmo avere una scheramta simile a quella qui sotto :
Possiamo anche volendo, attraverso la tabella di destra, attivare dei filtri sulle colonne per avere un maggior controllo sui dati che vogliamo portare nel cloud. Per capire quali operazione sono state fatte e sopratutto per controllare possibili errori possiamo usare il Log Viewer.
Durante la prima sincronizzazione verranno create su SQL Azure tutte le tabelle selezionate e le tabelle utilizzata dal Data Sync. In seguito a seconda dell’intervallo selezionato avremo una sincronizzazione solo per differenze e nel nostro caso sarà bidirezionale.
SQL Azure Data Sync è sicuramente una funzionalità molto interessante che ci permette di costuire scenari ad oggi quasi impossibili.