SQL Server 2008-2016
Dominique Verrière
Dialogue Formation Informatique
SQL Server 2008-2016
TMSL/JSON en administration de tabulaire 2016
SQL Server : Le blog de Dominique Verrière 2
Introduction
Ce petit fascicule fait partie d’une liste de notes que je publie gratuitement sur mon site.
J’essaie de mettre dans ces notes mon expérience de terrain en toute indépendance de Microsoft.
Dominique Verrière
Table des matières JSON et tâches d’administration .................................................................................. 6
Traitement d’un modèle ........................................................................................................................................ 6
Automatiser le process avec l’agent SQL Server ............................................................................................... 8
Automatiser le process avec SSIS .................................................................................................................... 10
Sauvegarder la base par du TMSL ....................................................................................................................... 11
Gérer la sécurité .................................................................................................................................................. 12
Contacter l’auteur ...................................................................................................... 15
Sommaire
SQL Server : Le blog de Dominique Verrière 5
TMSL/JSON en administration de modèle tabulaire
SQL Server Le blog de Dominique Verrière
JSON et tâches d’administration
Ceux qui pratiquaient le XMLA sur les bases multi dimensionnelles ne seront pas surpris des objectifs de ce
langage :
Pour ce qui est du tabulaire, Microsoft a purement et simplement remplacé le XMLA au profit du Tabular
Model Scripting Language, language qui utilise donc le format JSON en remplacement du XML.
Une des raisons de ce choix étant bien évidemment la taille, le JSON étant moins verbeux que XML.
Traitement d’un modèle Une des premières choses qui nous vient à l’esprit est le traitement (process) du modèle : ce traitement a
pour effet d’actualiser les données à partir de la source (souvent une base relationnelle, mais beaucoup de
nouvelles possibilités sont offertes).
La manière la plus simple d’obtenir du TMSL, à l’instar du XMLA, est de le générer depuis SSMS.
Un clic droit sur la base de données permettant d’obtenir une liste de tâches, dont celle du traitement.
Création/modification des structures (tables et colonnes)
Modification des sources de données
Gestion de la sécurité
Traitement du modèle
Etc.
TMSL/JSON en administration de modèle tabulaire
SQL Server : Le blog de Dominique Verrière 7
Le menu script nous permet d’obtenir ceci :
{ "refresh": { "type": "full", "objects": [ { "database": "DemoTabulaire2016" } ] } }
On note que le format de fichier est toujours XMLA (décidemment, Microsoft est toujours à la traine pour les
interfaces homme/machine des requêteurs).
Ce script peut être immédiatement exécuté avec un appui sur F5 :
Le compte-rendu détaillé étant disponible dans l’onglet messages.
TMSL/JSON en administration de modèle tabulaire
SQL Server Le blog de Dominique Verrière
Automatiser le process avec l’agent SQL Server
Une des méthodes les plus simples est de créer un job sous l’agent SQL Server :
En général, il y a des aspects sécurité à résoudre :
Le compte de l’agent a-t-il accès à la source de données ?
TMSL/JSON en administration de modèle tabulaire
SQL Server : Le blog de Dominique Verrière 9
Que l’on résoudra habituellement par un proxy :
TMSL/JSON en administration de modèle tabulaire
SQL Server Le blog de Dominique Verrière
Automatiser le process avec SSIS
Une méthode plus paramétrable est d’utiliser SSIS, c’est ce que je préfère, car, en général, le process suit
d’autres étapes d’alimentation de datawarehouse.
A noter que, sous SSIS 2016, une tâche de traitement toute faite est disponible… pourquoi utiliser un script ?
Car dans certains cas, l’aspect figé de la tâche toute faite peut être génant.
TMSL/JSON en administration de modèle tabulaire
SQL Server : Le blog de Dominique Verrière 11
Après exécution du package :
Vous avez noté qu’une tâche de sauvegarde a été ajoutée, je vais l’évoquer ci-dessous.
Sauvegarder la base par du TMSL
De même la génération se fait depuis SSMS.
{ "backup": { "database": "DemoTabulaire2016", "file": "DemoTabulaire2016.abf", "allowOverwrite": true, "applyCompression": true } }
Encore une fois l’avantage est de pouvoir paramétrer tout cela dans un package SSIS.
TMSL/JSON en administration de modèle tabulaire
SQL Server Le blog de Dominique Verrière
Gérer la sécurité Il y a plusieurs manières de gérer la sécurité :
La première façon consiste simplement à définir des rôles et de mapper des utilisateurs ou des groupes de
l’AD dessus.
Nous allons utiliser le deuxième type pour aller plus loin : certains rôles voient certaines données, par
exemple ici, des familles de produits.
Mon cahier des charges est de définir un rôle pour chacune des familles :
Vous aurez reconnu le bon vieil extrait d’AdventureWorks francisé dont je me sers toujours.
Voici dont le script JSON nécessaire à créer un rôle et lui donner des privilèges :
{ "createOrReplace": { "object": { "database": "DemoTabulaire2016", "role": "GerantVelos" }, "role": { "name": "GerantVelos", "modelPermission": "readRefresh", "members": [ { "memberName": "DOMINIQUE81\\GerantVelos" } ], "tablePermissions": [ { "name": "Produit", "filterExpression": " Produit[Categorie] = \"Vélo\"" }, ]
Statique pure
Semi statique
Dynamique
Vélos
Accessoires
Composants
Vêtements
TMSL/JSON en administration de modèle tabulaire
SQL Server : Le blog de Dominique Verrière 13
} } }
Nota : pour faire plus ‘joli’, j’ai collé ce script dans un fichier de type .JSX de Visual Studio.
Après exécution, notre nouveau rôle apparait dans SSMS ;
Il ne reste plus qu’à valider que ce rôle fonctionne.
Pour cela, je lance un SSMS en prenant l’identité d’un gérant de vélos.
Vérifions que je suis bien authentifié au moyen d’une petite requête MDX :
Tout est correct de ce côté, qu’en est-il des données ?
On ne voit que la catégorie des vélos, parfait.
TMSL/JSON en administration de modèle tabulaire
SQL Server Le blog de Dominique Verrière
…………
On ne voit que les produits de type vélos : correct !
Et les agrégats ?
select [Measures].[TotalMontantVentes] on columns, [Produit].[Categorie].members on rows from [Modèle];
Je connais assez mon modèle pour vous dire que ces chiffres sont bons !
Ceci n’est qu’un point de départ, le concepteur de BI aura évidemment la tâche de scripter tout cela de
manière globale (encore une fois, ma préférence va à SSIS).
Contacter l’auteur
SQL Server: Le blog de Dominique Verrière
Contacter l’auteur
Dominique Verrière est un consultant spécialisé sur les technologies SQL Server : moteur relationnel, SSIS, SSRS et SSAS. Il intervient dans les entreprises pour des missions d'audit, de suivi de performances, d'administration de bases de données. Les bases de données dont il s'occupe peuvent contenir plusieurs milliards de lignes et atteindre des Téra octets; son expérience du terrain est donc significative. Afin de compléter cet article, un blog www.dominiqueverriere.fr est régulièrement mis à jour avec des articles sur les nouveautés ou expériences nouvelles de l'auteur