SQL Server 2016 CTP2.1 : “Stretch Database”

SQL Server 2016 CTP2.1 est disponible en téléchargement et apporte son lot de nouveautés. Dans cet article, je vais traiter de la fonctionnalité “Stretch Database” qui suscitait mon intérêt depuis un petit moment déjà.

SQL Server 2016 CTP2.1 est téléchargeable ici : https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016

Les nouveautés de la version 2016 sont détaillées ici : https://msdn.microsoft.com/en-us/library/bb500435.aspx

Principe du « Stretch Database »

L’idée est d’avoir une base de données configurée pour permettre l’extension d’une ou plusieurs de ses tables vers une base Azure SQL. Cette extension vers Azure permet d’archiver de manière transparente les données « froides », sans modifier les conditions d’accès à l’information lorsque la table est requêtée. Et cela, tout en profitant du coût de stockage très avantageux proposé par Azure.

Le schéma ci-dessous illustre ce principe :

clip_image001

On aura donc un serveur sur site et un serveur Azure SQL database :

  • Local database : la base de données se trouvant sur site (SQL Server 2016 CTP2)
  • Remote endpoint : aujourd’hui, c’est une base de donnée Azure (PaaS) de niveau S3. Ceci peut être amené à changer

Puis une base de données qui contiendra au moins une table paramétrée en mode « Stretch ». Cette table verra ses données réparties de la manière suivante :

  • Local data : les données de la table se trouvant sur site qui ne bougeront pas !
  • Eligible data : les données de la table qui n’ont pas encore bougées, mais qui bougeront à un moment ou un autre
  • Remote data : les données qui ont déjà bougées vers Azure SQL Database

Il va exister 2 modes de mouvement :

  • Archive table : toutes les données de la table vont bouger vers le Cloud
  • Archive row : seules les données issues d’une requête contenant une clause WHERE bougeront

Aujourd’hui, seule le mode « Archive table » est disponible.

 

Mise en place

Configuration de l’instance SQL Server

Afin de pouvoir utiliser la fonctionnalité “Stretch database”, il faut la paramétrer au niveau de l’instance.

Dans SQL Server Management Studio (SSMS), cliquez sur le bouton « New Query » et exécutez le script suivant :

  • EXEC sp_configure 'remote data archive' , '1';
  • RECONFIGURE;

clip_image002

Dans le cas où vous oubliez cette étape, l’assistant ne manquera pas de vous le rappeler Sourire.

clip_image003

 

Configuration de la base de données

Toujours dans SSMS, faîtes un clic droit sur votre base de données. Sélectionnez « Task », « Enable Database for Stretch… »

clip_image004

L’assistant démarre. Passez la page d’introduction en cliquant que le bouton “Next”.

clip_image005

La seconde étape vous demande de vous authentifier sur votre compte Azure. Cliquez sur « Sign In.. ».

clip_image006

La fenêtre d’authentification apparaît. Entrez vos informations de connexion. Puis cliquez sur « Sign in ».

clip_image007

Sélectionnez votre compte Azure. Cliquez sur « Next ».

clip_image008

Renseignez les informations de zone Azure et les informations de connexion pour la création du serveur Azure SQL.

Lors de mes premiers essais, j’ai sélectionné « North Europe » pour être cohérent avec ma machine virtuelle hébergeant SQL Server 2016 CTP2.1.

Or j’ai eu une erreur indiquant que la version du serveur Azure SQL que je voulais créer n’était pas supportée : « Location \u0027North Europe\u0027 is not accepting creation of new Azure SQL Database Servers of version \u002712.0\u0027 at this time”

Par contre, cela a fonctionné avec une localisation au Brésil.

Cliquez sur « Next ».

clip_image009

Dans la fenêtre « Summary », cliquez sur « Finish ».

clip_image010

 

Configuration de la table

Après avoir configuré la base de données, faîtes un clic droit dessus et cliquez sur « Refresh » (Afin d’éviter d’avoir la fonction « Stretch » de grisée).

Au niveau de la table que vous souhaitez étendre dans Azure, faîtes un clic droit sur cette table puis cliquez sur « Stretch », « Enable Stretch.. »

clip_image013

Sur la fenêtre d’avertissement, cliquez sur “Yes”.

clip_image014

Une fois la configuration réalisée, la table est maintenant étendue vers Azure.

Si on regarde un peu plus en détail dans SSMS, on peut voir qu’un nouveau « Credential » a été créé ainsi qu’un serveur lié.

image

 

Jetons un œil dans Azure

Si on se connecte sur le portail Azure, on peut voir qu’un nouveau serveur a été créé.

image

Et si on clique sur ce serveur, on peut voir la base associée à notre serveur sur site. Par défaut cette base de données est de niveau S3.

clip_image017

 

Accès à la base de données Azure SQL

Même si ce n’est pas prévu dans la philosophie de cette fonctionnalité, je me suis dit, comme c’est une base de données Azure, je vais essayer de m’y connecter avec mon management studio

clip_image018

Une fois connecté, il est possible de naviguer dans la base de données tout à fait normalement :

clip_image019

 

Ajout de lignes dans la table

Afin de tester la fonctionnalité, j’ai rajouté une ligne dans la table sur serveur local.

Pour cet exemple, je rajoute la ligne « Violon ».

clip_image020

Côté Azure SQL, on récupère la nouvelle ligne avec une information supplémentaire dans la colonne batchID. On note que la ligne « Violon » fait partie un autre transfert que les lignes d’origines. D’où le chiffre 2 dans la Colonne « Batch ».

clip_image021

Dans le cas d’une plus grande volumétrie qu’une seule ligne Sourire, le transfert vers Azure SQL se fera par paquet de 10 000 lignes. Donc si je rajoute 10 000 lignes dans ma table locale, ces 10 000 lignes auront pour BatchID le chiffre 3.

Par exemple, ci-dessous je rajoute 5 nouvelles lignes dans ma base locale

clip_image022

Voici ce que je retrouve côté Azure SQL

clip_image023

Pour info, la colonne BatchID comporte dans son titre l’ID de la table qui a été étendue. Pour illustrer ce qui vient d’être écrit, voici une requête sur la base en local :

clip_image024

Aujourd’hui, toutes les lignes sont identifiées comme devant être archivées dans la table se trouvant dans la base Azure SQL. A terme, il sera possible de définir les lignes qui devront bouger ou pas.

Pour plus d’information sur cette fonctionnalité, vous pouvez consulter le site msdn : https://msdn.microsoft.com/en-us/library/dn935011.aspx  

 

Backup

Attention, le backup d’une base en mode « Strech table », ne contient pas les données se trouvant dans Azure. Seul le point de terminaison est renseigné dans le backup.

Le process du backup des tables en mode « Stretch table » est détaillé ici : https://msdn.microsoft.com/en-us/library/dn934993.aspx

 

Arrêter le mode étendue d’une table

Aujourd’hui, pour arrêter le mode Stretch, il faut suivre la procédure suivante détaillé dans l’article MSDN : https://msdn.microsoft.com/en-us/library/dn935010.aspx

 

Limitations

Il existe aujourd’hui encore des limitations dans l’usage de cette fonctionnalité. Ces limitations sont détaillées ici : https://msdn.microsoft.com/en-us/library/dn935016.aspx

Franck Mercier

Sessions de formation gratuites :

Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :

Windows Server 2012 :

Evaluation SQL Server 2014 :

Evaluation SQL Server 2016 CTP2 :

Evaluation Power BI :

Testez Azure gratuitement pendant un mois :