SQL Azure Data Sync : First Steps Configuration–Premiers pas !

Hi,

long time ago,  I’ve wrote a post on the new release of SQL Azure Data Sync in the Windows Azure Management Portal. In this post, we will see how to configure a simple synchronization between two SQL Azure DataBase.

Bonjour,

il y  a un moment, j’ai écrit un billet sur la sortie de la nouvelle version de SQL Azure Data Sync sur le portail de Management. Dans ce nouveau billet, nous allons voir comment configurer une synchronisation entre 2 bases de données SQL Azure.

First of all, here is a summary of what is SQL Azure Data Sync

SQL Azure DataSync is a service that allows you to synchronize data between your SQL Database. The different scenarii are :

  • Cloud <-> Cloud
  • On-Premises <-> Cloud
  • On-Premises <-> On-Premises (but in this case, you have to set your Hub as an SQL Azure Database)

We will create a Cloud to Cloud Synchronisation

Tous d’abord, voici un petit résumé des fonctionnalités de SQL Azure Data Sync.

SQL Azure Data sync est un service permettant de synchroniser plusieurs bases de données SQL Server/Azure. Les différents scénarii sont les suivantes :

  • Cloud <-> Cloud
  • On-Premises <-> Cloud
  • On-Premises <-> On-Premises (Dans ce cas, un serveur hub dans SQL Azure est nécessaire)

Nous allons mettre en place une synchronisation Cloud vers Cloud

image

First of all, we have to specify a unique name for this synchronization group

Tout d’abord, nous devons spécifier un nom unique pour le groupe de synchronisation

image

SQL Azure DataSync has an architecture of type Hub & Spoke. This involve that you have to determine a Hub and some client.

SQL Azure est basé sur une architecture de type Hub & Spoke, cela signifie que vous devez déterminer un concentrateur ainsi que un ou plusieurs client. Le concentrateur aura l’ensemble des données.

image

Hub configuration

image

Hub Configuration

image

Client configuration – here a SQL Azure Database

image

The client configuration of the synchronization could be :

  • from the hub
  • to the hub
  • Bi-directional

La configuration de la base client  peut ensuite être faite:

  • depuis le concentrateur
  • vers le concentrateur
  • de manière bi-directionnel
 

The Fourth step consist in configure the schedule and the conflict resolution

with the ability to select the conflict resolution :

  • hub win
  • hub lose

 

La quatrième étape à pour but de configurer la planification de la synchronisation avec la possibilité de selectionner les résolutions de conflit suivantes :

  • priorité au concentrateur
  • priorité au client
image
Then you have to define the dataset to synchronize Ensuite, il est nécessaire de configurer les données que nous souhaitons synchroniser
image

image

When you select a database to sync, you can :

  • select the tables you want to sync
  • select the columns in theses tables
  • add some filter on theses columns to allows synchronization of lines
    • the filters available are (<,>,=,<=,>=,<>) , unfortunately Like is not available and you can just use one filter per colum.
Lorsque vous selectionnez les données à synchroniser , il est possible de :

  • Sélectionner les table
  • Sélectionner les columns
  • ajouter des filtres sur les colonnes que vous souhaiter synchroniser, les filtres disponibles sont (<,>,=,<=,>=,<>), malheureusement le filtre Like n’est pas disponible est il n’est possible d’utiliser qu’un seul filtre par colonne
image
and finaly, you have to deploy your configuration. enfin, il ne reste plus qu’à déployer la configuration
image

image

image

Once the configuration of the two database are set, the synchronization begin

Une fois que la configuration des bases est effectuée, la synchronisation peut commencer.
We can see in the log, the provisionning of the database (for the configuration). This provisionning consist in add :

  • the tracking table (DataSync.TrackedTable_dss_tracking)
  • define the Trigger on the tracked table (insert, update, delete)
  • create the stored procedure for each table and filter
    • bulkdelete,bulkinsert, bulkupdate
    • insert, delete, update
    • insertmetadata, insertrow, selectchange
Nous pouvons regarder les informations dans le journal et voir la provision des bases de données. Cette provision à pour but d’ajouter :

  • les tables de synchronisation(DataSync.TrackedTable_dss_tracking)
  • definir les évènement sur les tables synchroniser (insert, update, delete)
  • Creer les procédures stockés pour chaque table (en prenant en compte les filtre) :
    • bulkdelete,bulkinsert, bulkupdate (pour les opérations de masse)
    • insert, delete, update
    • insertmetadata, insertrow, selectchange

Extract of SQL Stored Procedure after configuration

image

image

here is the detail of the Sync Completed

Sync completed successfully in 201.41 seconds.
Upload:   0 changes applied
Download: 141070 changes applied

Pour plus d’informations, indiquez l’ID de trace « 1658ffb1-5f16-4189-aa25-f979827af851 » au support technique.

 

So we have synchronize 141 070 rows in 201.41 sec.

Regarding to the schedule, the synchronization will continue and log will be update regularly

Nous pouvons voir que nous avons synchroniser 141 070 lignes en 201.41 sec.

En fonction de la planification, la synchronisation va continuer et les logs seront mis à jour régulièrement.

To resume, this post explain a simply configuration of synchronization and we will see later how to deals with more complex situation, filter etc.. and also the limitation in terms of DataType etc..

(for now, DataSync can’t sync :

  • userdefined datatype
  • hierachicalid
  • spatial datatype
  • sysname datatype
  • stored procedure (because it’s not data)

DataSync doesn’t support schema update and merge schema between database).

This last point is in the pipe and will be certainly available for the last release.

I’m working on a webcast (in french).

Pour résumer, ce billet explique comment mettre en place une synchronisation simple  et nous verrons plus tard comment mettre en place des scénarios plus complexe avec des filtres etc… ainsi que les limitation en terme de type de données.

Actuellement, DataSync ne support pas la synchronisation de :

  • type de données utilisateur
  • hierarchicalid
  • données spatial
  • type de données système
  • les procédures stockés (car ce n’est pas considéré comme de la données)

DataSync ne support pas non plus la mise à jour de schéma ainsi que le mix de schéma entre plusieurs bases.

Ce dernier point est en cours et sera certainement disponible pour la prochaine mise à jour.

Je suis en train de travailler sur un webcast en français.

This entry was posted in Azure, English, Français and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s