Serveur minecraft

Microsoft SQL Server – Wikipedia – Un bon serveur Minecraft

Par Titanfall , le 4 mai 2019 - 80 minutes de lecture

Microsoft SQL Server est un système de gestion de base de données (SGBD) en langage SQL incorporant, entre autres, un SGBDR (SGBD relationnel) développé et commercialisé par Microsoft. Il fonctionne sous les systèmes d'exploitation Windows et Linux (depuis mars 2016), mais il peut être lancé sur Mac OS via Docker, car il existe une version à télécharger sur le site de Microsoft.[[[[1].

Bien qu’elle ait été à l’origine co-développée par Sybase et Microsoft, Ashton-Tate a également été associée à sa première version, sortie en 1989. Cette version a été publiée sur les plateformes Unix et OS / 2. Depuis lors, Microsoft a porté ce système de base de données sur Windows.

Lors de sa création, Sybase SQL Server a hérité des principes du moteur Ingres développé à l'origine par l'Université de Berkeley.

En 1994, le partenariat entre les deux sociétés était rompu, Microsoft publiait la version 6.0 puis la seule version 6.5 sur la plate-forme Windows NT.

  • Microsoft a continué à commercialiser le moteur de base de données en tant que SQL Server
  • Pour éviter toute confusion, Sybase a renommé Sybase SQL Server en Sybase Adaptive Server Enterprise.

Microsoft SQL Server fait désormais partie de la stratégie technique de Microsoft pour la base de données. Le moteur MSDE, qui constitue la base de SQL Server, devrait éventuellement remplacer le moteur Jet (celui qui gère les bases de données Access) dans des applications telles que Exchange et Active Directory.

La version 2005 de SQL Server est sortie le en même temps que Visual Studio 2005. La prise en charge de Windows Vista et Windows Server 2008 a été ajoutée uniquement à partir du Service Pack 2 (SP2). Actuellement, le Service Pack 3 est disponible. L'optimiseur a été complètement refait, tout comme le moteur relationnel.

La version 2008 de SQL Server (nom de code Katmai) a été publiée en août 2008. La version mineure 2008 R2 a été publiée en 2010.

La version 2012 de SQL Server a été publiée en avril 2012.

La version 2014 de SQL Server est sortie le 1st Avril 2014 avec un moteur "en mémoire" complémentaire au moteur relationnel.

La version 2016 de SQL Server est sortie le 1st Juin 2016.

Lors du développement de la version 2005, le projet était à l'époque l'un des plus grands projets informatiques au monde. Plus de 1 600 développeurs ont participé au codage du noyau et on estime que plus de 10 000 autres personnes ont travaillé de près ou à distance (interaction homme-machine, documentation, traduction, etc.).[réf. nécessaire]

SQL Server se distingue de la concurrence par une grande richesse ne requérant aucune option payante supplémentaire dans la limite de la version choisie.

Sommaire

Multi-base, multi-schéma[[[[modifier | changer le code]

Comparé à ses concurrents Oracle, MySQL ou PostgreSQL, SQL Server se distingue par le fait qu’il s’agit d’un SGBDR à plusieurs bases à plusieurs bases. Il est possible de faire des requêtes nativement interbasées. Par exemple, la requête suivante lie deux tables provenant de deux bases de données différentes:

 SÉLECTIONNER *
 DE   BASE_A.bod.TABLEAU 1 COMME T1
        INTERNE JOINDRE BASE_B.bod.TABLEAU 2 COMME T2
              NOUS T1.ID = T2.ID;

L'optimiseur est capable de faire un plan de requête parfaitement optimisé même si la requête consulte des données de plusieurs bases de données …

Bien que PostGreSQL soit multibase et multischema, cette possibilité d'interrogation simultanée n'est pas native et il est nécessaire de passer par le "dblink" qui interdit les jointures et donc toute possibilité d'optimisation … Oracle avec sa version 12 tente d'intégrer ce même concept multibase (appelé multi-locataire) mais souffre du même problème que PostGreSQL. MySQL est un schéma unique, multibase.

Gestion des schémas SQL[[[[modifier | changer le code]

La flexibilité de la gestion des schémas SQL est telle qu’il est possible de transférer un objet d’un schéma à un autre en utilisant simplement une commande. ALTER SCHEMA.

Les propriétaires sont des schémas distincts et il est possible de transférer la propriété d'une base de données, d'un schéma ou d'un objet d'un utilisateur SQL à un autre, via la commande MODIFIER L'AUTORISATION.

Parallélisme[[[[modifier | changer le code]

SQL Server fonctionne de manière native en parallèle. Dès qu'une estimation de la requête dépasse le seuil de coût à partir duquel un plan de requête peut être parallélisé, SQL Server le réécrit en utilisant des algorithmes multithreads. Si le nouveau plan est moins coûteux, une substitution est automatiquement effectuée. Cette fonctionnalité existe dans toutes les éditions et n’est pas un module payant à ajouter, comme c’est le cas d’Oracle.

Les opérations de lecture et d'écriture physiques tirent également parti du parallélisme systématique, car les opérations d'E / S sont effectuées directement par SQL Server et non par la couche système, contrairement à PostGreSQL ou MySQL.

Compression[[[[modifier | changer le code]

Dans la version Entreprise, le moteur est capable de compresser des données au niveau de la ligne ou au niveau de la page dans des tables, comme dans des index. La compression de sauvegarde est disponible à partir de l'édition standard depuis la version 2008 R2.

Sauvegarde à chaud[[[[modifier | changer le code]

Depuis SQL Server 7 (1998), SQL Server vous permet de sauvegarder une "base de données ouverte" sans interrompre le service de données ni interrompre l’activité de l’utilisateur. Cette sauvegarde peut être effectuée globalement, par groupe de fichiers, par fichier ou via le journal des transactions.

Unique … sauf NULL![[[[modifier | changer le code]

Dans SQL Server, les contraintes d'unicité considèrent le marqueur NULL comme une valeur et interdisent par conséquent la présence de plusieurs NULL dans les colonnes d'une telle contrainte. Ceci n'est pas conforme au standard SQL puisque le NULL est une absence de valeur, l'unicité ne se pose pas. Il existe toutefois un moyen simple de contourner ce problème, qui consiste à créer un index filtré unique qui se rapportera aux données évaluées.

Exemple, la table:

 CRÉER TABLE T_EMPLOYE_EMP
 (EMP_ID            INT PRIMAIRE CLÉ,
  EMP_NOM           VARCHAR(32) NE PAS NUL,
  EMP_MATRICULE     RÉSERVOIR(8));

Le matricule devant être unique pour les valeurs connues, la création d'un index unique filtré sur les valeurs exprimées dans la colonne matricule permet de résoudre le problème:

 CRÉER UNIQUE INDICE X_EMP_MATRICULE
    NOUS T_EMPLOYE_EMP(EMP_MATRICULE)
     EMP_MATRICULE EST NE PAS NUL;

Déclencheurs ré-entrants (table "mutant")[[[[modifier | changer le code]

Dans les déclencheurs SQL Server, il est possible de mettre à jour la table cible de l'événement qui provoque l'exécution du déclencheur, contrairement à de nombreuses bases de données qui interdisent cette possibilité (erreur "table mutant" dans Oracle). Il faut se rappeler que c'est Sybase qui a inventé le concept de déclencheur en 1986, introduisant ainsi pour la première fois du code exécutable dans une base de données relationnelle.

Par exemple, un déclencheur METTRE À JOUR sur une table peut modifier les données en cours de modification:

CRÉER DÉCLENCHEUR E_U_PERSONNE
NOUS T_PERSONNE_PRS
POUR METTRE À JOUR 
COMME
   SI METTRE À JOUR(PRS_NOM)
      METTRE À JOUR T_PERSONNE_PRS
      ENSEMBLE    PRS_NOM = PLUS HAUT(PRS_NOM)
        PRS_ID DANS (SÉLECTIONNER PRS_ID 
                        DE   inséré)

Dans l'exemple ci-dessus, les noms des noms nouvellement insérés ou modifiés sont mis en majuscule.

Étant donné que la réentrance peut entraîner une récursivité, divers paramètres permettent de résoudre ce problème au niveau de la base ainsi qu'au niveau de l'instance.

Vues indexées automatisées[[[[modifier | changer le code]

Contrairement à Oracle ou à PostGreSQL, les vues matérialisées doivent être actualisées avant utilisation, les vues indexées de SQL Server sont toujours synchrones. De plus, l’optimiseur peut substituer à la volée la vue indexée de tout ou partie de la requête (version Enterprise) ce qui est très pratique lorsque le DBA n’a pas accès au code des programmes client (cas des applications de éditeurs).

Pooling automatique[[[[modifier | changer le code]

Pour les applications intégrées en .net et utilisant le connecteur ADO, SQL Server effectue le regroupement automatique. Il suffit de distinguer deux chaînes de connexion pour créer deux pools différents. Pour que le regroupement soit efficace, les connexions doivent être fermées une fois le traitement des données terminé.

Administration centralisée[[[[modifier | changer le code]

Par différents moyens, SQL Server peut gérer de manière centralisée un ensemble de serveurs. Vous pouvez créer un serveur de gestion centralisé et ajouter une liste de serveurs SQL d'entreprise pour lancer des requêtes envoyées simultanément à tous les serveurs, ou créer ou exécuter la même procédure sur tous les serveurs à la fois, ceci dans l'outil SSMS (SQL Server Management Studio). .

De même, le planificateur de tâches et Alert Manager (agent SQL) vous permettent de définir des tâches multiserveurs, telles que la sauvegarde, la défragmentation des index, le recalcul de statistiques ou la vérification de l'intégrité physique des espaces. espace de rangement.

Le moteur OLTP de SQL Server comporte tant de fonctionnalités qu’il serait difficile d’énumérer. Voici quelques exemples qui font la différence avec les SGBD plus légers tels que MySQL ou PostGreSQL …

Table, index et procédure "En mémoire"[[[[modifier | changer le code]

SQL Server dispose d'un moteur "En mémoire" depuis la version 2014. Les tables et les index peuvent être entièrement en mémoire (structure et données: données et schéma) ou persistants dans la structure (données uniquement). Les procédures, dans des limites bien définies, peuvent être compilées de manière native, plutôt que interprétées. Les mises à jour restent transactionnelles, sans qu'il soit nécessaire d'écrire dans les fichiers du journal des transactions (contrôle de version "en mémoire"). Cela permet d'améliorer considérablement les performances des processus de calcul complexes impliquant des volumes de données importants. Un exemple typique est le calcul de la performance financière des cours de bourse en temps réel.

Intra rejoindre (APPLIQUER)[[[[modifier | changer le code]

SQL Server était le premier avec la version 2005 à introduire l'opérateur intra-jointure APPLIQUER pour faciliter la récupération des données encapsulées dans une table virtuelle d'une colonne de table, comme c'est le cas lors de l'utilisation d'une fonction de table dans une requête dont les arguments proviennent de l'une des tables de la requête ou lors de la tabularisation de XML. L'opérateur APPLIQUER doit être précédé du mot clé TRAVERSER ou EXTÉRIEUR définir le comportement. Avec TRAVERSER si l'argument est NULL, les lignes affectées sont supprimées du résultat alors qu'avec EXTÉRIEUR ils sont conservés.

L'opérateur APPLIQUER est voisin de l'opérateur LATÉRAL du standard SQL, mais sa syntaxe plus étendue permet des opérations qui LATÉRAL ne peut pas atteindre. Oracle a récemment introduit cet opérateur dans la version 12.1 (2014).

SÉLECTIONNER Haut dix *
DE   sys.dm_exec_query_stats COMME qs
       TRAVERSER APPLIQUER sys.dm_exec_sql_text(qs.sql_handle)
       EXTÉRIEUR APPLIQUER sys.dm_exec_query_plan(qs.plan_handle)
ORDRE PAR total_worker_time DESC

Dans cet exemple, nous utilisons la fonction de table sys.dm_exec_query_plan, qui rend le plan d'exécution à partir du plan "handle" fourni par l'argument "plan_handle" présent dans la vue sys.dm_exec_query_stats. Cette requête permet de connaître les 10 requêtes ayant consommé le plus de temps CPU depuis le démarrage de l'instance.

Collations (assembler littéralement)[[[[modifier | changer le code]

SQL Server possède l'une des plus riches collections de snacks (3887 en version 2014), permettant de conduire 101 langues parmi lesquelles, outre le français, on trouve le breton et la corse! Les snacks permettent d'effectuer des recherches tenant compte ou non du cas (majuscules, minuscules – CS / CI), des accents et autres caractères diacritiques (accents, cedilla, ligatures … – AS / AI), de la largeur caractères (2 = 2 ? – WS) ou différents types de kana (katakana et hiragana du japonais – KS), ou de faire des comparaisons binaires tenant compte ou non du code hexadécimal. Les snacks sont totalement indépendants des jeux de caractères (jeux Iso_1) bien qu'ils permettent de les simuler (ASCII, UNICODE, UTF16, EBCDIC …). La prise en charge des collations est fournie à quatre niveaux: serveur (1), base (2), table ou colonne de vues (3) et enfin (4) manipulant des chaînes et triant des colonnes de texte dans des requêtes.

SÉLECTIONNER *
DE   T_UTILISATEUR_APPLICATIF_UTA
  UTA_CONNEXION   = & # 39; Eric Blüm & # 39; COLLATIONNER French_CI_AI 
  ET  UTA_MOT_DE_PASE = & # 39; A²E3wx + Z & # 39;  COLLATIONNER Latin1_General_CS_AS_WS

Dans l'exemple suivant, nous recherchons un nom de connexion avec une collation "en vrac" (quel que soit le cas ou les accents) et le mot de passe avec une collation "tight" (binaire):

La liste des snacks disponibles sur le serveur peut être obtenue par la requête:

SÉLECTIONNER * DE sys.fn_helpcollations()

Données XML[[[[modifier | changer le code]

Depuis la version 2005, SQL Server prend en charge le type XML (fragment) et vous permet de manipuler XML via des requêtes XQuery / XPath. Une colonne de type XML peut être typée via une collection de définition de schéma XML (XSD). L'exemple suivant montre la création d'une collection de schémas XML à un seul élément, puis la création d'une table avec une colonne XML typée avec cette collection de schémas:

- création d'un schéma XML pour valider les données d'une colonne XML
CRÉER XML DIAGRAMME COLLECTION XSC_DONNEES_ENTREPRISE ace NE PAS& # 39;
<xs: schema xmlns: xs = "http://www.w3.org/2001/XMLSchema" xmlns: company = "http://www.example.com/business"
                targetNamespace = "http://www.example.com/business" elementFormDefault = "qualifié">
  
    
      
        
          
            
              
            
            
          
        
      
    
  
& # 39;;

- création d'une table comportant une colonne de type XML dont les données doivent être conformes au diagramme avant
CRÉER TABLE T_ENTREPRISE_EMPLOIS_EEP
(EEP_ID         ENTIER PRIMAIRE CLÉ IDENTITÉ, 
 EEP_NAME       VARCHAR(12)
 EEP_XML_DATA   XML (XSC_DONNEES_ENTREPRISE) -> création d'une colonne XML typée par XSC_DONNEES_ENTREPRISE (collection de schémas XML)
 )

Une requête SELECT d'extraction peut générer un XML de sortie au lieu d'un résultat tabulaire, via la clause Transact-SQL "FOR XML" pour laquelle il existe de nombreuses options de présentation. L'exemple suivant montre une hiérarchie XML répertoriant les contraintes d'une table en tant qu'éléments XML:

SÉLECTIONNER TABLE_SCHEMA COMME schemaSql, NOM DE LA TABLE COMME nom de la table, 
       CONSTRAINT_NAME COMME nomContrainte, CONSTRAINT_TYPE COMME typeContrainte
DE INFORMATION_SCHEMA.TABLE_CONSTRAINTS COMME contrainte
 NOM DE LA TABLE = Département français & # 39;
POUR XML AUTO, ÉLÉMENTS, RACINE(& # 39; Contraintes & # 39;)

Cette requête renverra, par exemple, les données suivantes:


  
    Référence
    Département français
    pk_DepartementFrancais
    CLÉ PRIMAIRE
  
  
    Référence
    Département français
    chk_DepartementFrancais_ForceSTSRid
    VÉRIFIER
  
  
    Référence
    Département français
    UK_DepartementFrancais_NomChefLieu
    UNIQUE
  
  
    Référence
    Département français
    UK_DepartementFrancais_Nom
    UNIQUE
  

Enfin, il est possible de manipuler directement des données XML dans les routines (provenant par exemple de fichiers), en utilisant les fonctions et procédures OPENXML, sp_xml_preparedocument, sp_xml_removedocument …

Système d'information géographique intégré (SIG)[[[[modifier | changer le code]

Depuis la version 2008, SQL Server intègre un SIG dans toutes les versions. Celui-ci permet de construire des objets géométriques (géométrie euclidienne) ou géographiques (en tenant compte de la courbure spatiale de la croûte terrestre) en utilisant les types GEOMETRY et GEOGRAPHY (POINT, LINESTRING, POLYGON et combinaisons …). Il est basé sur le standard OGC, tout comme le complément spatial PostgreSQL PostGIS. la version 2012 a ajouté des objets courbes (CircularStrings, CompoundCurves, CurvePolygons …) et une meilleure précision des calculs (48 bits au lieu de 27 précédemment).

Les index spatiaux permettent de "rechercher" certaines méthodes telles que STContains, STDistance, STEquals, STIntersects, STOverlaps, STTouches, STWithin …

Stockage de fichiers électroniques: FileStream et FileTable[[[[modifier | changer le code]

Conformément au standard SQL qui fournit DATALINK, SQL Server implémente un outil similaire appelé FileStream qui stocke les fichiers sous forme de fichiers dans le système d’exploitation, mais sous la responsabilité et le contrôle du serveur de base de données (sérialisation, transaction, fiabilité, sécurité …). . Cela permet, entre autres, une sauvegarde intégrée et synchrone de données relationnelles et non relationnelles, par exemple pour les images des produits d'un site Web, telles que des manuels électroniques au format PDF des machines d'un parc à des fins de maintenance. Cet outil est largement utilisé pour GED. Fichiers électroniques pouvant être du texte indexé.

De plus, depuis la version 2012, SQL Server propose le concept FileTable, qui est une table virtuelle associée à un point d'entrée (répertoire) du système informatique, pour permettre la gestion bidirectionnelle des fichiers électroniques: les fichiers gérés par le langage SQL. sont accessibles dans le système de fichiers Windows et inversement: nous pouvons insérer un fichier ou un répertoire dans la table via une requête SQL et cela sera vu dans l’arborescence du système.

L’outil de gestion des connaissances de Sharepoint utilise largement ce concept pour gérer les documents électroniques qui y sont stockés, ainsi que toutes les versions de transition.

Services Web[[[[modifier | changer le code]

Introduite avec la version 2008, la possibilité de créer des services Web natifs directement sur le serveur à l'aide de points de terminaison SOAP / HTTP était considérée comme obsolète dans la version 2008 R2 et supprimée dans la version 2012. Toutefois, SQL Server permet de créer et d'utiliser en interne de nombreux des services particuliers tels que la mise en miroir de bases de données ou Service Broker …

Courtier de service[[[[modifier | changer le code]

L'objectif de Service Broker est de fournir un outil de messagerie de base de données permettant de gérer les flux de données entre les serveurs SQL de manière asynchrone, sérialisée et transactionnelle via des files d'attente constituées de tables système.
Cela permet de créer une architecture SODA (Service Oriented Database Architecture), c'est-à-dire des bases de données d'instances différentes qui interagissent les unes avec les autres au niveau des données et non plus au niveau de l'application, comme c'est le cas avec SOA.

Cela permet de créer des bases de données distribuées et distribuées distribuées, un calcul en grille ou un workflow, et par exemple de fournir une meilleure surface d'attaque pour un accès hautement compétitif. Ce système diffère de la réplication de données en ce que les informations sont principalement véhiculées sous forme XML (cryptée), sur la couche HTTP (Internet par exemple) via des services Web et qu'il n'y a aucune obligation pour que les bases et les tables d'origine et de destination soient identiques. en termes de structure.

Un exemple intéressant est de remplacer les outils de messagerie traditionnels tels que MQ Series, par un tel appareil, beaucoup plus fiable …

En tant que Service Broker utilisable dans l'édition gratuite de SQL Server Express, il a été largement utilisé dans le secteur pour gérer les informations de production de nombreuses machines de la même batterie afin de tracer ces données vers un serveur central. C'est notamment le cas de la chaîne de production de vaccins d'un célèbre institut français.[réf. nécessaire]

En plus des fonctionnalités pour le développeur, SQL Server dispose de nombreux outils pour une administration facile. Voici quelques-uns.

Réplication de données[[[[modifier | changer le code]

À ne pas confondre avec la "haute disponibilité" qui consiste à dupliquer une base de données entière, SQL Server dispose de 8 modes de réplication de données (réplication de certaines informations à partir de certaines tables, de bases en bases). autres bases sur d’autres serveurs), y compris les modes transactionnel, point à point, instantané ou de fusion. La réplication depuis et vers Oracle est également prise en charge dans l'édition Enterprise.

Les sites de vente en ligne tels que Cdiscount, Fnac.com ou Vente-privee.com utilisent la réplication, à la fois pour dissocier les données du FO (Front Office – essentiellement du site Web) et du BO (Back Office – gestion des factures, livraisons, stocks .. .), mais aussi pour élargir la surface d’attaque afin d’absorber la charge de nombreux utilisateurs.

La haute disponibilité[[[[modifier | changer le code]

La duplication de bases de données pour établir un système hautement résilient est assurée par quatre moyens différents:

  • Le " expédition de journaux En envoyant une sauvegarde du journal des transactions et en réappliquant des transactions aux bases de données sauvegardées. Système de basculement manuel asynchrone. Pertes limitées à l'enregistrement de la latence d'expédition. Opérer base par base.
  • Le " en miroir En envoyant les pages modifiées tirées du journal des transactions à une base de données de secours. Système transparent pour applications en mode synchrone ou asynchrone (.net ou ODBC) avec basculement manuel ou automatique (si synchrone) basé sur la base. Zéro latence de basculement si synchrone et en mode automatique. Un seul miroir est toléré par base. Pour le basculement automatique, un serveur de contrôle (version Express gratuite par exemple) est nécessaire pour éviter le syndrome de split brain.
  • Le " regroupement Par redondance de serveur (jusqu’à 64 nœuds actifs ou passifs) partageant la même grappe de disques (Ne rien partager), auxquels on peut ajouter un système de réplication de l'IO du tableau afin d'éviter le SPOF (Point de défaillance unique). Vous permet de changer l'instance dans son ensemble manuellement ou automatiquement en suivant les règles à configurer. Les données sont toujours synchrones. Temps de basculement en fonction du scénario établi, mais généralement de quelques dizaines de secondes à quelques minutes.
  • La technologie " Toujours sur »: Combinaison en miroir et cluster de basculement (FCI pour Instance de cluster de basculement) permettant d’associer différentes bases au sein de groupes de disponibilité, ce qui assure un basculement collectif de toutes les bases de données en cas de dysfonctionnement de l’une d’elles au sein d’un groupe. Comme pour la mise en miroir, le système est transparent pour les applications en mode synchrone ou asynchrone (.net ou ODBC) avec basculement manuel ou automatique (si synchrone) groupe par groupe. La latence de basculement est égale à zéro si le mode synchrone est adopté. Le nombre de "répliques" du même groupe de disponibilité est limité à 10: 8 asynchrones et 2 synchrones. Le même groupe de disponibilité peut contenir plus de cent bases.

Gestion de la stratégie (règles d'administration – gestion des règles)[[[[modifier | changer le code]

Il est possible de créer des règles de gestion et de planifier leur fonctionnement. Cela consiste à vérifier un attribut d'une facette, via une règle qui peut être vérifiée de différentes manières. Quelques exemples:

  • vérifier une fois par jour que chaque base de données a été sauvegardée
  • forcer une règle de nommage pour les tables, les vues et les procédures
  • interdire l'utilisation systématique du schéma SQL par défaut dbo

Instantané de base de données[[[[modifier | changer le code]

Ce processus crée une nouvelle base de données à partir d'une base de données existante qui représente les données au moment du démarrage de "l'instantané". Cette copie, en lecture seule, est faite instantanément quel que soit le volume de la base de données initiale. Cela permet par exemple:

  • pour obtenir avec certitude toutes les données de la base de données à un moment précis
  • pouvoir comparer en cours de développement les données initiales et finales après l'exécution d'une procédure
  • revenir en arrière soit par demande de modification inter-base, soit en restaurant la base de données à partir de l'instantané

partitionnement[[[[modifier | changer le code]

Présent depuis la version 2005 dans l'édition Enterprise, le partitionnement permet de couper des tables et des index en fonction d'un critère de données de la table. la solution réutilisable est très simple et repose sur trois étapes:

  • La création de valeurs pivotantes de partitionnement via une fonction de partitionnement (CREATE PARTITION FUNCTION …);
  • La création d'un schéma de distribution des partitions dans les différents espaces de stockage (CREATE PARTITION SCHEME …);
  • La création de la table ou de l'index exploitant le schéma de partitionnement à l'aide d'un critère qui doit être une colonne non NULL présente dans la définition de l'objet.

Une fois ces étapes terminées, la fonction de partitionnement et le schéma peuvent être réutilisés pour un autre objet à des fins d'alignement de partition, comme cela peut être le cas d'une table de factures et de sa table de détail subordonnée ou de sa facture.

Il est alors possible de gérer les partitions (déplacer, fusionner, couper …) à l'aide des commandes ALTER PARTITION FUNCTION … SPLIT RANGE / MERGE RANGE et ALTER TABLE … SWITCH PARTITION … qui font la main immédiatement et agissez à bas niveau, en arrière-plan, pour effectuer les mouvements.

Plan de maintenance[[[[modifier | changer le code]

Microsoft SQL Server propose de nombreux assistants pour des tâches souvent peu rémunératrices, telles que l'importation / l'exportation de données ou la sauvegarde / la restauration. Mais s'il s'agit d'un outil très utile pour le débutant, c'est l'outil de gestion du plan de maintenance qui permet d'effectuer en quelques clics toutes les tâches essentielles à la survie et au maintien des performances d'une base de données. Entre autres choses, cet outil vous permet d’effectuer les tâches suivantes de manière récurrente:

  • sauvegarde;
  • vérification de l'intégrité physique;
  • défragmenter les index;
  • recalculs de statistiques.

… et planifier l'exécution.

Gouverneur de ressources[[[[modifier | changer le code]

Parce que la cohabitation sur le même niveau d'égalité de tous les utilisateurs d'une même base peut rapidement poser problème, SQL Server intègre un gouverneur de ressources permettant d'allouer plus ou moins de ressources (RAM, CPU, disques, etc.) à un groupe particulier des utilisateurs. Le cas classique est la combinaison d'utilisateurs friands de tableaux de bord et de toutes sortes d'états (par exemple, les contrôleurs de gestion) très consommateurs de données, pénalisant la production de données d'utilisateurs effectuant une saisie unitaire …

Gestion de la qualité des données[[[[modifier | changer le code]

SQL Server intègre deux modules distincts pour gérer des données de qualité dans des bases de données:

  • Services de qualité des données (DQS): permet de contrôler la qualité des données de bases de données relationnelles et décisionnelles de manière interactive et via une base de connaissances: nettoyage, correction, enrichissement, normalisation, déduplication …
  • Master Data Services (MDS): est la solution de gestion des données de référence SQL Server.

Service d'envoi d'email intégré[[[[modifier | changer le code]

La messagerie de base de données est l’outil de gestion de la soumission d’e-mail de SQL Server basé sur Service Broker. Ce système permet de définir plusieurs profils d'envoi de courrier (par exemple un pour les applications et l'autre pour l'administration) avec une redondance éventuelle des serveurs SMTP. L'envoi de courrier électronique est notamment utilisé par l'agent SQL pour signaler parfois les succès, mais souvent les échecs, les tâches planifiées (par exemple, une sauvegarde n'a pas pu être effectuée). La procédure msdb.dbo.sp_send_dbmail est utilisée pour envoyer un courrier électronique, y compris les pièces jointes, les résultats de la requête, le contenu sous forme de texte ou enrichi …

SQL Server est riche en outils d'audit, que ce soit pour la sécurité, l'évolution des données ou les performances. Nous allons décrire quelques-uns.

Audit de sécurité (Audit de base de données)[[[[modifier | changer le code]

En plus de l’audit C2 obsolète qui doit être remplacé par les Critères communs (ISO 15408), SQL Server permet de tracer tout ce qui concerne la sécurité via l’audit de la base de données, ainsi que toutes les actions possibles au niveau du serveur et au niveau de la sécurité. une base de données particulière.

Ce système est perfectionné au point qu'il est possible d'arrêter automatiquement le serveur en cas de défaillance du système d'audit, afin que les intrus ne profitent pas de cet état de dysfonctionnement de la traçabilité pour effectuer des manœuvres illicites!

Évolution des données[[[[modifier | changer le code]

SQL Server propose deux modes de tracé automatique de l'évolution des données (INSERT, UPDATE, DELETE …):

  • CHANGEMENT DE SUIVI: disponible à partir de l'édition Standard vous permet d'indiquer quelles lignes de quelles tables ont évolué dans une période cible et configurable.
  • MODIFICATION DE CAPTURE DE DONNEES (CDC): disponible dans l'édition Enterprise, copie les informations de mise à jour dans les tables de travail avec la date et l'heure des modifications apportées.

CHANGE TRACKING oblige à scruter les tables de la base, mais soulage le volume global, tandis que CDC n'interroge pas les données de production afin de libérer le verrou.

Ces deux modules sont généralement utilisés, l'un ou l'autre, pour alimenter le mode différentiel d'un grand entrepôt de données.

les performances[[[[modifier | changer le code]

La quantité d’outils est tellement importante que de nombreux utilisateurs les ignorent, en cherchant ailleurs dans les outils tiers – payant souvent – ce qu’ils ont déjà et gratuitement.

Vue de gestion des données (DMV)[[[[modifier | changer le code]

Ce sont des données système qui présentent des statistiques d’exécution du moteur SQL utilisables sous forme tabulaire par pseudo-vues (en fait, la plupart du temps, les fonctions internes renvoient un état tabulaire des données collectées en mémoire). Cela permet d’établir différents diagnostics tels que:

  • temps d'attente: sys.dm_os_wait_stats
  • l'activité en cours sur le serveur: sys.dm_exec_connections, sys.dm_exec_sessions, sys.dm_exec_requests;
  • utilisation et fragmentation d'index: sys.dm_db_index_usage_stats, sys.dm_db_index_operational_stats, sys.dm_db_index_physical_stats;
  • les indices manquants estimés: sys.dm_db_missing_index_details, sys.dm_db_missing_index_groups, sys.dm_db_missing_index_group_stats;
  • les processus les plus coûteux: sys.dm_exec_query_stats, sys.dm_exec_procedure_stats, sys.dm_exec_trigger_stats;
  • transactions (et leurs verrous corollaires): sys.dm_os_tran_ * (plus de 10 DMV) …
  • gestion du cache: sys.dm_os_memory_ * (plus de 10 DMV) …
  • gestion des fichiers: sys.dm_db_file_space_usage, sys.dm_db_log_space_usage, sys.dm_io_virtual_file_stats, sys.dm_os_volume_stats …
  • les threads: sys.dm_os_threads, sys.dm_os_tasks, sys.dm_os_workers, sys.dm_os_dispatcher_pools, sys.dm_os_nodes …

Rapports[[[[modifier | changer le code]

Basés sur les DMV, les rapports exploitent et présentent les données de manière synthétique. Ils sont disponibles à différents niveaux de l'arborescence de l'explorateur d'objet de SQL Server Management Studio, principalement, au niveau serveur (base).

Compteurs de performance[[[[modifier | changer le code]

SQL Server publie de nombreux compteurs de performances requises directement par SQL ou analysables via l’analyseur de performances (perfmon.exe). Ces compteurs sont lisibles dans la vue sys.dm_os_performance_counters.

Alertes[[[[modifier | changer le code]

SQL Server permet de mettre en place un agent SQL des alertes sur les erreurs ou des métriques franchises à un interrogateur des données des compteurs de performance ou via WMI (Windows Management Instrumentation). Ce type d'alerte permet par exemple d'être informé par courrier électronique de la saturation des journaux de transaction ou du remplissage des disques du serveur.

Assistant de paramétrage du moteur de bases de données (Database Engine Tuning Advisor)[[[[modifier | changer le code]

Cet outil permet d'effectuer un diagnostic de pose d'index, de statistiques, de partitionnement ou de création de vues indexées quand il lui fournit un lot de requêtes.

Profiler SQL[[[[modifier | changer le code]

Le profileur SQL permet de modifier les requêtes avant et après exécution afin de fournir les métriques d'analyse des finitions d'analyse dans le but mais dans le but d'améliorer les performances (bien qu'il existe un mode "désapprouvé" de voir le code obsolète de certaines applications).

Ces données sont enregistrées dans une table ou un fichier (transférable dans une table) et doivent ensuite être analysées. Différents modèles permettent de réduire les niveaux de finesse de calcul.

Le modèle "replay" permet de capturer une charge et ses métriques qui peuvent être rejouées dans les mêmes conditions (simulation des utilisateurs en parallèle) à des fins de test, notamment pour des évolutions de versions de SQL Server, comme de matériel. Pour télécharger et comparer, il faut utiliser le package RML disponible gratuitement sur le site de Microsoft.

Événements étendus (XE: eXtended Events)[[[[modifier | changer le code]

En complément et futur remplaçant du profileur, XE permet une intrusion plus profonde que le profileur puisse ensuite être scrupuleusement presque tous les métriques des opérations en mémoire, dans les threads ou les IO (niveau système). Cela a déjà été fait.

Collecteur de données[[[[modifier | changer le code]

Parce que les données de DMV sont par principe volatiles (elles sont perdues à chaque redémarrage) ou limitées (dans un anneau mémoire) il a été décidé de les créer. les sources différentes (DMV). Pour ce faire, une base de données de collecte doit être créé et vous devez créer différents collecteurs prédéfinis, ou bien créer vos propres collecteurs.

Replay distribué[[[[modifier | changer le code]

Ce dispositif permet de rejouer l'activité d'un serveur capturé par une trace du Profiler SQL, en simulant une activité proche de la réalité, par le biais d'une distribution des requêtes sur les différents postes de travail tout orchestré par un contrôleur. A titre d'exemple, vous êtes sur la dernière version de SQL Server pour l'exécution d'une application sur une nouvelle version de SQL Server ou lors d'un changement de machine (amélioration des performances).

Microsoft SQL Server propose plusieurs fonctionnalités:

Langages[[[[modifier | changer le code]

Pour les requêtes, SQL Server utilise le langage SQL dans les dialectes les plus conformes à la norme SQL, Microsoft se réserve le droit de se tromper de version en version quelques instants de la version héritée du moteur Sybase. Le dialecte utilisé est le T-SQL (Transact-SQL), une implémentation de SQL qui prend en charge les procédures stockées, les fonctions utilisateurs ou UDF (fonction définie par l'utilisateur) et les déclencheurs (déclencheur). Les langages XQuery et XPath sont utilisés à différents niveaux pour manipuler les données XML au sein même des requêtes SQL.

Pour les transferts de données, SQL Server utilise le format TDS (Tabular Data Stream) qui a été implémenté dans d'autres bases de données (en particulier dans son homologue Sybase) et dont les spécifications sont publiques. Une implémentation Open Source d'un client TDS est disponible et constitue la base du client SQL Server du projet Mono: FreeTDS[[[[2].

SQL Server étant doté de deux moteurs de bases de données, l&#39;un relationnel et l&#39;autre décisionnel, il est possible de faire des requêtes en langage MDX ou DMX spécifique à l&#39;analyse de données pour les bases décisionnelles.

Liens d&#39;intégrité[[[[modifier | changer le code]

Dans le moteur relationnel de SQL Server, il est possible de définir des liens entre les tables par le biais de contraintes déclaratives de façon à garantir fortement l&#39;intégrité des données entre table de référence et table fille. Ces liens d&#39;intégrité peuvent être utilisés pour modifier ou supprimer en chaîne des lignes liées et supportent les règles d&#39;évolution de type NO ACTION, CASCADE, SET DEFAULT et SET NULL.

Transactions[[[[modifier | changer le code]

SQL Server est un SGBD transactionnel. Il est capable de préparer des modifications sur les données d&#39;une base et de les valider ou de les annuler de façon atomique, c&#39;est-à-dire en "tout ou rien". Cela garantit la cohérence et l&#39;intégrité des informations stockées dans la base. Lors d&#39;une transaction, les ensembles de données contenant les lignes de données en cours de modification par cette transaction sont verrouillés. Les autres utilisateurs doivent attendre la fin de la transaction pour pouvoir les modifier à nouveau. En revanche, les utilisateurs concurrent peuvent éventuellement lire les données, mêmes verrouillées en modification par une autre transaction, en fonction du niveau d&#39;isolation choisit.

Niveau d&#39;isolation et verrouillage[[[[modifier | changer le code]

Les verrouillages s&#39;effectuent au niveau des lignes, pages, extensions, tables ou base de données. SQL Server ne verrouille que les ressources dont il a besoin (par défaut les lignes) et en fonction des besoins peut verrouiller à un niveau plus élevé (partition ou table). Cela évite aux utilisateurs d&#39;attendre la fin d&#39;une transaction pour mettre à jour des lignes de données qui n&#39;ont pas été touchées par une modification et permet de diminuer la quantité de ressources consommées. Le verrouillage peut être pessimiste – les utilisateurs concurrents ne pourront accéder aux lignes de cette transaction – ou optimiste – dans ce cas les utilisateurs concurrent pourront accéder à la dernière version des lignes.

Pour assurer ce fonctionnement, SQL Server permet de piloter le niveau d&#39;isolation de six manières différentes. Les 4 niveaux prévus par la norme SQL

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

… qui repose sur le verrouillage pessimiste et deux niveaux "optimistes" :

  • SNAPSHOT
  • READ COMMITTED SNAPSHOT

Le niveau d&#39;isolation étant dynamique, il peut donc changer au cours d&#39;une même transaction. Le niveau d’isolation READ COMMITTED SNAPSHOT opère exactement à la manière d&#39;Oracle ou de PostGreSQL en substituant au niveau d’isolation READ COMMITTED un versionnement des lignes pour un verrouillage optimiste.

Journalisation des transactions[[[[modifier | changer le code]

SQL Server permet de jouer les transactions de trois manières différentes :

  • validation automatique : validation ou annulation (en cas d&#39;erreur) immédiate de chaque ordre SQL lancé (par défaut) ;
  • mode implicite : la connexion entame une transaction et la finalisation (COMMIT ou ROLLBACK manuel) termine la transaction pour en commencer une nouvelle (SET IMPLICIT_TRANSACTIONS ON) ;
  • mode explicite : l&#39;initialisation d&#39;une transaction doit de faire par la commande BEGIN TRANSACTION.

Contrairement à Oracle ou PostGreSQL, SQL Server transactionne même les ordre du DDL (CREATE, ALTER, DROP…) et du DCL (GRANT, REVOKE…).

Il est possible de définir des points de contrôle de la transaction (commande SAVE TRANSACTION) afin de permettre une annulation partielle (ROLLBACK…).

Les transactions sont enregistrées dans le journal de transaction ("UNDO log"), les modifications des données sont immédiatement disponibles en mémoire et seront écrites dans les fichiers de données lors de points de contrôle (check point) lancés de manière périodique et asynchrone. Il est cependant possible de forcer un point de contrôle grâce à l&#39;instruction CHECKPOINT.

Le journal des transactions enregistre différemment les données et cela de trois manières différentes :

  • Mode complet : toutes les modifications sont enregistrées dans le journal. Les transactions terminées dont les données sont écrites sur le disque seront supprimées du journal de transaction lors des sauvegardes transactionnelles.
  • Mode journalisé en bloc (BULK LOGGED) : journalise de façon minimale les opérations reproductibles (par exemple insertion de données de fichiers, construction d&#39;index…). Ce mode permet d&#39;accélérer le fonctionnement du journal. Mais comme dans le mode complet, le journal devra être purgé par une sauvegarde transactionnelle.
  • Mode simple : mode similaire au mode journalisé en bloc, à l&#39;exception du fait que le journal est auto-purgé à chaque point de contrôle.

Dans les modes complet et journalisé en bloc, il faut sauvegarder le journal de transaction périodiquement ("REDO log"), sous peine de le voir grossir indéfiniment. Et grâce à la sauvegarde transactionnelle il est possible de restaurer la base telle qu&#39;elle était à n&#39;importe quel point du temps à la seconde près ou à la transaction près (avec cependant quelques limites pour le mode journalisé en bloc).

Il est possible d&#39;imbriquer des transactions mais comme le concept de transaction est un état de la transaction, il n&#39;est pas possible par ce biais de faire des annulations partielles. Il existe cependant d&#39;autres moyens pour préserver une partie des données de l&#39;annulation de la transaction, notamment par le biais des variables table.

SQL Server supporte les transactions distribuées via DTC (Database Transaction Coordinator) qui implémente le "commit à deux phases" conformément au modèle XA.

des dossiers[[[[modifier | changer le code]

Les bases de données sont contenues physiquement dans des fichiers. Les fichiers portent généralement les extensions :

  • MDF (Main Database File) pour le premier fichier de données, comportant certaines pages techniques vitales
  • NDF (Next Database File) pour les autres fichiers de données
  • LDF (Log Database File) pour les fichiers du journal de transaction

Les fichiers sont divisés en blocs de 8196 octets appelés pages et organisées par ensembles de 8 pages consécutives appelées extensions. Jusqu&#39;à la version 2000, les lignes étaient limitées à une taille maximale de 8060 octets (les colonnes de type LOBs (image, text, ntext) n&#39;étant pas comptabilisées dans cette limite). Depuis la version 2005 il est possible de dépasser largement cette limite et d&#39;aller jusqu&#39;à 2 milliards d&#39;octets. En revanche la taille utile de la page est de 8096 octets.

Les bases de données ne peuvent fonctionner que lorsque tous les fichiers sont présents.

Les fichiers de données sont regroupés logiquement dans la base de données dans des groupes de fichiers qui constituent la destination des objets de la base (table, index…) Un groupe de fichier est considéré comme l&#39;unité de stockage de toute table ou index et si ce groupe contient plusieurs fichiers, alors SQL Server répartit les données dans tous les fichiers (équivalent à un RAID 0), les opérations de lecture et d&#39;écriture étant effectuées en parallèle dans les différentes fichiers, sous le contrôle direct du moteur de stockage de SQL Server. Ces fichiers et groupes de fichiers peuvent être sauvegardés de façon indépendante même s&#39;il existe une interdépendance logique entre les objets d&#39;un fichier et d&#39;un autre (intégrité référentielle en particulier).

Sécurité[[[[modifier | changer le code]

Du fait de son aspect multibase, SQL Server dispose d&#39;une sécurité à deux niveaux : niveau serveur, par le biais des comptes de connexion, et niveau base, par le biais des utilisateurs SQL.

À partir de la version 2005, de profondes modifications de sécurité ont eu lieu dans la stratégie de SQL Server.

En sus, la stratégie de sécurité porte aussi sur les fonctionnalités du serveur. Par exemple, la procédure stockée xp_cmdshell[[[[3] permettant de lancer des commandes systèmes est désactivée, et seul le DBA peut la réactiver. De même, dès ouverture du serveur, tous les fichiers de toutes les bases sont verrouillés en lecture comme en écriture afin d&#39;empêcher tout accès indésirable.

Comptes de service[[[[modifier | changer le code]

Les services exécutant chaque instance de SQL Server utilisent un compte de service (compte système pour l&#39;exécution du service Windows). Ce dernier doit être choisi avec soin pour éviter d&#39;éventuelles failles de sécurité sur le serveur. Celui-ci peut être : Service Système, Service Local (à partir de Windows 2003), Service Réseau (à partir de Windows 2003), compte utilisateur Windows local, compte utilisateur du domaine. Il est fortement conseillé de verrouiller les autorisations sur les comptes de service. Dans ce sens, et à partir de la version 2012, des comptes spécifiques aux autorisations très restreintes, sont créés lors de l&#39;installation pour chacun des services de SQL Server (SQL Server, Agent SQL, SSAS, SSIS, SSRS…).

Comptes de connexion[[[[modifier | changer le code]

Le compte de connexion permet de se connecter à une instance de SQL Server. À ces comptes, il convient de définir les privilèges qui s&#39;appliquent au niveau serveur. Le privilège minimum étant le privilège "CONNECT". Un exemple de privilège de niveau serveur est la possibilité de créer toute base de données. Dans ce cas c&#39;est le privilège CREATE ANY DATABASE.

SQL Server s&#39;appuie par défaut sur le système d&#39;authentification de Windows (Kerberos ou Natif) de qui permet d&#39;accéder à une instance SQL Server par le biais d&#39;un groupe Windows ou d&#39;un utilisateur Windows. Lors de la connexion à la base de données, l&#39;utilisateur est identifié grâce à son login Windows. Il n&#39;a donc pas besoin de donner son mot de passe lors de la phase d&#39;authentification au serveur.

Comme il existe des cas où l&#39;utilisateur ne peut pas être identifié par son login Windows (utilisation de GNU/Linux, d&#39;une page Web…) une méthode d&#39;identification directe à SQL Server peut être mise en place. Elle doit l&#39;être explicitement par l&#39;administrateur de l&#39;instance. Ceci suppose la création d&#39;un nom de compte SQL et d&#39;un mot de passe, et pour ce dernier on peut calquer la politique de conformation du mot de passe sur celle de Windows.

Lors de l&#39;accès à une ressource extérieure, le processus SQL Server agit de 3 manières différentes : par emprunt d&#39;identité lorsque la couche Windows est correctement configurée, l&#39;utilisateur ne peut accéder par l&#39;intermédiaire de SQL Server qu&#39;aux ressources auxquelles il aurait droit s&#39;il y accédait directement ; par le compte de service de l&#39;instance, lorsque l&#39;utilisateur est sysadmin et pour certaines tâches ; il ne permet pas l&#39;accès, dans tous les autres cas.
Dans le cas des comptes de connexion SQL, et pour l&#39;accès à une ressource extérieure (par exemple l&#39;envoi d&#39;un fax dans une procédure stockée) SQL Server ajoute la possibilité de créer des informations de connexion qui sont des comptes Windows enregistrés à cet effet. Les utilisateurs SQL peuvent donc être associés à ces comptes Windows pour l&#39;accès aux ressources externes.

Utilisateur SQL[[[[modifier | changer le code]

Un compte de connexion peut être mappé à un utilisateur SQL soit dans une base particulière, soit dans plusieurs voire toutes. Le nom de compte de connexion et le nom d&#39;utilisateur peuvent être différentes (et il vaut mieux qu&#39;il le soit).
Un utilisateur SQL dans une base peut être doté de privilèges qui l&#39;autorisent à lancer différentes commandes sur divers objets. Les privilèges peuvent être établis directement sur un objet de la base ou bien sur un « conteneur » comme le schéma SQL ou la base tout entière.

Exemple d&#39;attribution de différents privilèges de niveau schéma SQL à un utilisateur nomme USR_BANQUE :

 GRANT SÉLECTIONNER, INSÉRER, METTRE À JOUR, EXÉCUTER 
    NOUS SCHEMA::LA FINANCE 
    À USR_BANQUE;

Rôles[[[[modifier | changer le code]

SQL Server dispose de rôles pré-établis au niveau serveur comme au niveau base. Il est même possible de créer ses propres rôles (nouveau pour le niveau serveur depuis 2012). Un rôle étant une collection de privilèges attribuable à un compte de connexion au niveau serveur ou à un utilisateur SQL quand ce rôle a été créé pour une base spécifique.

Schéma SQL[[[[modifier | changer le code]

Un schéma étant un conteneur d&#39;objet dans une base, SQL Server permet de définir autant de schéma SQL qu&#39;on le souhaite, ceci afin d&#39;organiser les différentes objets dans la base et surtout de gérer la sécurité au niveau de schéma de manière proactive. Ainsi la création de nouveaux objets, si ces objets sont placés dans les bons schémas, automatise la mise en place de la sécurité par héritage. Il n&#39;y a donc aucune commande d&#39;aucune sorte à passer d&#39;un point de vue gestion de privilèges, pour que la sécurité soir immédiatement appliquée.

Enfin, et contrairement à certains SGBDR (Oracle par exemple) il n&#39;y a pas d&#39;intimité ni de confusion entre un schéma SQL et son propriétaire (l&#39;utilisateur qui l&#39;a créé) ce qui par exemple facilite grandement la migration d&#39;un objet d&#39;un schéma à l&#39;autre et garantit une meilleure sécurité.

Exemple de migration d&#39;une table d&#39;un schéma SQL à l&#39;autre :

 ALTER SCHEMA BANQUE TRANSFER dbo.T_CLIENT;

Chiffrement[[[[modifier | changer le code]

SQL Server permet de chiffrer les données des tables par différentes algorithmes intégrés à SQL Server. Les clefs de chiffrement et les certificats peuvent être importés depuis un fichier externe ou directement créés dans la base, SQL Server étant sa propre autorité de certification.
Il existe cependant une troisième possibilité qui consiste à utiliser un boitier électronique de génération et conservation des clefs appelé HSM (Hardware Security Module), destiné à garantir l’inviolabilité des clefs. Ces équipements électroniques se placent sur le réseau et s’autodétruisent en cas de tentative d’accès illégal que ce soit physique ou logique.

Une sauvegarde de la base incorpore toutes les clefs et certificats pour assurer chiffrement et déchiffrement. Mais la restauration d’une base sur un autre serveur que celui d’origine impose un déchiffrement suivi d’un rechiffrement. Les éléments composant l’architecture de chiffrement étant interdépendants les uns des autres depuis une clef secrète détenue au niveau de l’instance. Il est cependant nécessaire, pour procéder au chiffrement ou déchiffrement d’ouvrir la clef soit en possédant un certificat, soit en donnant le mot de passe.

SQL Server permet de chiffrer les données des tables ou de chiffrer le code des routines.

Enfin, SQL Server permet de chiffrer le stockage des données et non plus les données par le biais de TDE (Transparent Data Encryption). Les fichiers (journaux de transaction, données des tables et index) sont chiffrés au moment de l’écriture physique sur les disques et déchiffrés au moment de la lecture physique des disques vers la mémoire. Ainsi les données figurent en clair en mémoire, ce qui permet de conserver les performances tout en chiffrant l’intégralité de la base.

Tables[[[[modifier | changer le code]

Publicité pour Microsoft SQL Server 2005 sur écran vidéo géant sur un bateau-mouche à Shanghai

Les tables sont les objets qui contiennent effectivement les données dans la base. Elles sont de deux types :

  1. le tables systèmes contiennent les informations permettant le bon fonctionnement de la base de données. Par défaut sous SQL Server 2000 elles ne sont pas modifiables. Sous SQL Server 2005 de nouvelles tables systèmes apparaissent mais elles ne sont pas accessibles aux utilisateurs. Pour pouvoir toujours accéder à ces informations l&#39;équipe de développement a ajouté un grand nombre de vues systèmes. Celles-ci remplacent les anciennes tables systèmes et certaines commandes du DBCC. Un grand nombre de nouvelles vues systèmes a aussi été ajouté. Sous SQL Server tous les objets systèmes font partie du schéma sys et sont stockés dans une base de données appelée SystemResource.
  2. le tables utilisateurs contiennent les données des utilisateurs.

Une table peut contenir jusqu&#39;à 30 000 colonnes dont la somme des tailles n&#39;excède pas 2 milliards d&#39;octets. Les colonnes de types BLOBs (VARCHAR(max), NVARCHAR(max), VARBINARY(max)) étant stockées en dehors de la ligne.

Les tables peuvent être dotées d&#39;une clé primaire. La clé primaire est toujours indexée. D&#39;autres contraintes sont également disponibles au niveau des tables telles que : les contraintes uniques (automatiquement indexées), les valeurs par défaut, les contraintes de vérification (check), les clés étrangères.

Vues[[[[modifier | changer le code]

Une vue est une requête nommée de la base de données. Elle est interrogée de la même façon qu&#39;une table.

Les données renvoyées par la vue sont reconstituées à partir des données contenues dans les tables à chaque appel de la vue (sauf pour les vues indexées qui stockent les résultats). SQL Server remplace le nom des vues dans la requête qui va être exécutée par leurs définitions, puis la requête ainsi obtenue est compilée, optimisée et exécutée par le moteur. Le plan compilé de la requête ainsi obtenue est ensuite stocké pour permettre la réutilisation lors d&#39;un prochain appel. Comme SQL Server dispose d&#39;une optimisation sémantique en plus de l&#39;optimisation statistique, les branches des jointures inutiles à l&#39;exploitation d&#39;une vue sont systématiquement coupées pour optimisation, lorsque cela est possible.

Dans certaines conditions, il est possible de mettre à jour les valeurs dans une vue.
Voici des exemples de ces conditions:

  1. Une vue sur plusieurs tables ne peut modifier qu&#39;une seule de ces tables.
  2. Si la vue contient des fonctions, utilise "DISTINCT" ou "GROUP BY", la modification ne fonctionnera pas.
  3. Il ne doit pas y avoir transformation des données de colonnes (opération, appel de fonction…)
  4. La vue possède un déclencheur de type INSTEAD OF (dans ce dernier cas, la logique de modification est celle figurant dans le code du déclencheur).

SQL Server implémente des types particuliers de vues qui sont les vues partitionnées et les vues indexées (équivalent des vues matérialisées synchrones d&#39;Oracle).

Indice[[[[modifier | changer le code]

L&#39;indexation dans SQL est assurée de quatre manières : l&#39;indexation relationnelle, l&#39;indexation verticale, l&#39;indexation textuelle et l&#39;indexation spécifique à certain type d&#39;objets.

Indexation relationnelle[[[[modifier | changer le code]

Elle porte sur le contenu intégral des colonnes. Le mécanisme interne de ces index repose sur la notion d&#39;arbre équilibré (B-Tree ou Balanced Tree en anglais).

Il existe deux types d&#39;indice :

  1. Les index clusterisés (CLUSTERED INDEX)
  2. Les index non-clusterisés (NONCLUSTERED INDEX)

Il ne peut y avoir qu&#39;un seul index clusterisé par table puisque ce type d&#39;index est en fait un "tri" de la table. Les lignes de la table sont donc logiquement triées dans l&#39;ordre de l&#39;index clusterisé, ce qui explique qu&#39;il n&#39;y ne peut y en avoir qu&#39;un seul. Autrement dit, l&#39;index clusterisé étant un arbre-b, les feuilles de l&#39;index sont directement les lignes dans la table.

Un index non clusterisé ne reflète pas l&#39;ordre physique des lignes de la table.

Les deux types d&#39;index sont construits à partir d&#39;une clé, composée d&#39;un certain nombre de colonnes. Ils permettent de retrouver rapidement une donnée à partir de tout ou partie des colonne de cette clé.

Ainsi, si nous considérons une clé (A, B, C), on peut faire des recherches sur les champs (A), (A, B) et (A, B, C). Les champs sont considérés dans l&#39;ordre de la clé ; il n&#39;est donc pas possible de faire une recherche sur, par exemple (B, C) ou (C) avec cet index. En revanche une recherche sur (A, C) profitera aisément de l&#39;indexation de la colonne A.

Une table peut contenir 999 index. Chaque index peut contenir 16 colonnes dont la somme des tailles n&#39;excède pas 900 octets. Les index contiennent en plus des données des colonnes de l&#39;index un signet (bookmark) vers les données de la table. Celui-ci peut être soit un pointeur vers une ligne, soit une des clefs de l&#39;index clusterisé (en anglais : index clusterised).

L&#39;optimisateur de SQL Server choisit quel index utiliser. Il est possible qu&#39;il n&#39;utilise pas l&#39;index que vous avez créé car le coût de la recherche via cet index peut être plus grand que de lire la table au complet. Pour faire ces choix, l&#39;optimisateur utilise entre autres les statistiques de la table et la présence ou non de contraintes. Il est possible par contre de forcer l&#39;optimisateur à utiliser un index avec la clause WITH(nom_index), cette pratique n&#39;est toutefois pas recommandée.

L&#39;index est organisé en arbre-b. Ceci permet de classer plus rapidement les informations que s&#39;il fallait les insérer dans une table séquentielle. Cette disposition étant très gourmande en ressources de stockage, la version 2005 de SQL Server permet de séparer les données de recherche et des données de traitement intégrées à l&#39;index.

SQL Server permet de créer des colonnes calculées, qui, si elles sont persistantes (PERSISTED), peuvent être indexées.

Il n&#39;y a pas d&#39;autre structure d&#39;index que l&#39;arbre-b. Par exemple, on ne trouve pas d&#39;index bitmap, qui permettraient de faciliter les recherches sur des champs aux contenus peu variés, mais il suffit de créer une table de référence pour simuler un index bitmap. De la même manière il n&#39;y a pas d&#39;index en hachage. Mais il suffit de créer une colonne calculée de hachage (fonction CHECKSUM) et de l&#39;indexer pour obtenir un effet similaire. Enfin, il n&#39;est pas possible de créer un index sur expression, mais il suffit de créer une colonne calculée comportant une telle expression et de l&#39;indexer pour obtenir le même effet.

Indexation verticale[[[[modifier | changer le code]

SQL Server permet de créer des index dit "verticaux" (columnstore index) sur un ensemble de colonnes permettant d’accéder à toutes les colonnes indexées sur le même plan. En effet, dans un index relationnel multicolonne, l&#39;ordre de chaque colonne dans la clé de l&#39;index n&#39;autorise que certaines combinaison de recherches. Ce n&#39;est pas le cas avec l&#39;indexation verticale, qui permet toutes combinaisons de recherches. Par exemple, avec la clef (A, B, C), il est possible de faire des recherches aussi bien sur (A), (B) ou (C), mais aussi sur toutes combinaisons de deux ou trois colonnes (A, B), (B, A), (A, C), (C, A), (B, C), (C, B), (A, B, C), (A, C, B), (B, A, C), (B, C, A), (C, A, B), (C, B, A).

Dans la version 2012, ces index sont en lecture seule et donc essentiellement destinés aux bases de données de type DataWarehouse pour le décisionnel. Dans la version 2014, ces index sont modifiables.

Indexation textuelle et sémantique[[[[modifier | changer le code]

L&#39;indexation textuelle (en fait un catalogue d&#39;indexation) permet de faire des recherches en texte clair ("full text", conforme à la norme SQL avec le prédicat CONTAINS) ou à la manière de Google à l&#39;aide du prédicat FREETEXT. Il est permis de rechercher différents mots dans un même document (texte des colonnes d&#39;une table ou document électronique stocké dans une table) par égalité, début, proximité, mais aussi par forme fléchie (conjugaison, pluriels, féminin, etc.), synonymisation, extension (notamment pour les sigles)… ainsi qu&#39;avec des poids relatifs (fonction table CONTAINSTABLE et FREETEXTTABLE).

L&#39;indexation textuelle peut porter sur des colonnes de type chaîne de caractères ou XML, mais aussi sur des fichiers électroniques qu&#39;ils soient stockées directement en table (dans un BLOB) ou à titre de fichier par le biais du FILESTREAM ou dans un FILETABLE. SQL Server reconnait plus de 50 formats de fichier nativement et permet de rajouter de nombreux autres types de fichiers électroniques à l&#39;aide des "ifilter".

SQL Server supporte la plupart des langues et permet des recherches combinées multilingues. Pour cela des listes de "mots noirs" peuvent être établies pour chacune des langues indexées. De plus SQL Server index tous les mots sans exception y compris les mots noirs, là ou certains SGBDR se limites à des mots ayant une longueur minimale (MySQL par exemple) ou excluent les mots noirs (PostgreSQL par exemple). Enfin, si la casse n&#39;a pas d&#39;importance pour l&#39;indexation textuelle, l&#39;utilisateur peut choisir s&#39;il veut une indexation textuelle prenant en compte ou pas les caractères diacritiques, tels que les accents ou les ligatures.
L&#39;indexation textuelle permet aussi la recherche de métadonnées dans les fichiers électronique. Par exemple l&#39;auteur d&#39;un fichier Word.

Avec la version 2012, SQL Server a rajouté l&#39;indexation sémantique qui permet, comme son nom l&#39;indique de faire des recherches sémantiques. Cette fonctionnalité nécessite l&#39;ajout d&#39;une base de données de traitement sémantique destiné à établir des statistiques sur les textes indexés. la recherche sémantique porte sur la signification des documents. Ceci permet l&#39;extraction automatique de balises, la découverte de contenu connexe et la navigation hiérarchique à travers des documents ayant un contenu similaire à un texte de référence. Un exemple pratique consiste à interroger l&#39;index de ressemblance de document pour identifier dans un lot de curriculum vitæ, ceux qui correspondent le mieux à une description de poste.

Indexation des objets[[[[modifier | changer le code]

SQL Server permet l&#39;indexation de certains types de données objet, comme le XML (quatre types d&#39;index), ou le spatial (types géométrie et la géographie). Comme il est possible de rajouter votre propre objets, à condition de les décrire sous forme .NET, il est aussi possible de les indexer, à condition pour que vous vous arrangiez qu&#39;ils soient « bit ordered » dans l&#39;organisation de leur stockage.

Procédures stockées[[[[modifier | changer le code]

Il est possible de définir des procédures stockées codées en Transact-SQL comme en .NET (SQL CLR). Une procédure stockée est une suite d&#39;instructions qui peut modifier les données de la base et encapsuler des transactions et qui renvoient une ou plusieurs valeurs.

Les procédures stockées sous SQL Server peuvent prendre en paramètre et/ou retourner des entiers, des chaînes de caractère, des dates, des curseurs, des tables, des tables virtuelles et tout autre type défini dans SQL Server par défaut ou par les utilisateurs.

Les principaux avantages de l&#39;utilisation des procédures stockées sont :

  • la transaction de traitements complexes (plusieurs transactions peuvent s&#39;enchainer ou s&#39;imbriquer)
  • la sécurité accrue (le code d&#39;une procédure peut être dépersonnalisé)
  • une meilleure réutilisation des plans compilés
  • la possibilité de gérer les dépendances entre le code SQL et les objets du moteur.

Déclencheurs (trigger)[[[[modifier | changer le code]

Le déclencheur constitue du code stocké qui s&#39;exécute après (AFTER) ou à la place (INSTEAD OF) d&#39;une action particulière (insertion, modification, suppression) sur une table ou vue. Il est possible de coder autant de déclencheurs AFTER qu&#39;on le souhaite sur une même action (INSERT, UPDATE ou DELETE) d&#39;une même table ou vue. En cas de pluralité de déclencheurs sur une même action d&#39;une même table, l&#39;ordre des déclencheurs est arbitraire, sauf pour les 3 premiers que l&#39;on peut imposer. Les déclencheurs INSTEAD OF doivent être uniques par événement/table.

Deux tables virtuelles sont créées pour manipuler les données insérées, modifiées ou supprimées : inséré (pour l&#39;insertion et la modification) et supprimé (pour la suppression et la modification). Il est impossible de modifier le contenu de ces tables virtuelles. En revanche, SQL Server permet de modifier la table cible du déclencheur, comme d&#39;annuler la transaction implicite qui a déclenché le trigger par annulation de la transaction (ROLLBACK).

Le déclencheur particulier INSTEAD OF est utilisable lorsque l&#39;on souhaite intercepter l&#39;événement, ne pas le laisser se dérouler, mais coder une autre action. Ce type de déclencheur est utilisable par exemple dans le cadre d&#39;un mapping relationnel/objet où l&#39;on manipule des vues composées de multiples jointures où l&#39;on souhaite que l&#39;utilisateur puisse faire des mises à jour (INSERT, UPDATE, DELETE) directement sur ces vues. Dans ce cas, les données INSERT, UPDATE ou DELETE sont découpées pour chacune des tables en jeu et une série d&#39;ordres spécifiques à chaque table à mettre à voir est lancée au travers une transaction.

Depuis SQL Server 2005, la possibilité de créer des triggers DDL a été ajoutée. Ces déclencheurs DDL agissent après apparition des événements de type CREATE, ALTER ou DROP, et ces événements peuvent être interceptés au niveau du serveur (par exemple un CREATE DATABASE) ou au niveau de la base (par exemple un DROP TABLE). Pour obtenir des détails sur l&#39;événement intercepté, un paquet de données XML (que l&#39;on obtient par la fonction EVENTDATA()) donne de multiples précisions sur l&#39;origine et la nature de l&#39;événement. On y trouve même la requête SQL qui l&#39;a déclenché.

Un type particulier de déclencheur permet d&#39;intercepter les connexions au serveur (trigger FOR LOGON).

Fonctions (UDF : User Defined Function)[[[[modifier | changer le code]

Depuis SQL Server 2000, il est possible de créer des fonctions en Transact SQL et depuis 2005 en .net (SQL CLR).

Ces fonctions sont de 3 types :

  • Scalaire : Plusieurs instructions renvoient alors une valeur de type simple
  • Table à instructions multiples : plusieurs instructions renvoient alors une table
  • Table en-ligne (vue paramétrée) : une instruction de type SELECT renvoie une table

Il existe cependant des restrictions quant aux fonctionnalités utilisables dans le corps d&#39;une fonction. Il n&#39;est pas possible d&#39;utiliser de fonctions non déterministes et la fonction ne doit pas modifier des données ou des paramètres système de manière permanente ou durable. Ce qui interdit par exemple l&#39;utilisation d&#39;un INSERT sur une table ou l&#39;utilisation de la fonction GETDATE().

SQL Server 2005 a rajouté :

  • la possibilité de créer des fonctions d&#39;agrégation (calcul statistique) par l&#39;intermédiaire de CLR, c&#39;est-à-dire d&#39;un codage à l&#39;aide d&#39;un langage de la plate-forme .net ;
  • des fonctions particulières liées au partitionnement des données (PARTITION FUNCTION).

À la différence d&#39;une procédure stockée, une fonction ne peut pas contenir :

  • d&#39;ordre déterminant les frontières d&#39;une transaction (BEGIN TRANSACTION, COMMIT, ROLLBACK)
  • d&#39;ordre de mise à jour des données (INSERT, UPDATE, DELETE, SELECT), sauf pour les fonctions table multi-instructions et ce uniquement pour la table de retour.
  • de code non déterministe (barrière partiellement levée avec SQL Server 2005, les fonctions telles que GETDATE étant autorisées, mais RAND est toujours interdite)
  • de SQL dynamique
  • de curseur
  • d&#39;un appel de procédure stockée

C&#39;est logique, car le but d&#39;une fonction est avant tout d&#39;être utilisée au sein d&#39;une requête.

Aspects objet[[[[modifier | changer le code]

Depuis la version 2005, SQL Server incorpore des aspects objets parmi lesquels on trouve :

  • la possibilité de réaliser des types complexes structurés via un langage externe de type .net et de les utiliser aussi bien en tant que colonne de table qu&#39;en tant que type d&#39;une variable dans une routine (procédure, déclencheur ou fonction).
  • le type XML interrogeable via XQuery/XPath et indexable. SQL server intégrant un parseur XML et des procédures de manipulation de flux XML.
  • la possibilité de générer un flux XML à partir du résultat d&#39;une requête SELECT à la place d&#39;un "dataset".
  • le type hierarchyId (apparu en version 2008) facilitant la structuration des données hierarchique (arbres).
  • un véritable SIG (Système d&#39;Information Géographique – apparu en version 2008) avec l&#39;arrivée des types GEOMETRY et GEOGRAPHY au standard OGC avec l&#39;interfaçage sous forme WKT (Well known text) ou WKB (Well Known Binary), et dotés de nombreuses méthodes de manipulation.
  • l&#39;implantation de services Web que l&#39;on peut créer directement dans le SGBDR.
  • le stockage de fichiers sous la responsabilité exclusive ou partielle du SGBDR (FILESTREAM) et leur manipulation transactionnelle permettant une sauvegarde cohérente des données relationnelles et non relationnelles (très utile pour une GED par exemple) – @À partir de 2008.
  • la représentation transparente sous forme de tables (FILETABLE) des arborescences de stockage des fichiers de l&#39;OS Windows (répertoires et fichiers) et leur manipulation par des requêtes SQL – à partir de 2012.

SQL Server Management Studio (SSMS)[[[[modifier | changer le code]

Cet outil est fourni avec les versions payantes de SQL Server. Il permet de se connecter et d&#39;administrer les différents moteurs SQL Server (SSRS, SSIS, SSAS et le moteur relationnel). Il permet pour le moteur relationnel de développer des scripts TSQL, avec la possibilité de regrouper l&#39;ensemble de ceux-ci au sein d&#39;une solution (comme sous Visual Studio). On peut aussi enregistrer ceux-ci grâce à Visual SourceSafe ou Team Foundation Server. Pour la version Express (gratuite) l&#39;outil simplifié SQL Server Management Studio Express Edition (SSMSE) est disponible gratuitement.

Avant 2005 cet outil était séparé en deux modules appelés "Enterprise Manager" et "Query Analyzer".


SQL Server Business Intelligence Development Studio / SQL Server Data Tools[[[[modifier | changer le code]

Tout comme SSMS, cet outil est fourni avec les versions payantes de SQL Server. Il s&#39;agit d&#39;une surcouche de l&#39;outil générique de développement Microsoft Visual Studioadapté pour la création de projets BI (Analysis Services, Integration Services ou Reporting Services). Tous ces projets se retrouvent dans le groupe "Projets Business Intelligence".

Profiler (générateur de profil)[[[[modifier | changer le code]

Cet outil permet de capturer l&#39;activité d&#39;une base de données. Il permet aux administrateurs de vérifier les éléments et les requêtes qui prennent du temps sur la base de données. Éventuellement, il est possible de rejouer la capture sur un serveur de test. Il a tendance à être progressivement remplacé par le système des "événements étendus" (eXtended Events).

En fait MS SQL Server est une suite composée de cinq services principaux :

  • Le moteur relationnel (OLTP) appelé SQL Server ;
  • Le moteur décisionnel (OLAP) appelé SSAS (SQL Server Analysis Services) incluant un moteur de stockage pour les cubes, des algorithmes de forage (exploration de données) et différents outils de BI (Business Intelligence) ;
  • Un ETL (Extract Transform and Load) appelé SSIS (SQL Server Integration Services) destiné à la mise en place de logiques de flux de données, notamment pour alimenter des entrepôts de données (data warehouse) ;
  • Un outil de génération d&#39;état appelé SSRS (SQL Server Reporting Services) permettant de produire des rapports sous différentes formes et exploitant les ressources du moteur décisionnel (bases "resportServer…") à la fois pour y stocker les rapports mais aussi y cacher les données de ces derniers afin de faire du "warmup" ;
  • Un système de planification de travaux et de gestion d&#39;alerte appelé Agent SQL qui utilise lui aussi les services du moteur SQL (base msdb).

D&#39;autres services lui sont associés pour certains besoins :

  • SQL Full-Text Filter Daemon launcher : pour charger certains documents (thésaurus et dll ifilter) externe nécessaires à la recherche "plain texte"
  • SQL Browser : service de diffusion des services SQL destiné à faciliter la recherches des services SQL sur le réseau
  • MS DTC (Data Transaction Coordinator) : coordinateur de transactions distribuées, utilisé pour des mises à jour en validation à deux phases (2PC) combinant différents serveurs transactionnels, pas forcément du monde Microsoft (XA, X/Open, TIP, WS…)

SQL Server inclut aussi de nombreux outils de développement :

  • pour les bases transactionnelles, par le biais du SQL Server Management Studio (SSMS)
  • pour les bases décisionnelles, le forage des données, le reporting et l&#39;ETL, par le biais d&#39;une surcouche de Visual Studio appelé BIDS (Business Intelligence Development Studio) puis SQL Server Data Tools depuis la version 2012.

Plus d&#39;une centaine d&#39;outils périphériques sont disponibles, soit lors de l&#39;installation (SQL Profiler, Database Tuning Advisor, Data Collector…), soit directement sur le site de Microsoft (SQLdiag, SQLioSim, SQL Server Best Practices Analyzer…), soit à travers le site communautaire opensource Codeplex (RML Utilities, PAL, Open DBDiff…).

Une instance de SQL Server est une installation de tout ou partie des services SQL Server sur une machine Windows et peut héberger de nombreuses bases de données. Un même OS supportant jusqu&#39;à 50 instances différentes (ce qui n&#39;est pas conseillé en production).

SQL Server 2014 n&#39;est pas limité en nombre de cœurs ou de RAM, que par la capacité de Windows. Une base est cependant limitée à 524 pétaoctets (Po), mais comme SQL Server est multibase et peut héberger 32760 bases dans une même instance, la capacité globale du système permet de prendre en charge théoriquement 17 166 240 Po de données. Avec 50 instances sur une même machine, cette limite théorique est repoussée à 858 312 000 Po

SQL Server existe en différentes éditions : CE (Compact Edition – solution embarquée pour les smartphones), Express (plusieurs déclinaisons – gratuite), Web (en mode SPLA : Service Provider License Agreement – auprès d&#39;hébergeurs Web), Standard, BI et Enterprise – ceci pour la production. L&#39;édition Developper (équivalente à l&#39;édition Enterprise) est destinée au développement.

SQL Server[[[[modifier | changer le code]

Il s&#39;agit du moteur de bases de données. À chaque instance de SQL Server correspond un service Windows Sql Server. Ce service peut être repéré dans les services Windows sous les noms MSSQL€Nom_instance pour les instances nommées et MSSQLServer pour l&#39;instance par défaut.

Chaque instance créée possède au départ 4 à 6 bases de données systèmes. Le moteur SQL Server s&#39;appuie sur la base de données système maîtriser qui contient la définition des autres bases de données.

Les autres bases systèmes sont :

  • msdb : utilisée par l&#39;agent SQL Server, la réplication, Data Transformation Services, Integration Services…
  • modèle : utilisée comme modèle pour créer de nouvelles bases de données. Toute nouvelle base de données est une copie de celle-ci.
  • tempdb : Base de données temporaire, elle sert à stocker les données temporaires créées par des utilisateurs ou générées par des curseurs, des créations d&#39;index, lors d&#39;un tri volumineux. Sous SQL Server 2005, elle contient aussi les versions d&#39;enregistrement générées par les niveaux d&#39;isolation SNAPSHOT, le contenu des pseudo tables inserted et deleted utilisées dans les triggers et celles générées par les opérations d&#39;index en ligne. Cette base de données système est systématiquement vidée au démarrage du service SQL Server.
  • Distribution : N&#39;est présente que dans le cadre d&#39;une réplication si votre serveur joue le rôle du distributeur.
  • mssqlsystemresource : Présente uniquement à partir de SQL Server 2005. Elle n&#39;est pas accessible directement, et elle contient tous les objets systèmes (hors tables).

SQL Server Agent[[[[modifier | changer le code]

Il s&#39;agit de l&#39;agent de maintenance de l&#39;instance de SQL Server. À chaque instance de SQL Server correspond un service Windows Sql Server Agent. Ce service peut être repéré dans les services Windows sous les noms SQLAgent€Nom_instance pour les instances nommées et SQLAgent pour l&#39;instance par défaut.
Le moteur SQL Server Agent s&#39;appuie sur la base msdb.
Ce moteur permet de gérer les sauvegardes, les plans de maintenance, les travaux planifiés, la surveillance de la base, les alertes administratives…

L&#39;Agent a aussi comme rôle la surveillance du service de SQL Server et le déclenchement automatique du redémarrage de celui-ci en cas d&#39;arrêt inattendu.

Full Text Search[[[[modifier | changer le code]

Moteur d&#39;index / recherche de texte intégral.

Distributed Transaction Coordinator[[[[modifier | changer le code]

Connu aussi sous le nom de MS DTC, sert à gérer les transactions distribuées.
C’est-à-dire les transactions entre plusieurs serveurs de transactions SQL Server, entre un serveur SQL Server et des serveurs de base de données autres, entre plusieurs sources de données différentes, qu&#39;ils soient des moteurs de base de données ou de simples composants.

Notification Services[[[[modifier | changer le code]

Service apparu sous SQL Server 2000 permet de requêter régulièrement la base de données et en fonction de ces requêtes de notifier des groupes abonnés à ces évènements.
Ce service n&#39;est plus fourni en standard depuis SQL Server 2008. SQL Server nom de code Denali, apporte néanmoins une fonctionnalités similaire dans SQL Server Reporting Services et Sharepoint 2010, connu sous le nom d&#39;Alerting.

Décisionnel[[[[modifier | changer le code]

La plate-forme décisionnelle SQL Server se compose d&#39;un ETL, apparu avec SQL 7, d&#39;un moteur multidimensionnel, également apparu sous SQL 7 et d&#39;un moteur de rapports, ajouté en 2004 sous SQL 2000.
Avec la version SQL Server 2005, un studio de développement destiné au métier du décisionnel a été intégré dans Visual Studio 2005 : BI development Studio.

Cartographie[[[[modifier | changer le code]

SQL Server 2008 supporte de nouveau type de données primitives : le type géographique où intervient une projection (latitudes et les longitudes) et le type géométrique sans projection pour manipuler les données relatives aux points, aux lignes et aux polygones. Le premier logiciel compatible SQL Server a été le logiciel Manifold System (en) puis Mapinfo, Geomédia.

Integration Services (SSIS : SQL Server Integration Services)[[[[modifier | changer le code]

Service apparu sous SQL Server 2005, il est le remplaçant de Data Transformation Services (DTS). L&#39;ETL a été complètement reconstruit, et se positionne en concurrence des autres outils ETL professionnels du marché.

L&#39;objectif est l&#39;intégration de l&#39;entreprise par ses données. SQL Server Integration Services (SSIS) est une plate-forme complète d&#39;intégration de données. SSIS, n&#39;est pas un simple ETL. C’est une plate-forme complète d’intégration de données, offrant un certain nombre d’outils graphiques de développement et de gestion, de services, d’objets programmables et d’interfaces API (Application Programming Interfaces). SSIS contient un moteur de workflow prenant en charge une logique complexe et peut être utilisé pour un large éventail d’opérations de maintenance de base de données et d’opérations sophistiquées de transfert de données. L’architecture SSIS est essentiellement composée de deux parties : le moteur d’exécution de transformation de données, qui gère le flux de contrôle d’un package, et le moteur de flux de données ou moteur de pipeline de transformation de données, qui gère le flux des données à partir des sources de données, via les transformations et jusqu’aux cibles de destination.

Analysis Services[[[[modifier | changer le code]

SQL Server Analysis Services (SSAS)[[[[4],[[[[5] est un service apparu sous SQL Server 7, connu à cette époque sous le nom de OLAP Services. Il permet de générer des cubes OLAP, données agrégées et multidimensionnelles. Il permet également d&#39;implémenter des algorithmes de Data Mining.

Reporting Services[[[[modifier | changer le code]

Ce service[[[[6] apparu sous SQL Server 2000 est un moteur de génération d&#39;états. Deux services web le composent, l&#39;un permettant son administration, l&#39;autre la génération, l&#39;abonnement, le rendu des rapports. Les rendus se font sous Excel, PDF, HTML, et Word (à partir de la version 2008).

Datacenter Edition[[[[modifier | changer le code]

Apparue avec SQL Server 2008 R2, elle supportera jusqu&#39;à 256 processeurs logiques, ainsi que la virtualisation illimitée et une quantité de mémoire illimitée.

Enterprise Edition[[[[modifier | changer le code]

Elle supporte un nombre de processeurs et une taille de mémoire vive illimités (limités par le système d&#39;exploitation).
Il existe une version 32 bits (x86) et 2 versions 64 bits (ia64 et x64, x64 uniquement pour SQL Server 2005) et n&#39;a pas de limite quant à la taille des bases de données.
Elle ne peut s&#39;installer que sur un Windows version serveur.
Inclut toutes des fonctionnalités du moteur, dont les fonctions de haute disponibilité.
Les fonctionnalités pour le décisionnel sont toutes incluses de la génération d&#39;états avec Reporting Services à l&#39;utilisation de cubes OLAP avec Analysis Services en passant par le transfert de données avec Integration Services (SQL Server 2005) ou Data Transformation Services (SQL Server 7 & 2000).
Elle peut en outre fonctionner en cluster jusqu&#39;à 8 nœuds.

Developer Edition[[[[modifier | changer le code]

Il s&#39;agit d&#39;une édition pour les développeurs qui dispose des mêmes fonctionnalités que l&#39;édition Entreprise. Cependant la licence contient des restrictions quant à son utilisation.
La licence interdit une exploitation en production. Elle est exclusivement destinée à une utilisation en Test. Cependant il n&#39;y a aucune restriction sur les produits disponibles.

Standard Edition[[[[modifier | changer le code]

Elle supporte jusqu&#39;à 4 processeurs et une taille de mémoire vive illimitée (limitée par le système d&#39;exploitation).
Il existe une version 32 bits (x86) et 2 versions 64 bits (ia64 et x64, les deux uniquement pour SQL Server 2005) et n&#39;a pas de limite quant à la taille des bases de données.
Elle ne peut s&#39;installer que sur un Windows version serveur. Cependant SQL Server 2005 permet son installation sur Windows de bureau.
Inclus toutes des fonctionnalités du moteur, sauf certaines fonctions de haute disponibilité.
Les fonctionnalités pour le décisionnel sont toutes incluses de la génération d&#39;états avec Reporting Services (pour SQL Server 2000, ce composant est à charger séparément) à l&#39;utilisation de cubes OLAP avec Analysis Services en passant par le transfert de données avec Integration Services (SQL Server 2005) ou Data Transformation Services (SQL Server 7 & 2000).
Elle peut en outre fonctionner en cluster jusqu&#39;à 2 nœuds depuis sa version 2005.

Workgroup Edition[[[[modifier | changer le code]

Nouvelle édition apparue avec SQL Server 2005.
Elle supporte jusqu&#39;à 2 processeurs et 3 Aller de mémoire vive.
Pour le moment, elle n&#39;existe qu&#39;en version 32 bits et n&#39;a pas de limite quant à la taille des bases de données.
Inclus la majeure partie des fonctionnalités du moteur, dont la possibilité de participer à une réplication en tant qu&#39;éditeur.
Les fonctionnalités pour le décisionnel incluses se limitent à la génération d&#39;états avec Reporting Services.
Cette édition disparaît avec la version 2012 de SQL Server[[[[7].

Web Edition[[[[modifier | changer le code]

Nouvelle édition apparue sous SQL Server 2008.
Proche de l&#39;édition Standard en termes de fonctionnalité, elle ne supporte cependant ni la mise en miroir, ni les composant décisionnel de SQL Server.
Sa licence ne permet son utilisation que comme serveur de base de données pour un site ou service Web.
Elle est disponible en abonnement mensuel spécialement pour les herbergeurs en plus d&#39;être disponible plus classiquement à l&#39;achat.

Personal Edition[[[[modifier | changer le code]

Édition existant avec SQL Server 7 et SQL Server 2000.
Elle supporte jusqu&#39;à deux processeurs et 2 Go de mémoire vive.
N&#39;existe qu&#39;en version 32 bits et n&#39;a pas de limite quant à la taille des bases de données.
Inclut la majeure partie des fonctionnalités du moteur, dont la possibilité de participer à une réplication en tant qu&#39;abonné.
Elle n&#39;a pas de fonctionnalités pour le décisionnel.
En termes de licence, le fait de posséder une licence d&#39;accès client (CAL) SQL Server suffit à utiliser cette édition.

Windows Internal Database / SQL Server Embedded[[[[modifier | changer le code]

Similaire à SQL Server edition Express, avec cependant les limites de mémoire, de nombre de processeurs et de taille de base de données supprimés, elle est cependant utilisable que localement et ne peut héberger que des bases de données d&#39;application Microsoft. Des produits tels que Sharepoint ou certaines fonctionnalités Active Directory de Windows s&#39;en servent.

MSDE / Express Edition[[[[modifier | changer le code]

Article détaillé : MSDE.

Microsoft a édité une édition gratuite composée uniquement du moteur de base de données relationnel, bridé à 4 Aller d&#39;espace disque (10 Aller dans la version 2008 R2). Elle permet, néanmoins de créer jusqu&#39;à 32760 bases différentes soit plus de 320 À de données à partir de la version 2008 R2.

Compact Edition[[[[modifier | changer le code]

Appelée auparavant : Pocket PC / Mobile / Everywhere Edition. Il s&#39;agit d&#39;une édition légère adaptée à l&#39;utilisation sur des PDA ou smartphones munis de Windows Mobile.
La version Compact (version 3.5), qui succède aux éditions Mobile s&#39;ouvre elle aux postes de travail classiques à base de Windows.
Cette édition peut participer à une réplication en tant qu&#39;abonné.

SQL Server supporte 5 systèmes de licences :

  • Licence par utilisateur : SQL Server peut utiliser tous les processeurs du serveur (jusqu&#39;à la version 2008 R2, maximum 16 (édition Standard) ou 20 (édition Entreprise) Cores dans la version 2012) mais est limité au nombre d&#39;utilisateurs spécifié. Chaque personne physique se servant d&#39;une application utilisant SQL Server est considéré comme un utilisateur de la base de données
  • Licence par périphérique (depuis SQL Server 2005) : SQL Server peut utiliser tous les processeurs du serveur (jusqu&#39;à la version 2008 R2, maximum 16 (édition Standard) ou 20 (édition Entreprise) Cores dans la version 2012) mais est limité au nombre de périphériques spécifié. Chaque périphérique physique accédant directement ou indirectement à SQL Server est considéré comme un utilisateur de la base de données
  • Licence par processeur : SQL Server utilise le nombre de processeurs spécifiés dans la licence et peut accepter un nombre indéfini d&#39;utilisateurs. Ce mode de licence est valable jusqu&#39;à l&#39;édition 2008 R2 et disparaît après.
  • Licence par cœur : Il faut acheter autant de licences "Core" qu&#39;il n&#39;y a de cœur dans le serveur ou dans la machine virtuelle. Le nombre d&#39;utilisateurs est illimité. Ce mode de licence n&#39;est valable qu&#39;à partir de l&#39;édition 2012[[[[7]. Le prix est compté par paires de cœur et démarre à 4.
  • Licence SPLA : pour l&#39;édition Web, il s&#39;agit d&#39;une licence sous forme locative. Le prix modique permet de concurrencer des SGBDR « libre » comme MySQL ou PostGreSQL.

Les types de licence envisageable pour une utilisation de SQL Server derrière un frontal Web est soit la licence par processeur ou cœur soit le mode SPLA limité à l&#39;édition Web.

Outils complémentaires intégrant un serveur SQL server[[[[modifier | changer le code]

Certains outils connexes à SQL Server méritent d&#39;être cités…

BizTalk[[[[modifier | changer le code]

Solution Microsoft pour l&#39;EAI (Enterprise Application Integration) et l&#39;intégration de données B2B (business-to-business).

Sharepoint[[[[modifier | changer le code]

Solution globale de gestion de la connaissance d&#39;entreprise (KB – Knowledge base) permettant la gestion de contenu (via site web et forum) et de documents électronique partagés, la recherche d&#39;information, ainsi que la possibilité de créer des formulaires et la présentation de statistiques décisionnelles tel que tableaux de bord, indicateurs clef (KPI – Key Performance Indicator)…

Dynamics[[[[modifier | changer le code]

C&#39;est l&#39;ERP (Enterprise Resource Planning) de Microsoft.

TFS (Team Foundation Server)[[[[modifier | changer le code]

Est une forge logicielle permettant la gestion des code sources, des builds, le suivi des ressources, la planification des tâches…

SCOM (System Center Operations Manager)[[[[modifier | changer le code]

Système de gestion centralisée, de supervision et de maintenance du système informatique (serveurs, PCs, périphériques en ligne) et de l&#39;infrastructure réseau.

WSUS (Windows Server Update Services)[[[[modifier | changer le code]

Service de distribution concernant les OS et applications Microsoft pour la mise à jour des différentes machines Windows d&#39;un parc informatique (utilise la version Express gratuite)

Outils complémentaires pouvant utiliser un serveur SQL server[[[[modifier | changer le code]

StreamInsight[[[[modifier | changer le code]

StreamInsight est une plate-forme prévue pour développer et déployer à grande échelle des applications de traitement des événements complexes (Complex Event Processing – CEP). Elle est basée sur deux composants essentiels : le StreamInsight Serveur pour la gestion de flux des données et StreamInsight Framework pour la création des interfaces.

EDF utilise StreamInsight pour la gestion des incidents de l&#39;ensemble de son parc informatique.

SQL Server et le Big Data[[[[modifier | changer le code]

Très engagé dans ce mouvement, notamment par le biais de Hadoop, Microsoft propose différentes solutions pour gérer le big data.

HDInsight (Hadoop)[[[[modifier | changer le code]

HDInsight est une solution Hadoop proposée sur le cloud Azure ou localement (à des fins de développement).

Les outils Map/Reduce, Hive, Sqoop et le langage Pig facilite le transfert et la manipulation des données depuis SQL Server vers Hadoop. Un SDK basé sur le framework .NET permet d&#39;écrire des batchs en utilisant Visual Studio. Une installation locale d’Hadoop destinée aux développeurs est disponible au travers de HDInsight Server.

Polybase[[[[modifier | changer le code]

Polybase est un outil destiné à attaquer différentes sources de données relationnelles (SQL Server), décisionnelles (SQL Server Parallel Data Warehouse – PDW) ou encore big data, à travers différents processus comme Map Reduce ou MPP (Massive Parallèle Processive)

On other Wikimedia projects:

Articles connexes[[[[modifier | changer le code]

Click to rate this post!
[Total: 0 Average: 0]

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.