Le Post Infeeny

Les articles des consultants et experts Infeeny

Les Temporal Table SQL Server 2016

A la sortie de SQL Server 2016 une nouvelle fonctionnalité est arrivée :

Les Temporal Table !

Qu’est-ce que c’est ?

Vous avez tous eu besoin un jour ou l’autre de devoir auditer vos tables de vos bases de données

Jusqu’à maintenant des solutions existaient :

  • Change Data Capture
  • SQL Broker
  • La mise en place de Trigger ?
  • Lecture des logs ?

Mouais ! Pas toujours très convaincantes ces solutions, mais surtout pas facile à mettre en place et souvent contre performante …  Bref !

Le Temporal table permet d’ajouter une piste d’audit sur les données en se basant à partir des dates systèmes

Pour activer le temporal table on va effectuer les opérations suivantes :

ALTER TABLE dbo.TestTemporal SET (SYSTEM_VERSIONING = OFF);

 

On va créer une table :

CREATE TABLE dbo.TestTemporal

(ID int primary key

,A int

,B int

,C AS A * B

,SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL

,SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL

,PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)) WITH(SYSTEM_VERSIONING = ON);

 

On va activer le versionning sur cette table à l’aide de 2 colonnes système

Une fois la création effectuer la table apparaît avec un petit logo de temps sur le côté :

1

En effectuant une requête sur la table voici le résultat :

5

Nous allons faire des opérations sur cette table :

Une suppression :

DELETE FROM dbo.TestTemporal

WHERE ID = 2 ;

Si nous interrogeons notre table nous voyons que les données correspondant à l’ID 2 ont été supprimés :

3

En vérifiant la table temporal :

2

Nous trouvons la ligne supprimé.

Nous allons effectuer une mise à jour :

UPDATE dbo.TestTemporal

SET P1 = 5

WHERE ID = 3 ;

6

En vérifiant la table temporal :

4

On trouve les valeurs modifiés ou supprimer et les dates de modifications suppressions.

Conclusion :

Voici en quelques clics comment utiliser le temporal table.

Nous nous apercevons très rapidement que les informations modifiés et supprimés sont stockées dans une table à part ce qui permet de conserver un historique.

Il est possible de comprendre cet historique grâce aux sysdate.

Point de vu  performance au vu des tests que j’ai effectué, je n’ai pas constaté de baisse de performance sur les tables audité.

Julien PIERRE

Consultant MSBI

 

 

 

 

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :