Microsoft SQL Server/Introduction

Un livre de Wikilivres.

Présentation[modifier | modifier le wikicode]

Microsoft SQL Server (alias MSSQL) est un système de gestion de base de données (SGBD) développé par la société Microsoft.

Son extension du langage SQL est appelée Transact-SQL (T-SQL).

Installation du serveur[modifier | modifier le wikicode]

Connexion de SQL Server Management Studio à une base SQLExpress.
Menu avec une base SQL Compact puis une SQLExpress.

Ce logiciel initialement disponible que sur le système d'exploitation Microsoft Windows depuis 1989, est installable sur Linux depuis mars 2016[1], voire sur Mac OS avec la version Docker[2].

  1. La version gratuite s'appelle SQL Server ExpressTélécharger (anciennement Microsoft SQL Server Desktop Engine (MSDE). Elle permet de créer et manipuler des bases de 2 Go maximum, et de se connecter à d'autres serveurs de base de données existants[3].
  2. La version payante nécessite d'acheter soit une licence pour le serveur (à partir de 900 €) plus une par ordinateur client (autour de 15 €), soit une licence par processeur à partir de 4 000 €[4]. Elle permet d'utiliser des bases jusqu'à 16 To avec des tables à 30 000 colonnes[5].
    Remarque : il existe aussi une édition compacte encore plus limitée (ex : aucune option de sécurité).

Pour PC[modifier | modifier le wikicode]

Logo

SQL Server se lance ensuite automatiquement à chaque démarrage de la machine, ce qui la ralentit significativement.

Pour éviter cela, exécuter services.msc, puis passer le service MSSQL$SQLEXPRESS en démarrage manuel. Ensuite pour lancer le service à souhait (en tant qu'administrateur), créer un script SQL_Server.cmd contenant la ligne suivante :

net start "MSSQL$SQLEXPRESS"


PHP[modifier | modifier le wikicode]

On distingue plusieurs pilotes PHP pour MS-SQL Server :

  • mssql (désuet en PHP7).
  • sqlsrv
  • PDO

Windows[modifier | modifier le wikicode]

Pour se connecter au serveur MS-SQL à partir d'un tout-en-un comme EasyPHP, il suffit de télécharger les pilotes .dll[6] correspondant à sa version de PHP, puis d'indiquer leurs chemins dans le PHP.ini :

  • Sous PHP 4, copier le fichier php_mssql.dll dans les extensions.
  • Pour PHP 5.4 :
    1. Télécharger les .dll SQL30
    2. Les copier dans C:\PROGRA~2\EasyPHP\binaries\php\php_runningversion\ext
    3. Les ajouter dans C:\PROGRA~2\EasyPHP\binaries\php\php_runningversion\php.ini via les lignes suivantes[7] :
      extension=php_sqlsrv_54_ts.dll
      extension=php_pdo_sqlsrv_54_ts.dll
  • Dans PHP 5.5 on obtient toujours Fatal error: Call to undefined function sqlsrv_connect(), donc upgrader ou downgrader PHP.
  • Dans PHP 7 : cela fonctionne.

Pour vérifier l'installation, redémarrer le serveur Web, puis vérifier que la ligne pdo_sqlsrv s’est bien ajoutée dans la configuration (ex : http://127.0.0.1/home/index.php?page=php-page&display=extensions).

Linux[modifier | modifier le wikicode]

Pour se connecter au serveur MS-SQL, il suffit de télécharger les pilotes .so[8] correspondant à sa version de PHP, puis d'indiquer leurs chemins dans le PHP.ini[9] :

extension=php_pdo_sqlsrv_7_nts.so
extension=php_sqlsrv_7_nts.so

Pour vérifier l'installation, redémarrer le serveur Web, puis vérifier que la ligne pdo_sqlsrv s’est bien ajoutée dans la configuration (ex : php -r "phpinfo();" |grep sql).


Sinon, voir Internet Information Services.

ODBC[modifier | modifier le wikicode]

En lançant %windir%\system32\odbcad32.exe il est possible de configurer une liaison vers le serveur MS-SQL dans l'onglet "Source de données système".

Hiérarchie des objets[modifier | modifier le wikicode]

Chaque serveur en SQL Server peut contenir plusieurs types d'objets, dont voici la hiérarchie[10] :

  1. Connexion (LOGIN) : plusieurs comptes utilisateurs peuvent utiliser la même connexion au serveur.
  2. Base de données (DATABASE).
    1. Rôle (ROLE).
    2. Utilisateur (USER).
    3. Schéma (SCHEMA).
      1. Table (table).
      2. Vue (view).
      3. Fonction (FUNCTION).
      4. Procédure stockée (PROCEDURE).
      5. ...
    4. ...
  3. Point de terminaison (ENDPOINT) : élément permettant de communiquer avec le serveur, précisant par exemple le protocole et l'adresse. Visibles avec select * from sys.endpoints.

L'interface SQL Server Management Studio[modifier | modifier le wikicode]

Menu travaux contenant plusieurs jobs dans SSMS 2008.
Rechercher et remplacer dans SSMS 2016.

La version 2016 de Server Management Studio (SSMS) peut se télécharger en même temps que le logiciel SGBD, ou individuellement sur https://msdn.microsoft.com/fr-fr/library/mt238290.aspx.

Lancer depuis le menu démarrer le programme SQL Server Management Studio.

Le logiciel a ensuite besoin de se connecter au serveur de base de données (ex : localhost), avec mot de passe.

Navigation[modifier | modifier le wikicode]

Le logiciel permet de créer et faire dérouler tous les éléments de chaque base grâce à son explorateur d'objet sur la gauche :

  • Base1
    • Tables
    • Procédures stockées
  • Base2

...

Logo

Copier une base de données remplace le propriétaire de l'originale par AUTORITE NT / SYSTEM. Il faut ensuite lancer une commande ALTER AUTHORIZATION[11] pour rétablir l'initial.

Ses fonctions de recherche sont limitées à l'option "filtrer" (icône d'entonnoir). On peut lancer un rechercher/remplacer dans les onglets ouverts, mais pour rechercher une table dans plusieurs bases ou une chaine de caractères dans plusieurs tables ou procédures stockées, il faut donc entrer une requête SQL (voir chapitres suivants).

Le menu "Travaux" situé sous les bases permet de programmer des tâches planifiées (ex : troncature de logs ou de tables).

Selon l'emplacement courant, certaines barres d'outils s'affichent ou se masquent automatiquement.

Schémas de données[modifier | modifier le wikicode]

Interface d'ajout de relation

On distingue deux types d'objets appelés "schémas" : les schémas de base de données et les schémas de sécurité qui seront abordés dans le chapitre sur la gestion des utilisateurs.

Chaque base de données peut contenir plusieurs schémas de base de donnée : les diagrammes de classes. En effet, SSMS permet d'y afficher les tables existantes avec leurs champs, et d'y ajouter des index et des relations.

Pour créer une liaison entre deux tables, faire un clic droit sur l'une, puis "Relations". Dans la fenêtre apparue, cliquer sur "Ajouter". Une relations temporaire apparait alors et il convient de la modifier[12] :

  • Cliquer sur les points de suspension de la ligne "Spécification de tables et colonnes", pour sélectionner les clés à relier.
  • Si le lien est simplement créé pour les besoins du dessins, passer le champ "Appliquer la contrainte de clé étrangère" à "Non".

Critiques[modifier | modifier le wikicode]

Par ailleurs, cette interface a été critiquée car contrairement à phpMyAdmin par exemple, elle ne permet ni de copier des bases ou des tables, ni d'insérer des lignes dans des tables de plus de 200 lignes, ni de rechercher des champs ou des valeurs (le code pour rechercher est publié dans les chapitres suivants).

Références[modifier | modifier le wikicode]

  1. https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu
  2. https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
  3. http://technet.microsoft.com/fr-fr/library/bb967613.aspx
  4. http://blogs.developpeur.org/christian/archive/2011/09/12/Prix-sql-server-en-france-pour-SQL-Server-2008-R2.aspx
  5. http://technet.microsoft.com/fr-fr/library/ms143432.aspx
  6. http://www.microsoft.com/en-us/download/details.aspx?id=20098
  7. http://www.php.net/manual/fr/ref.pdo-sqlsrv.php
  8. https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
  9. https://www.barryodonovan.com/2016/10/31/linux-ubuntu-16-04-php-and-ms-sql
  10. http://www.exacthelp.com/2014/12/understanding-sql-server-security.html
  11. https://msdn.microsoft.com/fr-fr/library/ms187359%28v=SQL.120%29.aspx
  12. https://msdn.microsoft.com/fr-fr/library/ms189049%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396

Voir aussi[modifier | modifier le wikicode]