# Microsoft SQL Server/Gestion des utilisateurs

* Introduction
* Bases de données
* Gestion des utilisateurs
* Variables
* Tables
* Procédures stockées
* Fonctions
* Bases de données spatiales
* Performances
* Importer et exporter
* SugarCRM

## Annexes

* Mots réservés
* Problèmes connus
* Introduction
* Bases de données
* Gestion des utilisateurs
* Variables
* Tables
* Procédures stockées
* Fonctions
* Bases de données spatiales
* Performances
* Importer et exporter
* SugarCRM

## Annexes

* Mots réservés
* Problèmes connus
[ Modifier le sommaire ]

## Introduction

On distingue les comptes de connexions au serveur, de ceux des utilisateurs stockés dans chaque base et qui en contiennent les permissions.
On peut assigner aux premiers des "Rôles du serveur" et aux seconds des "Rôles" propres à leur base de données.
Plusieurs comptes utilisateurs peuvent utiliser la même connexion au serveur.

## SSMS
### Connexions

Pour chaque connexion, il y a deux types d’authentification possibles : par le compte Windows ou par un login propre à SQL Server (en en spécifiant le mot de passe).
Le premier menu au démarrage de SSMS utilise d'ailleurs une connexion existante, et peut en créer d'autres avec des droits plus limités sur certaines bases.
Toutefois en production il est plutôt prévu que l'application ne passe pas par SSMS ou la même connexion que son administrateur, mais se connecte avec d'autres droits, directement au serveur SQL par le port 1433 en TCP, par exemple par l'intermédiaire des pilotes de langages tiers comme PHP ou Java.
Pour créer une autre connexion :
* Menu "Sécurité" du serveur (en bas à gauche pas défaut, ne pas prendre le menu "Sécurité" d'une base).
* Connexions.
* Clic droit, "Nouvelle connexion...".
* Dans "Général", indiquer le nom du compte et la base par défaut.
* Dans "Rôles du serveur", cocher les droits sur le serveur entier.
* Dans "Mappage de l'utilisateur", cocher les bases de données à rendre accessibles, avec leur utilisateur et schéma associés.

#### Connections en cours

Un clic droit sur une base permet d'afficher l'option Moniteur d'activité. Ce menu affiche en temps réel les connexions et performances de la base. Il est donc possible d'y forcer l'arrêt des connexions, par exemple avant de supprimer une base (car son utilisation empêche toute suppression).

### Schémas

Les schémas (de sécurité) sont visibles dans le menu "Sécurité" de chaque base de données. Ils permettent de gérer les permissions des utilisateurs pour des groupes de tables, vues ou codes stockés.
Par défaut, SQL Server en propose une dizaine tels que dbo et sys que l'on retrouve souvent en préfixe des tables dans le code SQL, ou encore db_accessadmin.
Pour modifier leurs autorisations, faire un clic droit puis "Propriétés".

### Utilisateurs

Les utilisateurs sont visibles dans le menu "Sécurité" de chaque base de données.
Lors de leur création, on peut leur affecter une connexion et un schéma par défaut, ainsi que des clés d'authentification.
Au niveau de chaque table, on peut ensuite définir quels utilisateurs ou rôles auront le droit d'insérer, de mettre à jour, de supprimer ou de sélectionner les enregistrements.

### Rôles

Les rôles sont visibles dans le menu "Sécurité" de chaque base de données.
Par défaut, SQL Server en propose une dizaine tels que public.
Lors de la création d'un nouveau rôle, il faut choisir s'il appartient à la base ou à l'application, puis à quel schéma il est rattaché.

## SQL
### LOGIN

Les connexions et utilisateurs peuvent aussi être gérés en SQL :
Inventaire des connexions :
La liste des connexions en cours est listable par la commande sp_who.

### SCHEMA

Une base de données peut contenir plusieurs schémas, qui peuvent eux-mêmes contenir plusieurs tables ou vues, afin de leur appliquer les mêmes permissions.
* create schema
* alter schema
* drop schema
* alter authorization
Exemple :

### USER

Inventaire des utilisateurs de la base courante :
Utilisateur courant :

### ROLE

Microsoft recommande toutefois d'utiliser ALTER ROLE au lieu de sp_addrolemember :
* CREATE ROLE, ex : CREATE ROLE Role1 AUTHORIZATION db_securityadmin.
* ALTER ROLE, ex : ALTER ROLE Role1 ADD MEMBER Utilisateur1.
* DROP ROLE.
Pour réactiver une connexion :
Pour la débloquer :

## Références

* ↑ https://msdn.microsoft.com/fr-fr/library/ms174313%28v=SQL.120%29.aspx
* ↑ https://msdn.microsoft.com/fr-fr/library/ms189462.aspx
* ↑ https://msdn.microsoft.com/en-us/library/ms187359.aspx
* ↑ https://msdn.microsoft.com/en-us/library/ms187750.aspx
* ↑ https://msdn.microsoft.com/en-us/library/ms187936.aspx
* ↑ https://msdn.microsoft.com/en-us/library/ms189775.aspx