Présentation de SQL Server 2017 et 2019

Tour d’horizon des principaux apports des versions 2017 et 2019.

Considérations sur l’installation et la configuration.

Les nouveautés en matière de configuration de tempdb.

SQL Server sur Linux.

Nouveautés de SQL Server Management Studio, introduction à Azure Data Studio.

Nouveautés pour l’administration et la sécurité

Le chiffrement de bout en bout avec Always Encrypted.

La sécurité niveau ligne (Row Level Security).

Masquage dynamique des données (Dynamic Data Masking).

Les paramètres de configuration de base de données (Database Scoped Configuration).

Nouvel environnement de sécurité des assemblies CLR et assemblies de confiance en SQL Server 2017.

Reconstruction d’index avec reprise.

La sauvegarde intelligente, sur des sauvegardes différentielles et de journaux.

Les nouveautés de la haute disponibilité.

Nouveautés pour les performances

Diagnostiquer et résoudre les performances avec le magasin de requêtes (Query Store).

Le traitement adaptatif et intelligent des requêtes (Adaptive Query Processing, Intelligent Query Processing).

Nouvelles vues de gestion dynamique (DMV).

Utilisation des corrections de l’optimiseur avec la directive USE HINT.

Nouveautés pour les développeurs

Les tables temporelles (Temporal tables).

Le support du JSON.

Support du modèle orienté graphe en SQL Server 2017.

Créer des tables de nœuds et d’arêtes.

Requêter les graphes avec le mot-clé MATCH.

Indexation des tables de graphe.

SQL Server pour Linux

Comprendre l’architecture sur Linux.

Installer SQL Server sur une distribution Linux.

Importer et exporter des bases de données entre Windows et Linux.

Comprendre les solutions de haute disponibilité sur Linux.

Comprendre le moteur SQL Server

Le moteur relationnel et le moteur de stockage.

La couche SQLOS et son importance pour SQL Server.

Les étapes de l'optimisation et de l’exécution des requêtes.

L’utilisation de la mémoire et des fichiers.

Les outils d’analyse et de diagnostic

L’importance d’établir une baseline.

Le moniteur de performances pour les compteurs SQL Server.

L’utilisation du profiler pour tracer les événements SQL Server.

Être proactif avec les alertes de l'agent SQL.

Utiliser les événements étendus (XEvents).

La supervision avec des outils libres.

Utiliser les vues dynamiques de gestion (DMV)

Découvrir les entrailles du moteur avec les DMV.

Analyser les attentes et les contentions.

Diagnostiquer les problèmes de mémoire, de disque, de blocages…

Optimiser l'indexation avec les DMV spécifiques.

Analyser les performances des requêtes

Analyser l’utilisation et la pertinence des index.

Comprendre et gérer les problématiques du cache de plans.

Gérer les problématiques de parallélisme.

Optimiser les performances en écriture.

Les problématiques classiques

Les problématiques de verrouillage et de deadlocks.

Les problématiques de mémoire et de cache.

Les problématiques de disque.

Les problématiques de CPU : parallélisme, gestion du NUMA.

Introduction à la réplication

Le pattern pub/sub et les différents rôles dans SQL Server.

Les modèles de réplication.

Les topologies de réplication.

Les agents de réplication.

Configuration des publications et des articles.

La réplication d’instantanés

Les étapes de la mise en place de la réplication.

Configuration et planification de l'agent d'instantané et de l'agent de distribution.

Mise en place par assistant, par T-SQL et par Powershell.

La réplication transactionnelle

Les réplications transactionnelles simples.

Mise en place par assistant, par T-SQL et par Powershell.

Supervision de la réplication

Supervision à l'aide du moniteur Windows et du profiler.

Considérations sur la sécurité.

Considérations sur les performances.

Comparaison des solutions de haute disponibilité

Définition du concept de HADR.

Comparaison des solutions proposées dans SQL Server.

Log Shipping avec SQL Server.

Comprendre l’architecture du log shipping.

Mettre en place un log shipping par assistant et par script.

Suivre la santé du log shipping

AwaysOn Clustering Services

Windows : de MSCS à WSFC.

Les prérequis matériels et logiciels.

La configuration d'un cluster Windows avec WSFC.

Les différents types de quorum.

La gestion des comptes de service pour exécuter SQL Server en cluster.

L’installation de SQL Server en nœud de cluster.

La configuration des propriétés du groupe de cluster.

L’utilisation d’indirect checkpoint pour paramétrer le temps de récupération en basculement.

Gestion du cluster avec Cluster Manager.

Mettre en place la supervision des basculements automatiques.

Supervision avec les vues de gestion dynamique et les compteurs de performance.

AwaysOn Availability Groups

Principes de fonctionnement, différence avec le miroir dans les versions antérieures.

Les différents types de réplicas.

Utilisation du listener pour la redirection des clients.

La sécurisation du canal TCP.

Les améliorations en SQL Server 2016.

Supervision avec les vues de gestion dynamique et les compteurs de performance.

Gérer le basculement manuel.

Optimisation du code SQL

Les règles de base de la performance du code.

Utiliser les statistiques d'exécution.

Lire et déchiffrer le plan d'exécution.

Corriger les erreurs les plus courantes.

Bonnes pratiques pour les procédures stockées

Règles pour l’écriture de procédures stockées.

Maîtriser les problèmes de compilation.

Comprendre et corriger les problèmes de conservation du plan d’exécution.

Comprendre SQL Server

L’importance et la centralité de la base de données dans le SI et les traitements.

Le fonctionnement d’un SGBDR : le modèle relationnel, les traitements ensemblistes.

Le langage SQL : langage déclaratif et ensembliste.

L’importance du modèle pour les performances et la qualité des données.

L'optimisation du côté du serveur SQL

Les règles d’une exécution optimale des requêtes SQL : l’importance de la syntaxe.

Principes importants de l'indexation.

L’optimisation spécifique aux cas d’utilisation : que prendre en compte pour favoriser les requêtes OLTP, les requêtes statistiques, les base à fort taux d'écritures.

Le suivi des requêtes et l'analyse de leurs performances avec le profiler et les événements étendus.

Utiliser ADO.NET

Les objets ADO.NET, une technologie dépassée ?

Choisir entre le dataset et le datareader. Utiliser les datatable et les dataview.

Utiliser ou non le dataset typé.

Gérer le pool de connexions.

Comprendre et utiliser la précompilation du code T-SQL.

Gérer la pagination.

Lier vos données avec le DataAdapter et le CommandBuilder.

Utiliser MARS (Multi-Active ResultSets) et les resultsets multiples.

Lancer des commandes asynchrones.

Bonnes pratiques de gestion des procédures stockées.

Passer des tableaux de paramètres aux procédures stockées.

LINQ to SQL

Les défis de la syntaxe LINQ to SQL.

Analyser la traduction en langage SQL

Utiliser ou non les requêtes compilées.

Utiliser la concurrence optimiste ?

Utilisation des fonctions et réalisation de jointures externes.

Se passer de LINQ to SQL : réaliser des tests unitaires T-SQL.

Entity Framework

Le choix de l’exécution différée ou de l’exécution immédiate.

Utilisation de vues et de procédures stockées pour alimenter les entités et les types complexes.

Utilisation de procédures pour les opérations d’écriture de données.

Les mises à jour ensemblistes.

L’optimisation des suppressions.

Appeler directement du code SQL depuis le DBContext.

Le suivi du code SQL dans Entity Framework 6.

L’optimisation de LINQ to Entities.

Introduction au NoSQL

Historique du mouvement NoSQL.

Les différentes approches de gestions de bases de données : les bases hiérarchiques, le modèle relationnel, les bases objet, les bases XML, le NoSQL.

Pourquoi le NoSQL : quelques scénarios d'utilisation.

Différences entre Relationnel et NoSQL

Les bases de données relationnelles : leurs forces et leurs limites.

Le transactionnel et l'ACID.

La structuration forte des données.

Les choix techniques du NoSQL

L’architecture distribuée.

La structure souple des données : les paires clé-valeur, les bases orientées document, les bases orientées colonne.

Le support variable de la cohérence transactionnelle.

Le stockage de données en mémoire.