Vous êtes sur la page 1sur 191

SQL Serveur 2008

SQL Server

Plan
CHAPITRE 1 INTRODUCTION SQL SERVEUR ............................................... 8
1.1 INTRODUCTION ................................................................................................. 8
1.2 QUELQUES RAISONS DE PASSER LA VERSION 2008 ............................................. 8

Support de XML................................................................................................................. 8
Indexation des vues ............................................................................................................ 8
Lanalyseur des requtes (queries) ..................................................................................... 9
Lintgrit rfrentielle en cascade .................................................................................... 9
Les classements dfinis par base de donnes ..................................................................... 9
Les fonctions dfinies par lutilisateur ............................................................................... 9
Les dclencheurs instead of................................................................................................ 9
1.3 OUTILS DE GESTION. ......................................................................................... 9

Analyseur de requtes ........................................................................................................ 9


SQL Management Studio ................................................................................................. 10
Gestionnaire de services SQL Serveur ............................................................................. 11
Importation et exportation de donnes. ............................................................................ 11
Transact-SQL ................................................................................................................... 12
1.4 STRUCTURE DES DONNEES .............................................................................. 12
1.5 CONCEPT DE BASE DE DONNEES RELATIONNELLE ................................................ 12

Dfinition et rle d`un SGBDR. ....................................................................................... 12


Principaux composants d`une base de donnes. ............................................................... 13
Normalisation des bases de donnes. ................................................................................. 13
Rgles d`intgrit ............................................................................................................. 13
1.5.1.1 Intgrit de domaine. ........................................................................................ 13
1.5.1.2 Intgrit d`entit. .............................................................................................. 13
1.5.1.3 Intgrit rfrentielle ........................................................................................ 14
1.5.1.4 Index. ................................................................................................................ 14
1.6 ARCHITECTURE CLIENT-SERVEUR ..................................................................... 14

Mainframe ........................................................................................................................ 14
Client-serveur de fichiers ................................................................................................. 15
Client-serveur de donnes ................................................................................................ 15
Architecture Client-Serveur ............................................................................................. 16
1.6.1.1 Serveur intelligent ............................................................................................ 16
1.6.1.2 Client intelligent ............................................................................................... 16
1.6.1.3 Architectures distribues .................................................................................. 16
Systmes transactionnels OLTP (OnLine Transation Processing) ................................. 16
Systmes dcisionnels OLAP (On Line Analytical Processing) ...................................... 17
CHAPITRE 2 INSTALLATION DE SQL SERVEUR 2008 ................................... 18
2.1 DITIONS DE SQL SERVEUR 2008.................................................................... 18

http://msdn.microsoft.com/en-US/library/ms143685(v=SQL.100).aspx ......................... 18
Express ............................................................................................................................. 18
Workgroup ....................................................................................................................... 18
Standard ............................................................................................................................ 19

SQL Server

Entreprise ......................................................................................................................... 19
Developer ......................................................................................................................... 19
Web .................................................................................................................................. 19
2.2 CONFIGURATIONS MINIMALES. .......................................................................... 19
2.3 LES OPTIONS DINSTALLATION. .......................................................................... 20

Mthode dinstallation...................................................................................................... 21
Choix des composants ...................................................................................................... 23
Nom de linstance............................................................................................................. 24
Choix du compte de dmarrage des services SQL Serveur.............................................. 25
Mode dauthentification ................................................................................................... 26
Vrification de linstallation............................................................................................. 26
CHAPITRE 3 ARCHITECTURE DE SQL SERVEUR .......................................... 28
3.1 LES OUTILS .................................................................................................... 28

Le gestionnaire de services............................................................................................... 28
Microsoft SQL Server Management Studio ..................................................................... 28
Analyseur de requtes ...................................................................................................... 29
Gnrateur de profils SQL ............................................................................................... 31
3.2 ALLOCATION DESPACE .................................................................................... 31

Fichier de base de donnes ............................................................................................... 31


3.2.1.1 Extension .......................................................................................................... 32
3.2.1.2 Allocation des extensions ................................................................................. 32
3.2.1.3 Page .................................................................................................................. 32
3.2.1.4 Tables sans index ............................................................................................. 33
3.2.1.5 Table avec index ............................................................................................... 33
3.3 CRATION DUN FICHIER DE BASE DE DONNES .................................................. 34

Extension dun fichier ...................................................................................................... 35


Rduction dun fichier ...................................................................................................... 35
3.3.1.1 Automatique ..................................................................................................... 35
3.3.1.2 Manuelle ........................................................................................................... 36
Journal de transaction. ...................................................................................................... 37
Bases de donnes systme ................................................................................................ 37
CHAPITRE 4 ARCHITECTURE DUNE BASE DE DONNES ............................. 39
4.1 DFINITION .................................................................................................... 39
4.2 CRATION DUNE BASE DE DONNES ................................................................. 40

Croissance automatique et limitation maximale .............................................................. 41


Classement dune base de donnes .................................................................................. 41
4.3 CHANGER ATTRIBUTS DES FICHIERS BASE DE DONNES ....................................... 41

Augmenter la taille dune base de donnes ...................................................................... 41


Rduire la taille dune base de donnes ........................................................................... 42
Supprimer un fichier dune base de donnes.................................................................... 44
Suppression dune base de donnes ................................................................................. 44
Changer le nom dune base de donnes ........................................................................... 44
Dtacher et attacher une base de donnes ........................................................................ 44
Obtenir des informations sur la base de donnes ............................................................. 46
4.4 OPTIONS DE BASE DE DONNES ........................................................................ 47
4.5 LES TABLES ................................................................................................... 48

Cration dune table ......................................................................................................... 48


Les types de donnes ........................................................................................................ 49
4.5.1.1 Types numriques exacts ................................................................................. 50

SQL Server

4.5.1.2 Types numriques approximatifs ..................................................................... 50


4.5.1.3 Types montaires .............................................................................................. 50
4.5.1.4 Types date et heure ........................................................................................... 50
4.5.1.5 Types caractres ............................................................................................... 50
4.5.1.6 Types binaires .................................................................................................. 50
Cration de types de donnes dfinis par lutilisateur (TDDU). ...................................... 51
Les valeurs par dfaut ...................................................................................................... 52
Rgles de validation ......................................................................................................... 56
4.6 LES CLS ....................................................................................................... 59

Cl primaire. ..................................................................................................................... 59
Cl trangre. ................................................................................................................... 60
Contrainte UNIQUE ......................................................................................................... 62
4.7 MODIFIER UNE TABLE ...................................................................................... 63

Ajouter une colonne ......................................................................................................... 63


Modifier le type de donnes ............................................................................................. 64
Supprimer une colonne ..................................................................................................... 65
4.8 LE DIAGRAMME DE LA BASE DE DONNES .......................................................... 65
4.9 LES INDEX ..................................................................................................... 66

Les types index ................................................................................................................. 66


Index clustered ................................................................................................................. 68
Index non clustered .......................................................................................................... 68
4.10 LES VUES .................................................................................................... 69
4.11 PROCDURES STOCKES ............................................................................... 71

Utilisation ......................................................................................................................... 72
Modification ..................................................................................................................... 72
4.12 FONCTIONS DFINIES PAR LUTILISATEUR ......................................................... 73

Fonctions scalaires ........................................................................................................... 73


Fonctions tables ................................................................................................................ 74
4.12.1.1 Fonction inline................................................................................................ 74
4.12.1.2 Fonction multi instructions............................................................................. 75
4.13 LES DCLENCHEURS OU TRIGGERS ................................................................. 75

Trigger insert. ................................................................................................................... 75


Trigger delete ................................................................................................................... 76
Trigger update .................................................................................................................. 76
Dclencheur INSTEAD OF - " la place de" ................................................................... 77
Activation et dsactivation des dclencheurs. .................................................................. 78
CHAPITRE 5 LA SAUVEGARDE ET LA RESTAURATION ................................. 80
5.1 INTRODUCTION ............................................................................................... 80
5.2 MODLES DE RCUPRATION ........................................................................... 82

Modle de rcupration COMPLET (FULL) ............................................................. 82


Modle de rcupration SIMPLE ............................................................................... 83
Modle de rcupration JOURNALISE EN BLOC (BULK_LOGGED) .................. 83
5.3 TYPES DUNITES .............................................................................................. 83

Units sur bande ............................................................................................................... 83


Unit de disque : ............................................................................................................... 84
5.4 CREATION DES UNITES .................................................................................... 84
5.5 EDITER LE CONTENU DUNE UNITE..................................................................... 85
5.6 SUPPRIMER UNE UNITE DE SAUVEGARDE ............................................................ 85
5.7 LA SAUVEGARDE ............................................................................................. 85

Sauvegarde complte de la base de donnes .................................................................... 86

SQL Server

Sauvegarde du journal de transaction. .............................................................................. 87


Sauvegarde diffrentielle et incrmentale. ....................................................................... 89
Sauvegarde dun fichier ou groupe de fichiers ................................................................. 89
5.8 STRATEGIE DE SAUVEGARDE ............................................................................ 90
5.9 LA RESTAURATION ........................................................................................... 90

Restaurer partir dune unit spcifique .......................................................................... 91


Restauration du journal de transaction ............................................................................. 93
Restauration dune sauvegarde diffrentielle ................................................................... 94
Restauration dun fichier ou groupe de fichiers ............................................................... 94
5.10 VRIFICATION DE COHRENCE ........................................................................ 95
5.11 AUTOMATISATION .......................................................................................... 95

Automatiser une sauvegarde. ........................................................................................... 96


CHAPITRE 6 CONNEXIONS ET SCURIT ..................................................... 99
6.1 ARCHITECTURE DE LA SECURITE ....................................................................... 99
6.2 NOMS PREDEFINIS ........................................................................................ 100
6.3 CREATION DES NOMS .................................................................................... 100

Connexions ..................................................................................................................... 101


Crer les noms dutilisateur ............................................................................................ 104
6.4 SUPPRESSION DES NOMS ............................................................................... 105
6.5 LES ROLES................................................................................................... 106

Rle serveur.................................................................................................................... 106


Rles de base de donnes ............................................................................................... 108
6.6 CRER UN RLE ........................................................................................... 109

Le remplissage du rle ................................................................................................... 110


Supprimer un rle ........................................................................................................... 110
6.7 AUTORISATIONS DOBJET ET AUTORISATIONS DINSTRUCTION .............................. 111

Autorisations dinstruction ............................................................................................. 112


Autorisation dobjet........................................................................................................ 113
6.7.1.1 Affectation des autorisations dobjet objet .................................................. 114
Attribution des autorisations aux rles ........................................................................... 116
Transmettre les autorisations .......................................................................................... 116
6.8 LACCES AU SYSTEME .................................................................................... 116

Modes de scurit. .......................................................................................................... 117


6.8.1.1 Authentification SQL ..................................................................................... 117
6.8.1.2 Authentification Windows ............................................................................. 118
6.9 CHANGEMENT DE MODE ................................................................................ 119
CHAPITRE 7 RCUPRATION & MISE JOUR DE DONNES DISTRIBUES120
7.1 SERVEURS LIS ............................................................................................ 120

Cration de serveurs lis ................................................................................................ 121


Configurer un serveur li par ODBC ............................................................................. 123
Scurit des serveurs lis ................................................................................................ 124
Excuter des requtes sur des serveurs lis .................................................................... 125
7.1.1.1 Lire les donnes .............................................................................................. 126
CHAPITRE 8 IMPORTATION ET EXPORTATION DE DONNEES..................... 127
8.1 BCP ........................................................................................................... 127

Exporter des donnes ..................................................................................................... 127


Importer des donnes ..................................................................................................... 128
8.2 BULK INSERT ............................................................................................ 129
8.3 DTS OU SERVICES DINTGRATION SERVEUR ................................................... 130

SQL Server

Mise en place .................................................................................................................. 131


Source de donnes et de destination ............................................................................... 131
8.3.1 Choix des objets .................................................................................................... 132
8.4 BUSINESS INTELLIGENCE DEVELOPMENT STUDIO.............................................. 133
CHAPITRE 9 LA RPLICATION.................................................................... 136
9.1 LA DISTRIBUTION .......................................................................................... 137
9.2 UTILISER UN DISTRIBUTEUR EXISTANT ............................................................. 141
9.3 CONFIGURER UN DISTRIBUTEUR ...................................................................... 142
9.4 LA PUBLICATION ........................................................................................... 143

Mise en place de la publication ...................................................................................... 143


9.5 PUBLICATIONS .............................................................................................. 144

Proprits dune publication........................................................................................... 149


Articles ........................................................................................................................... 150
Filtres des articles ........................................................................................................... 150
9.6 LABONNEMENT ............................................................................................ 151

Abonnement extrait ........................................................................................................ 151


9.7 ABONNEMENT ENVOYE .................................................................................. 156
9.8 LA REPLICATION PAR FUSION .......................................................................... 156

9.8.1 Publication de fusion ............................................................................................. 156


9.9 MODIFIER LA REPLICATION ............................................................................. 157
9.10 MODIFIER UNE PUBLICATION OU UN ARTICLE. ................................................. 157
9.11 SUPPRIMER UNE PUBLICATION OU UN ARTICLE. ............................................... 157
9.12 AJOUTER UNE PUBLICATION ......................................................................... 157
9.13 DESINSTALLER LA REPLICATION. ................................................................... 157
CHAPITRE 10 SQL PROFILER ..................................................................... 159
10.1 SQL PROFILER ........................................................................................... 159
CHAPITRE 11 DVELOPPER UNE APPLICATION SQL SERVEUR .................. 161
11.1 INTRODUCTION ........................................................................................... 161
CHAPITRE 12 LES PAGES WEB DYNAMIQUES ............................................ 163
12.1 CRATION .................................................................................................. 163
12.2 TABLIR LA CONNEXION ............................................................................... 163
12.3 LES BESOINS .............................................................................................. 163
12.4 APERU DES SOLUTIONS TECHNIQUES ........................................................... 164
12.5 CARACTRISTIQUES .................................................................................... 164
12.6 QUEST-CE QUUNE PAGE DYNAMIQUE ? ......................................................... 166
12.7 LES PAGES WEB STATIQUES ......................................................................... 166
CHAPITRE 13 ASP, CE QUI FAIT LA DIFFRENCE ...................................... 167
13.1 LES BALISES DUNE PAGE ASP ...................................................................... 167

Utiliser des objets sur le serveur .................................................................................... 167


Le composant ADO (Active Data Object) ..................................................................... 168
CHAPITRE 14 INSTALLER ACTIVE SERVER PAGE ...................................... 169
14.1 PREMIERS PAS ............................................................................................ 170
14.2 APERU..................................................................................................... 170
14.3 CONFIGURATION DE BASE ............................................................................ 171
CHAPITRE 15 LOBJET CONNECTION ......................................................... 174
15.1 DFINIR LTENDUE DE LA CONNEXION .......................................................... 174

SQL Server

15.2 OUVRIR UNE CONNEXION ............................................................................. 174


15.3 LE DSN .................................................................................................... 175
15.4 EXCUTER LES COMMANDES ........................................................................ 175
15.5 INDIQUER LE TYPE DE COMMANDE................................................................. 175
15.6 LES PARAMTRES EN PRATIQUE .................................................................... 176
15.7 FERMER LA CONNEXION ............................................................................... 176
15.8 UTILISATION DES TRANSACTIONS ................................................................... 176
15.9 LOBJET COMMAND ..................................................................................... 177
15.10 PARAMTRAGE AU COUP PAR COUP .............................................................. 177
CHAPITRE 16 LOBJET RECORDSET .......................................................... 178
16.1 MTHODES ET PROPRITS .......................................................................... 178
16.2 RCUPRER UN RECORDSET ........................................................................ 178
16.3 CRER UN RECORDSET PARTIR DUNE REQUTE ........................................... 178
16.4 CRER UN RECORDSET PARTIR DE LOBJET COMMAND ................................... 179
16.5 CRER UN RECORDSET PARTIR DUNE TABLE ................................................ 179
16.6 CRER UN RECORDSET DIRECTEMENT ........................................................... 179
16.7 TYPES DE CURSEURS DUN RECORDSET.......................................................... 179
16.8 FERMER UN RECORDSET .............................................................................. 180
16.9 UTILISER UN RECORDSET AVEC ADO............................................................. 180
16.10 SE DPLACER DANS UN RECORDSET ............................................................ 180

La mthode MOVE ........................................................................................................ 180


Les quatre autres mthodes ............................................................................................ 181
16.11 VRIFIER LE NOMBRE DENREGISTREMENTS ................................................. 181
16.12 PARCOURIR UN RECORDSET ....................................................................... 181
16.13 TRAVAILLER AVEC LA COLLECTION FIELDS .................................................... 182
CHAPITRE 17 CONNEXION UNE BASE DE DONNES (PAR LA PRATIQUE) 183
17.1 CONNEXION UNE BASE DE DONNES ACCESS ............................................... 183
17.2 CONNEXION UNE BASE DE DONNES SQL SERVER ....................................... 183
17.3 UTILISATION DUN FICHIER DE LIAISON DE DONNES ........................................ 184
17.4 LOBJET RECORDSET ................................................................................... 185
17.5 SUPPRIMER UN ENREGISTREMENT ................................................................. 185
17.6 LA MTHODE OPEN ..................................................................................... 185
17.7 AFFICHER LES ENREGISTREMENTS ................................................................ 186
17.8 MISE JOUR DENREGISTREMENTS ............................................................... 187
17.9 AJOUT DENREGISTREMENTS ........................................................................ 187
17.10 LOBJET REQUEST .................................................................................... 187
CHAPITRE 18 LA RECHERCHE TEXTE LIBRE............................................. 188
CHAPITRE 19 CARACTERISTIQUES XML/HTTP POUR SQL SERVEUR ........ 189
19.1 ACCEDER A SQL SERVEUR .......................................................................... 189
19.2 RECUPERATION DE DONNEES ....................................................................... 189
19.3 CREATION DE VUES XML ............................................................................. 189
19.4 ENVOI DE DONNEES VERS SQL SERVEUR PAR XML......................................... 190
CHAPITRE 20 SOURCES ............................................................................. 191

SQL Server

CHAPITRE 1
INTRODUCTION SQL SERVEUR
1.1 Introduction
La mise niveau de SQL Serveur 2000, 2005 vers SQL Serveur 2008 est simple.
Les structures de donnes ont peu volu et la mise niveau sassimile plus un
transfert de base de donnes qu une mise niveau.
Compte tenu des instances multiples du moteur de SQL Serveur il est tout fait
possible de faire tourner, en mme temps sur le serveur, SQL Serveur 7, SQL
Serveur 2000, Serveur 2005 et SQL Serveur 2008.
Lors dune mise niveau, il est fortement recommand de sauvegarder les bases de
donnes avant doprer la mise niveau.
Vous pouvez aussi installer une instance nomme de SQL Serveur 2008 qui
fonctionnera en parallle avec dautres SQL Serveur. Les moteurs tournant en
mme temps vous permettent une mise niveau des bases de donnes sans
risquela seule contrainte : lespace disque.
Dans ce chapitre, nous nous limiterons linstallation du SQL Serveur 2008 sur
une machine qui ne contient pas danciennes versions.

1.2 Quelques raisons de passer la version 2008


Support de XML
Intgr totalement dans Windows XP et lunivers .net , XML est au cur des
changes de donnes sur Internet. Avec SQL Serveur, il est possible dinterroger les
donnes en XML, de mettre jours ces donnes partir de documents XML.

Indexation des vues


Jusqu SQL Serveur 7, les vues ntaient que des requtes nommes. Lorsquune
dentre elles tait interroge, le systme accdait aux tables sous-jacentes. partir
du moment o certaines vues peuvent interroger des dizaines de tables
simultanment, la capacit dindexer une vue permet de rapprocher et de stocker
les donnes acclrant ainsi considrablement leur restitution.

SQL Server

Lanalyseur des requtes (queries)


Lanalyseur de requtes (Query Analyzer) est intgr lInterface Manager. Il
contient un explorateur dobjets, un dbogueur de procdure stocke, des fonctions
amliores de mise en forme du code, des informations tendues danalyse de
performance Une fois utilis, il sera vite adopt

Lintgrit rfrentielle en cascade


Lintgrit rfrentielle en cascade permet de mettre en uvre suppression et mise
jour en cascade, y compris plusieurs niveaux, avec un simple clic de souris pour
la dfinition des relations.

Les classements dfinis par base de donnes


Simplification pour lutilisateur. Tous les serveurs ne sont pas installs de la mme
faon (mme jeu de caractres, ordre de tri) et il en est de mme pour les
classements. Avec SQL Serveur, chaque base de donnes voire chaque colonne
dune table peut utiliser un classement diffrent sur un mme serveur (jeu de
caractres, ordre de tri).

Les fonctions dfinies par lutilisateur


Les fonctions dfinies par lutilisateur (UDF, User Defined Function) permettent de
crer des fonctions renvoyant des valeurs scalaires ou des tables pouvant tre
employes en lieu et place des fonctions du systme ou des noms de tables ou de
vues. Elles tendent les fonctionnalits des vues en admettant des paramtres.

Les dclencheurs instead of


Jusqu' la version 7 de SQL Serveur, les dclencheurs sactivaient aprs lexcution
des instructions. Il sagissait des dclencheurs after.
SQL Serveur 2000 introduit les dclencheurs instead of qui sexcutent la place
des instructions qui les ont dclenches. Ils peuvent tre dfinis sur des vues, ce
qui accrot leur capacit de mise jour.

1.3 Outils de gestion.


Analyseur de requtes
Lanalyseur de requtes est intgr lInterface Manager. Il permet :
La visualisation simultane de la requte et du rsultat
Ldition du code en couleur
Laffichage du plan dexcution

SQL Server

10

SQL Management Studio


SQL Management Studio est loutil de gestion centralis de tous les serveurs SQL.
On peut y rfrencer tous les serveurs et les administrer travers une interface
unique. Linscription dun serveur est demande lors du premier dmarrage de SQL
Management Studio, peut tre ritre pour dautres serveurs, y compris ceux qui
fonctionneraient sous la version 6.x
Parmi

ses fonctionnalits majeures, citons :


la visualisation simultane de la requte et du rsultat
laffichage de la dure dexcution
ldition du code couleur
le plan dexcution graphique, estim et rel

SQL Management Studio a t entirement repens pour tirer parti des nouvelles
fonctionnalits de SQL Serveur.
Sparation des bases de donnes systmes, procdures stockes et celles
personnelles.
Cration et modification en mode graphique des tables, des vues, des procdures
stockes
De nombreux assistants tels que pour limportation et lexportation de donnes,
pour la mise en place de la rplication
Cration et gestion des serveurs lis

SQL Server

11

Gestionnaire de services SQL Serveur


Linterface du gestionnaire de services sert toujours arrter, mettre en pause ou
dmarrer les services MSDTC, MSSQLServer et SQL Server Agent.

Importation et exportation de donnes.


Le BCP (Bulk Copy Program) existe toujours. Le DTS (Data Transformation Services)
est remplac par Business Intelligence Development Studio. Il sert entre autres
importer ou exporter des tables depuis ou vers une base de donnes. Il nest pas
spcifique uniquement SQL Serveur. Ces services permettent de capturer des
donnes dun fournisseur OLE-DB ou dun pilote ODBC, pour les envoyer vers une
autre, dot elle aussi dun fournisseur OLE-DB ou dun pilote ODBC, aprs
transformation ventuelle.

SQL Server

12

Transact-SQL
Des innovations ont t apportes dans les transactions SQL telles que :

Taille maximale des colonnes char et varchar 8000 caractres


Possibilit de modifier le type dune colonne dune table contenant des
donnes
Possibilit dajouter ou de supprimer des colonnes une table contenant des
donnes
Remplissage dune nouvelle colonne avec une valeur par dfaut
Indexation des colonnes calcules
Vues indexes
Fonctions dfinies par lutilisateur
Clause Top n du select qui permet de rcuprer les n premiers
enregistrements slectionns

1.4 Structure des donnes


Une des volutions de SQL Serveur concerne les formats de fichiers. Due
lvolution matrielle, il est devenu ncessaire de faire voluer les structures de
donnes pour rpondre des besoins de stockage, de gestion de volume de
donnes, de performances,
Autres caractristiques qui justifient lintrt de ce changement :

Le journal des transactions est spar des donnes.


La taille maximale dune base de donnes 1Toctets
1024 colonnes maximums par table
8060 octets au maximum par enregistrement
Les noms dobjets limits 128 caractres
Les pages de donnes 8Koctets
Une extension est compose de 8 pages il y a deux types extensions
Les extensions mixtes contiennent plusieurs tables et/ou index
Les extensions uniformes contiennent une table ou un index

1.5 Concept de base de donnes relationnelle


Dfinition et rle d`un SGBDR.
SGBDR (Systme de Gestion de bases de Donnes Relationnelle)
Le modle relationnel fut formalis par CODD dans les annes 70. Le modle
relationnel offre certains avantages:
Utilisation d`un langage haut niveau pour accder aux donnes sans
connatre sa reprsentation interne
Gestion interne de la cohrence des informations qui assurent l`intgrit des
donnes
Utilisation d`un langage standard de manipulation des donnes SQL

SQL Server

13

Principaux composants d`une base de donnes.


Les donnes sont stockes sous forme de tables. Une table est un ensemble de
lignes et de colonnes. Chaque colonne reprsente un attribut de l`information et
chaque ligne un enregistrement. Les colonnes sont types et peuvent avoir une
valeur par dfaut. Des rgles de validation autorisent ou non des valeurs NULL. Le
nombre de lignes n`est pas limit sauf capacit disque dur ou restriction interne.

Normalisation des bases de donnes.


Le but de la normalisation est de rduire les dpendances fonctionnelles et les
redondances de donnes.
Chaque enregistrement est identifi de manire unique (cl primaire)
Les colonnes non-cls dpendent ou ne dpendent pas de cl primaire.
Concevoir des modles relationnels cest rduire les redondances et permettre les
jointures entre tables

Rgles d`intgrit
Les donnes stockes dans une table doivent tre cohrentes et valides. Les rgles
d`intgrits servent contrler ces caractristiques.

1.5.1.1 Intgrit de domaine.


Il agit au niveau des colonnes des tables. Les donnes saisies dans une colonne
doivent tre cohrente avec les contraintes prdfinies :
le type : si type est un entier, impossible d`introduire chane de caractres
rgle de validation : si la valeur est comprise entre 0 et 500, il est impossible
d`introduire les valeurs 501 ou -1
cl trangre : si une colonne doit contenir une valeur d`une autre table, le
systme s`assure que la valeur est correctement encode et fait partie des
valeurs existantes.

1.5.1.2 Intgrit d`entit.


Doit assure unicit de chaque enregistrement, elle identifie les colonnes de
manire unique pour chaque enregistrement nadmet pas de nullit (p.ex. : N de
compte bancaire). Elle est assure souvent par une cl primaire PK

SQL Server

14

1.5.1.3 Intgrit rfrentielle


Elle concerne les relations entre tables. Elle agit lors de la mise jour, de linsertion
ou de la suppression denregistrement. Cest le moyen dassurer la cohrence entre
plusieurs tables. Relation entre une cl primaire PK et une cl trangre FK. Na pas
les mmes contraintes que PK elle nest pas unique, relation dun plusieurs.
Elle permet dviter :
Insrer des donnes dans une table enfant qui ne possde pas de donnes
associes dans une table Parent.
Supprimer des donnes dune table parent alors quil existe des donnes
associes dans une table enfant.
Mettre jour des colonnes de la table Parent en crant des orphelins dans la
table enfant

1.5.1.4 Index.
Les index sont l pour acclrer les recherches (p.ex. : recherche par thme dans
un livre on consulte lindex qui donne la liste des pages). Si un trop grand nombre
dindex, la mise jour peut dgrader les performances.
Si plusieurs index sur une table, pour les recherches le moteur lembarras du
choix. Mais si on fait une mise jour, une insertion, une suppression
lactualisation des index ralentira les oprations. Rflchir aux index crer en
fonction du type doprations excuter et de leur frquence. Les index utiliss par
SQL Serveur est b-tree (arbre quilibre).

1.6 Architecture Client-Serveur


Mainframe
Le mainframe ou big Serveur est un systme qui prend en charge : le stockage, le
traitement laffichage des donnes. Les terminaux sont passifs et sont connects au
mainframe. Le terminal na pas dintelligence propre affiche ce que le mainframe
envoie. Si le nombre de terminaux augmente le mainframe soufre do augmenter
sa capacit.
La maintenance, le dveloppement et la mise niveau sont couteux. Cette
architecture a diminu dans les entreprises.
Avantages : Fiabilit, scurit et puissance de calcul.

SQL Server

15

Client-serveur de fichiers
Dans les annes 80, apparition des PC. Ils conviennent pour lmulation de
terminaux passifs et de machine autonome. Permets des traitements locaux et
lexcution de programmes do soulage le serveur.
Il y a aussi lapparition des rseaux locaux. Les entreprises qui ne possdent pas de
Mainframe, squipent de ce type de systme (IBM et PC compatible). Pour crer des
ressources sur le rseau local, il faut partager (Novell, Windows Workgroups) avec
ou sans serveur ddi.
Avec larrive des bases de donnes dBase, Paradox, Foxpro, Access
Larchitecture des serveurs de fichier un inconvnient les donnes se trouvent sur
le serveur et lapplication est excute sur le poste client. Si une requte se fait sur
une grosse table, elle transite sur le rseau pour tre traite localement. On peut
saturer pendant quelque seconde le rseau.

Client-serveur de donnes
Sur les mainframes, la totalit du traitement jusqu laffichage se fait sur le serveur
engorgement niveau serveur
Sur rseaux locaux base de serveurs de fichiers, traitement a lieu sur le poste
client engorgement du rseau.
Dans une architecture client-serveur le traitement des donnes est rparti entre le
client et le serveur. Une requte sur une table est prise en charge par le serveur qui
renvoie le rsultat vers le client. Le client possde la logique des traitements du
rsultat (mise en forme, calcul complmentaire, prsentation).
Seul SQL Serveur met en uvre une architecture client-serveur, Access, FoxPro
travaille en serveur de fichier.
Remarque :

SQL Server

16

Access est capable de diffuser les donnes via le rseau Internet, mais cest le pilote
ODBC qui rend le miracle possible.
La communication entre le client et le serveur est assure par le Middleware
mdiateur qui gre plusieurs tches :
Envoi des requtes au serveur et transfert des rsultats vers le client.
Transformation des types de donnes
Gestion des transactions, des curseurs
Ouverture et fermeture des connexions
De plus en plus, on fournit aux clients des moyens transparents de connexion aux
bases de donnes. Celui de Microsoft est ODBC (Open Data Base Connectivity).
ODBC permet de concevoir des applications sans connatre le type de serveur SQL.
Elle permet de grer de simple connexion transparente une base de donnes mais
aussi de grer des data bases distribues et rparties sur plusieurs serveurs.

Architecture Client-Serveur
Cette

architecture peut se diviser en trois couches.


Prsentation : prsentation des donnes sur le poste client
Traitement : calcul, vrification dintgrit
Donnes : on gre le stockage des donnes, les verrous, les sauvegardes

1.6.1.1 Serveur intelligent


Dans ce cas de figure, le client gre uniquement la prsentation. Le serveur se
charge de la logique applicative et de la gestion des donnes. Faible puissance du
poste client. Dimensionner Serveur pour les charges actuelles et avenir.

1.6.1.2 Client intelligent


Le client gre la prsentation et la logique de lapplication. Le serveur soccupe de la
gestion base de donnes. Poste client puissant mais si on change une rgle il faut le
faire sur tous les postes.
SQL Serveur est bas sur une architecture trois couches sparation en 3 processus
distincts. Lintrt dune telle architecture est de rpartir la charge sur plusieurs
machines sans modifier lapplication.
Mise en place par Microsoft Transaction Server pour la couche intermdiaire,
Microsoft SQL Server pour la couche donne. On appelle les objets grs par
Transaction Server via Java, Visual Basic,

1.6.1.3 Architectures distribues


Permet de rpartir la charge entre plusieurs serveurs (application ou donnes)
Corba, DCE, DCOM permet dagrger toutes ces donnes en fessant oublier o se
trouve linformation.
Microsoft Transaction Server gre des transactions sur plusieurs serveurs en
assurant leur cohrence.

Systmes transactionnels OLTP (OnLine Transation Processing)

SQL Server

17

Les applications sont axes vers lcriture : insertions, mises jour, suppressions
de donnes et ceci doit se faire le plus rapidement possible do une forte
normalisation et peu dindex pour ne pas ralentir la mise jour.
Une transaction est ralise si toutes les instructions sont ralises. Si une
instruction ne lest pas, la transaction est annule. La transaction est isole et
invisible pendant lexcution. Pour cela on utilise un systme de verrouillage

Systmes dcisionnels OLAP (On Line Analytical Processing)


Les applications sont axes vers la lecture : rpondre aux requtes en lecture seule.
Les donnes proviennent dune ou plusieurs bases de donnes dnormalises et fort
indexes. Modifies, agres et filtres, elles forment des cubes multidimensionnels.
Ils sont volumineux. Son but est dinterroger de regrouper les donnes, organiser
pour acclrer les interrogations.

18

SQL Server

CHAPITRE 2
INSTALLATION DE SQL SERVEUR 2008
2.1 ditions de SQL Serveur 2008
SQL Serveur existe en six ditions : Express (32 ou 64 bits), Workgroup (32 ou 64
bits), Standard (32 ou 64 bits), Entreprise (32 ou 64 bits), Developer (32 ou 64 bits),
Web (32 ou 64 bits).
Fonctionnalits des diffrentes versions.
Fonctionnalit
Gestion max. de
processeurs
Taille max de la base de
donnes
Prise en charge du 64 bits
Gestion max de la taille
mmoire
Rplication
Partitionnement

Express

Workgroup

Standard

Entreprise

1 prend en
charge
multicore

2 prend en
charge
multicore

4 prend en
charge
multicore

illimite

4Go

illimite

illimite

illimite

Avec WOW

Avec WOW

intgre

intgre

1Go

4Go

Limit suivant
O.S.

Limit suivant
O.S.

1 abonn

25 abonns

oui

oui

non

non

non

oui

http://msdn.microsoft.com/en-US/library/ms143685(v=SQL.100).aspx

Express
Systme de bases de donnes gratuit qui peut tre redistribu pour servir de bases
de donnes client. Solution pour le remplacement dAccess.

Workgroup
Solution destine aux petits organismes qui travaillent avec de faibles volumes de
donnes sans limite de taille ni dutilisateurs.

19

SQL Server

Standard
Cest la version de base installer sur un serveur. Possde les fonctionnalits pour
le stockage de donnes des petites et moyennes entreprises. Est limit par rapport
la version Enterprise

Entreprise
Prend en charge les grands environnements de traitement de bases de donnes. Ne
possde aucune limite et possde les fonctionnalits la plus compltes.

Developer
Possde toutes les fonctionnalits de la version Enterprise. Mais ne propose quune
licence pour le test et le dveloppement pas pour la mise en production.

Web
Possde toutes les fonctionnalits de la version Enterprise. Mais destin au serveur
Web .

2.2 Configurations minimales.


Configuration matrielle pour installer SQL Serveur sur une plateforme 32 bits
Edition 32Bits

Processeur

Vitesse du processeur

Mmoire RAM

Enterprise

PIII ou suprieur

1 GHz
2 GHz Recommand

512 Mo
2 Go Recommand

Developer

PIII ou suprieur

1 GHz
2 GHz Recommand

512 Mo
2 Go Recommand

Standard

PIII ou suprieur

1 GHz
2 GHz Recommand

512 Mo
2 Go Recommand

Workgroup

PIII ou suprieur

1 GHz
2 GHz Recommand

512 Mo
2 Go Recommand

Express

PIII ou suprieur

1 GHz
2 GHz Recommand

256 Mo
1Go Recommand

20

SQL Server

Configurations logicielles requises pour l'installation et l'excution de SQL Server.

Systme d'exploitation 32 bits requis


Version O.S.

Enterprise

Developer

Standard

Workgroup

Express

Windows 2000

Non

Non

Non

Non

Non

Windows 2000 Professionnel


SP4

Non

Oui

Oui

Oui

Oui

Windows 2000 Serveur SP4

Non

Oui

Oui

Oui

Oui

Windows 2000 Datacenter


SP4

Non

Oui

Oui

Oui

Oui

Windows XP dition familiale


SP2

Non

Oui

Non

Non

Oui

Windows XP Professionnel
SP2

Non

Oui

Oui

Oui

Oui

Windows Serveur 2003 Server


SP2

Oui

Oui

Oui

Oui

Oui

Windows Serveur 2003


Enterprise

Oui

Oui

Oui

Oui

Oui

Windows Serveur 2003


Datacenter

Oui

Oui

Oui

Oui

Oui

Windows Small Business


Serveur 2003

Oui

Oui

Oui

Oui

Oui

Windows Vista Starter

Non

Non

Non

Non

Non

Windows Vista Professionnel

Non

Oui

Oui

Oui

Oui

Windows Serveur 2008


Standard
Windows 7 Entreprise
Windows 7 Professionnel

Oui

Oui

Oui

Oui

Oui

Non
Non

Oui
Oui

Oui
Oui

Oui
Oui

Oui
Oui

2.3 Les options dinstallation.


Le programme dinstallation pose un nombre de questions pour mener bien la
configuration de SQL Serveur :

La slection des options : crer une nouvelle instance, installation des outils,
mise jour dune installation
Votre nom et celui de votre organisme
Les composants installer (outils client, serveur et outils clients, connectivit
seule)
Les comptes de connexion

SQL Server

21

Mthode dinstallation
En fonction du systme dexploitation de la machine et de ldition de SQL Server
dautres fonctionnalits doivent tre installes avant linstallation de SQL Serveur.
Le programme d'installation de SQL Server installe les composants logiciels
suivants requis par le produit :
.NET Framework 3.5 SP11 (qui inclut .NET Framework 2.0 SP2)
Le programme d'installation de SQL Server ncessite
Microsoft Windows Installer 4.5 ou version ultrieure
Microsoft Internet Explorer 6.0 SP1 ou version ultrieure
Le programme d'installation de SQL Server n'installera pas les composants requis
suivants pour SQL Server Express. Vous devez installer ces composants
manuellement avant d'excuter le programme d'installation de SQL Server.
Installer Windows Installer

..chemin\x86\redist\Windows Installer\x86

SQL Server

22

Framework

..chemin\x86\redist\ DotNetFrameworks
Installation de SQL Serveur : chemin\SQL Server x86\Servers\setup.exe

Le programme vrifie la compatibilit de votre systme et indique des messages sur


certains problmes.

SQL Server

Il est possible de connatre les motifs de ces problmes.

Choix des composants

23

SQL Server

24

Nom de linstance
On peut installer 16 instances SQL Serveur par machine et en coexistence avec des
versions antrieures. Par exemple SQL Serveur 7 avec 2008 ou SQL Serveur 2005
avec 2008.
Linstance par dfaut est le nom de la machine au niveau systme dexploitation. Si
on utilise un autre nom, il faut respecter quelle rgle :
Ni Default ni MSSQLServer
Moins de 16 caractres
Commencer par une lettre ou & ou _ ou #
Lemploi de plusieurs instances augmente la charge dadministration et duplique les
composants ainsi que les bases de donnes systmes.
Lemploi dinstances nommes est indiqu lors de :
Test de plusieurs versions SQL Serveur sur une mme machine
Test de services packs
Lorsque les clients exigent leurs propres bases de donnes systmes et
utilisateurs

Le chemin par dfaut est Nom_Du_Drive:\Program Files\Microsoft SQL Server.

SQL Server

25

Choix du compte de dmarrage des services SQL Serveur

Le processus dinstallation de SQL Serveur propose de dfinir les contextes de


scurit des services MSSQLServer et SQL Agent. Il y a deux possibilits : utiliser le
compte systme local qui na pas accs au rseau ou un compte cr au pralable.
Il est conseill de crer un compte par service.
Ces comptes appartiennent au groupe administrateur, mot de passe qui nexpire
jamais, droit douverture 24h/24.
Lors de linstallation dun systme dexploitation Windows, on choisit les
paramtres rgionaux. Lors de linstallation de SQL Serveur, il sappuie sur ces
paramtres pour dcider du jeu de caractres utiliser.

SQL Server

26

Mode dauthentification
Le moteur de SQL Serveur fonctionne sous deux modes de connexion : Windows ou
mixte.
Le mode Windows : seuls les utilisateurs authentifis par le systme
dexploitation Windows peuvent se connecter SQL Serveur.
Offre le niveau de scurit le plus lev.

Le mode mixte : il prend en charge les deux mthodes authentifications.


Les utilisateurs sont authentifis par le systme dexploitation Windows
Les utilisateurs sont authentifis par soumission dun nom et un mot de
passe

Vrification de linstallation.
Vrifier que le service MSSQLServer est dmarr correctement avec les outils du
service dadministrations.

SQL Server

Remarque :
En cas de problme, la lecture de fichiers :
c:\Program Files\Microsoft SQL Server\Nom_Instance\Log\errorlog
Permet de connatre le pourquoi de larrt du serveur
c:\Program Files\Microsoft SQL Server\Nom_Instance\Log\SQLAgent.out
Erreur survenue

27

28

SQL Server

CHAPITRE 3
ARCHITECTURE DE SQL SERVEUR
3.1 Les outils
Le gestionnaire de services
SQL Serveur possde son propre gestionnaire de services accessible depuis le menu
de dmarrage. Cest linterface qui permet dactiver ou de dsactiver les services :
SQL Server
Agent SQL (gestionnaire dautomatisation des tches)

Microsoft SQL Server Management Studio


Outil de gestion des serveurs SQL, on peut rfrencer tous les SQL Serveur et les
administrer travers une interface unique

SQL Server

29

Analyseur de requtes
Permet de passer les requtes et de rcuprer les rsultats. Lors du lancement de
lanalyseur il faut se faire reconnatre du serveur. Lanalyseur de requtes ne
comprend que deux sortes de requtes : celles crites en T-SQL ou les demandes
dexcution de procdure stockes.
Un explorateur dobjets permet de visualiser : les tables, les colonnes des tables, les
vues, les procdures stockes
Pour excuter la requte soit : CTRL E, ALT X ou point dexclamation

SQL Server

Affichage du Plan dexcution

Affichage de Statistique

30

31

SQL Server

Gnrateur de profils SQL


Permet de suivre lactivit du serveur en temps rel, suivre les activits dun
utilisateur, dun serveur, visualiser les actions.
Remarque :
Administration du serveur.
Une fois le serveur mit en production, il est prfrable de faire la gestion partir
dun poste client cela vite de charger inutilement le serveur en activant linterface
graphique.

3.2 Allocation despace


Le systme dallocation utilis par SQL Serveur est le mode pr allocation
despace cest--dire quil faut dfinir la taille de la base de donnes AVANT dy
placer les donnes.

Fichier de base de donnes


Base de donnes

Fichier de donnes

Extension (64 Ko)

Fichier de journal

Fichier virtuel
(256 Ko minimum)

Page (8 Ko)

Le fichier de base de donnes est une entit cre au niveau du systme


dexploitation. Il possde un nom logique, un nom de fichier physique et une taille.
Seul SQL Serveur en laccs exclusif tant que le moteur SQL fonctionne.

32

SQL Server

3.2.1.1 Extension
Une extension est un bloc de 64Ko qui contient des donnes des tables ou des
index. Il y a deux types dextensions :

Extension mixte : elle est partage par plusieurs tables ou index. Elle peut
contenir jusqu 8 tables ou index diffrents
Extension uniforme : elle est alloue entirement une table ou un index.
Les 8 pages qui sy trouvent contiennent uniquement des donnes
appartenant une table.

3.2.1.2 Allocation des extensions


Lutilisateur na pas le choix, cest le systme qui dcide.
Une nouvelle table ou index est plac dans une extension mixte et se voit allouer
une page dans cette extension.
Les 8 premires pages dune table ou dun index sont alloues dans une extension
mixte.
partir de la neuvime page, lallocation se fait dans une extension uniforme. Le
systme alloue cette extension la table o lindex.
Tant quune table ne dpasse pas 64Ko (8 pages) elle est mlange dautres tables
et index.
Ds que la table dpasse 64Ko sa taille passe automatiquement 128Ko extension
uniforme ajoute.
Avec SQL Serveur lallocation de la premire page na pas lieu lors de la cration de
lobjet mais lors de linsertion du premier enregistrement.
Extension mixte

Extension mixte

Extension mixte

Extension uniforme

Table1
Table2
Index

3.2.1.3 Page
Une extension contient 8 pages de donnes. Dans la page sont stockes les lignes
de la table ou de lindex sauf champs de types texte et image. Au sein dune page il
peut y avoir en fonction de leur taille un ou plusieurs enregistrements en sachant
quun enregistrement est intgralement compris dans une page.
La taille dune page est de 1024*8=8192 octets. Lespace utile est de 8060 car
chaque page possde un en-tte de 96 octets et 36 octets de gestion. Taille retenir
lors de la conception des tables. Si chaque enregistrement dune table est de 4050
octets, il ny aura que 1 enregistrement par page 2* 4050 8100 suprieur * 8060
do 4010 octets perdus (50% de lespace perdu).

33

SQL Server

Lorsquune page contient plus dun enregistrement (ils sont stocks en squence),
chaque enregistrement est rfrenc par un offset qui est plac en fin de page et qui
contient le numro du premier octet de chaque enregistrement.
En-tte 96 octets
Enr. 1

Enr. 2
Enr. 3

4870

367

96

Table doffset

3.2.1.4 Tables sans index


Si une table na pas dindex, ses pages sont rparties en vrac, chaque table possde
un IAM (Index Allocation Map) qui permet de retrouver les extensions qui lui sont
alloues.
Extension

IAM
Donnes

3.2.1.5 Table avec index


Si un index est cr sur une table ses pages sont lies (chanes) entre elles. Les
pages index sont identiques aux pages de donnes. leur cration, elles se voient
allouer une page dans une extension mixte et partir de la neuvime page une
extension uniforme.
La page possde un entte de 96 octets et les lignes index occupent les 8060 octets
disponibles.

34

SQL Server

Extension

IAM
Donnes

3.3 Cration dun fichier de base de donnes


Un fichier de base de donnes contient des donnes et un journal des transactions
Il y a trois types de fichiers
Fichiers principaux de donnes (.MDF)
Fichiers secondaires de donnes (.NDF)
Fichiers de journaux (.LDF)
On peut crer deux types de fichiers de donnes : primaire et secondaire
Fichier primaire de donnes est obligatoire
Il renferme les informations de dmarrage pour le catalogue de base de donnes
Il contient des objets, des donnes utilisateurs
Son extension est mdf
Fichier secondaire de donnes est facultatif il est dfini par lutilisateur
Il contient des objets, des donnes utilisateurs
On peut placer les fichiers sur des disques diffrents pour amliorer la performance
Il peut y avoir 32766 fichiers secondaires. Son extension est ndf
Toute base de donnes possde un fichier principal et un fichier journal.
Les fichiers dune base de donnes sont crs lors de la cration de la base de
donnes. Elle est russie si lespace demand est libre sur le disque.
La liste des fichiers dune base de donnes se trouve dans la table sysfiles.
Le fichier principal de chaque base est rfrenc dans la table sysdatabases de
master.

SQL Server

35

Extension dun fichier


Il est possible daugmenter la taille dun fichier de base de donnes condition de
disposer de lespace disque dur. Avec SQL Server Management il suffit douvrir la
feuille de proprits de la base de donnes de slectionner le fichier et indiquer la
nouvelle taille.
Un fichier peut crotre automatiquement (option).On peut paramtrer la croissance
en valeur absolue en octet ou en relatif en %. On peut stipuler que le fichier na pas
de taille maximum (limit par la taille du disque dur).Conseiller de donner une taille
maximum pour la gestion des erreurs car on sait do elle vient.

Rduction dun fichier


SQL Serveur permet de rduire la taille des fichiers automatiquement ou
manuellement.

3.3.1.1 Automatique
Si loption autoshrink est active SQL Serveur rduit automatiquement la taille de
la base de donnes ds quil constate un volume despace libre important.
La rduction dun fichier deux rgles :
Les donnes sont rorganises dans le fichier
Le fichier ne peut tre rduit en dessous de sa taille initiale.

SQL Server

36

3.3.1.2 Manuelle
On peut rduire la taille du fichier en dessous de sa taille initiale.
Les donnes sont rorganises dans le fichier. On ne peut pas rduire la taille si la
taille finale est infrieure celle de la base Model. On peut utiliser la base pendant
que son fichier rtrcit. La rduction dun fichier entrane immdiatement celle de
la base de donnes. Opration sans risque.
Syntaxe :
DBCC SHRINKFILE
( { file_name | file_id }
{ [ , target_size ]
| [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
}
)
Exemple :
dbcc shrinkfile (Gestion_data) ou dbcc shrinkfile (1)
Renvoie la taille du fichier en pages de 8 Ko et le nombre de pages utilises
dbcc shrinkfile (Gestion_data, 250)
Rduit la taille du fichier de 400Mo 250Mo avec taille initial
On peut aussi rduire le journal de transaction.
Informations sur les fichiers de base de donnes.
Les informations sur les fichiers se trouvent dans la table sysfiles (on peut utiliser
la procdure sp_helpfile). Chaque base de donnes contient une table sysfiles qui
est responsable de sa rpartition sur le disque. Ceci permet quen cas de problme,
on puisse rattacher ces bases au nouveau systme.

SQL Server

37

Journal de transaction.
Le journal de transaction permet la restauration automatique du systme, il
contient lhistorique de toutes les modifications apportes la base de donnes.
Toutes les bases de donnes possdent son journal de transactions (.LDF). A
chaque fois quil y a une modification, lopration est consigne dans le journal des
transactions.
La transaction est envoye par le client.
Les enregistrements modifier par la transaction sont lus, sont mis jour et
restent en mmoire aprs modification
La transaction est sauve dans le journal
Ds que la transaction est valide (commit) elle est enregistre sur le disque.
Impossible davoir une base de donnes sans journal, mais on peut vider le journal
afin quil garde une taille rduite, pour cela il y a deux moyens :
Choisir le modle de rcupration simple
Excuter la commande backup log nom_base_de donnes with truncateonly.

Bases de donnes systme


SQL Serveur doit garder des paramtres systme et pour cela il utilise des
catalogues. Il y a 4 bases systmes qui ont une fonction propre :

MASTER :
Contient toutes les informations ncessaires au fonctionnement du serveur. En cas
de perte, le moteur SQL ne dmarre plus, do la reconstruire ou attacher version
de sauvegarde.
La base de donnes Master est compose de 16 tables qui assurent :
La scurit daccs,
Les connexions,
Gre le verrouillage,
Deux fichiers master.mdf et mastlog.ldf
MODEL :
Elle sert de modle aux nouvelles bases cres. Elle est compose de 18 tables
systmes (ou catalogues de base de donnes). Ces tables se trouvent dans toutes les

SQL Server

38

bases, y compris dans master car le contenu de model est copi intgralement dans
toute nouvelle base.
Deux fichiers model.mdf et modellog.ldf
La taille de model est de 1,13 Mo, cela veut dire quaucune base ne peut tre plus
petite que model.
Remarque :
Si lon veut que toutes les bases contiennent des objets particuliers (tables, rgles,
valeur, utilisateur autoris) ajoutez-les dans model et lors de la cration de
nouvelle base elle contient lintgralit de model.
TEMPDB :
Base de stockage temporaire pour le tri, sous requtes, regroupement
Deux fichiers Tempdb.mdf et Templog.ldf
MSDB :
Base utilise par lAgent SQL pour les tches automatises, les vnements
traiter, personne contacter en cas de problme.
Deux fichiers Msdb.mdf et Msdblog.ldf

SQL Server

39

CHAPITRE 4
ARCHITECTURE DUNE BASE DE DONNES
SQL Serveur est un systme de gestion de bases de donnes relationnelle (SGBDR).
Les options du moteur SQL Serveur sont stockes dans une base de donnes
(Master) ainsi que les clients autoriss, rfrences aux bases de donnes existantes.

4.1 Dfinition
Une base de donnes pour :
Un administrateur :
Cest un ensemble de fichiers contenant des donnes organises qui doivent tre
sauvegardes, nettoyes, scurises
Un utilisateur :
Cest un espace lui permettant denregistrer des informations et de les retrouver.
Un dveloppeur :
Cest ensemble de tables contenant des donnes, dindex permettant dacclrer
leur rcupration et de procdures.
Une base de donnes SQL Serveur est constitue dau moins deux fichiers :
Un fichier de donnes (*.MDF)
Un fichier de journal (*.LDF)
Elle est compose :
De tables contenant des donnes,
Dindex servant retrouver, trier, regrouper rapidement les donnes,
De dclencheurs excutant des oprations lors dinsertion, de modification
et/ou de suppression,
De types de donnes dfinis par lutilisateur,
De valeur par dfaut autorisant le systme insrer des valeurs dans les
colonnes non renseignes par le client,
De vues,
De fonctions dfinies par lutilisateur,
De procdures,
De diagrammes relation entre les tables
Elle ne contient ni formulaires, ni objets graphiques, elle a besoin dune application
frontale (VB, VC++)

SQL Server

40

4.2 Cration dune base de donnes


Il y a deux manires pour crer une base de donnes :
En utilisant SQL Server Management
En utilisant du Code Transact SQL
Les paramtres principaux sont : le nom, la taille initiale (par dfaut 1Mo),
lemplacement du fichier de donne et de mme pour le fichier journal (program
files\SQLSERVER\\data\nom.mdf et nom.ldf)
Syntaxe :
CREATE DATABASE nom_database ON primary
(NAME=nom_fichier_logique,
FILENAME=nom_fichier_physique,
SIZE=taille,
MAXSIZE= taille_max|unlimited,
FILEGROWTH= increment_extension)
LOG ON
(NAME=nom_fichier_logique,
FILENAME=nom_fichier_physique,
SIZE=taille,
MAXSIZE= taille_max|unlimited,
FILEGROWTH= increment_extension)
Exemple:
CREATE DATABASE gestion ON
(NAME=gestiondata,
FILENAME=c:\program files\microsoft SQL Server\
MSSQL$SERVERSQL_SOMER\data\gestion.mdf,
SIZE=10, (en Mo)
MAXSIZE= unlimited,
FILEGROWTH= 6)
LOG ON
(NAME=gestionlog,
FILENAME=c:\program files\microsoft SQL Server\
MSSQL$SERVERSQL_SOMER\data\gestion.ldf,
SIZE=10,
MAXSIZE= unlimited,
FILEGROWTH= 10)
La taille totale de la base de donnes gestion est de 20Mo
Donner une taille suffisante pour avoir un fichier form de blocs contigus et de
minimiser la fragmentation.
En production, sparer le fichier de donnes et le fichier de transaction sur des
disques physiques et non sur des partitions logiques.
La taille de ce fichier dpend du nombre de transactions quotidiennes, de la
frquence des sauvegardes, la croissance de sa taille peut passer de 5% 100%
quotidiennement, avec une croissance automatique par dfaut le choix est moins
critique. Mais prvoir des dclencheurs dans le cas de dpassement du seuil de
remplissage.

SQL Server

41

Croissance automatique et limitation maximale


Par dfaut, elle est en croissance automatique, systme augmente au fur et
mesure de ses besoins (indiquer un accroissement par bloc)
La taille maximale de la base par dfaut nest pas limite, mais en ralit elle lest
cest la capacit physique du disque dur. Pour une question de gestion des erreurs,
il est prfrable de donner une limite au disque dur.

Classement dune base de donnes


Les bases de donnes sont codes avec le jeu de caractres (un classement) du
serveur qui est choisi pendant linstallation. Lorsquon cre une nouvelle base, on
peut choisir un classement (un jeu de caractres) diffrent et rendre des bases de
donnes multilingues. Ce classement est dfini sa cration en utilisant la liste
NOM Classement de la bote de dialogue ou avec mot collate <nom_classement>
dans linstruction CREATE DATABASE, on peut le changer laide de ALTER
DATABASE
CREATE DATABASE gestion1 ON
(NAME=gesdata,
FILENAME='c:\program files\microsoft SQL
Server\MSSQL$SERVERSQL_SOMER\data\gestion1.mdf',
SIZE=100,
MAXSIZE= unlimited,
FILEGROWTH= 6)
LOG ON
(NAME=geslog,
FILENAME='c:\program files\microsoft SQL
Server\MSSQL$SERVERSQL_SOMER\data\gestion1.ldf',
SIZE=100,
MAXSIZE= unlimited,
FILEGROWTH= 10)
COLLATE Traditional_Spanish_CI_AI
ALTER DATABASE gestion1
COLLATE French_CI_AS

4.3 Changer attributs des fichiers base de donnes


Augmenter la taille dune base de donnes
Pour augmenter la taille dune base de donnes deux possibilits :
Augmenter la taille de lun de ses fichiers (en saisissant la nouvelle taille)
Ajouter des fichiers la base de donnes

SQL Server

42

Syntaxe
ALTER DATABASE database
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME =
new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
Exemple:
ALTER DATABASE gestion
MODIFY FILE
(NAME = gestion_data, SIZE = 20MB)
ALTER DATABASE Gestion
ADD FILE
( NAME = gestion_data1,
FILENAME = 'c:\Program Files\Microsoft SQL Server\...\ Data\gestion_data1.ndf',
SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)
Pour plus dinformation consultez laide en ligne de lanalyseur Transact SQL

Rduire la taille dune base de donnes


Dans le cas o lon a surestim la taille de la base de donnes, on peut la rduire
en rduisant la taille des fichiers avec linstruction DBCC ShrinkFile (rduire un
fichier cest rduire la base de donnes)
Exemple :
DBCC ShrinkFile (gestion_data,5)
On peut aussi la rduire en utilisant linstruction DBCC ShrinkDatabase (la valeur
est en %), le systme rcupre de lespace dans tous les fichiers y compris le journal
(seules les pages dextension vides sont supprimes).
Syntaxe :
DBCC SHRINKDATABASE
( database_name [ , target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
target_percent
Pourcentage d'espace disponible restant souhait dans le fichier de donnes aprs
la rduction de la base de donnes.

SQL Server

43

NOTRUNCATE
Permet de conserver l'espace de fichier libr dans les fichiers de la base de
donnes.
TRUNCATEONLY
Tout lespace inutilis dans les fichiers de donnes est libr par le systme
d'exploitation. target_percent est ignor lorsque l'instruction TRUNCATEONLY est
utilise.
Exemple :
Cet exemple diminue la taille des fichiers dans la base de donnes utilisateur
UserDB pour permettre de conserver un espace libre de 10 % dans les fichiers de
UserDB.
DBCC SHRINKDATABASE (UserDB, 10)
Si on active loption rduction automatique, le systme rcupre automatiquement
de lespace non allou pour le restituer au systme. Ne peut tre fait que
manuellement avec linstruction shrinkfile. La rduction automatique na lieu que
sil y a 25% despace inutilis.
Il est possible de rduire une base de donnes avec SQL Server Management.

SQL Server

44

Supprimer un fichier dune base de donnes


Il est possible de supprimer un fichier base de donnes pourvue quil soit vide et
quil ne soit pas principal (*.mdf car il contient toujours des tables), ni le premier
fichier journal.
Syntaxe :
Alter database remove nom_file
Il est de mme possible dutiliser SQL Server Management.
Pour vider un fichier, on utilise DBCC SHRINKFILE les donnes contenues dans ce
fichier sont transfres vers les autres fichiers sil y a de la place en suffisance.

Suppression dune base de donnes


La suppression dune base de donnes est irrversible.
Syntaxe :
Drop database nom_base_de_donnes
Avec SQL Server Management.

Changer le nom dune base de donnes


Possible de changer le nom dune base de donnes sans risque pour les donnes.
Mais pour les clients, ils doivent changer les liens ODBC. Cette modification nest
possible quavec Transact-SQL.
Syntaxe :
Alter database nom_base_de_donnes
Modify name= Nouveau_nom_de_la _base_de_donnes

Dtacher et attacher une base de donnes

SQL Server

45

Il existe trois procdures stockes pour dtacher et attacher une base de donnes.
Une procdure pour dtacher : librer des fichiers pour les copier ou les dplacer.
Et deux procdures pour attacher : lier des fichiers SQL Serveur.
Syntaxe et exemple :
sp_detach_db [ @dbname = ] 'dbname'
[ , [ @skipchecks = ] 'skipchecks' ]
Sp_detach gestion, false
false : fait la mise jour des index de statistiques.
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]

Sp_attach_db gestion,
e:\data\gestiondata.mdf,
f:\ data\gestiondata1.ndf,
g:\ data\gestionlog.ldf
Attache trois fichiers la base gestion
sp_attach_single_file_db [ @dbname = ] 'dbname'
, [ @physname = ] 'physical_name'

sp_attach_single_file_db 'gestion'
, 'e:\data\gestiondata.mdf'
Attache le fichier gestion et cre un fichier journal.
SQL Serveur propose aussi ces oprations en mode graphique.

SQL Server

46

Pour attacher une base de donnes on peut aussi crer une nouvelle base de
donnes et attacher les fichiers.
create database for attach
Exemple :
CREATE DATABASE ESSAI
ON PRIMARY
(FILENAME = 'C:\Program Files\Microsoft SQL Server\...\Data\gestion_data.mdf')
FOR ATTACH

Obtenir des informations sur la base de donnes


La procdure stocke sp_helpdb nom_base_de_donnes donne des informations
sur la taille, le propritaire, la date de cration, les fichiers qui la constituent.

SQL Server

47

4.4 Options de base de donnes


Les options dterminent le fonctionnement de la base de donnes. Linterface
graphique ne permet pas de modifier toutes les options, le seul moyen est dutiliser
la commande alter database.
Syntaxe :
ALTER DATABASE database
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
Les Options
SINGLE_USER | RESTRICTED_USER | MULTI_USER
Contrle l'accs des utilisateurs la base de donnes. Dfinit les utilisateurs
autoriss accder la base de donnes.
SINGLE_USER : la base de donnes ne peut tre utilise que par un seul utilisateur
la fois.
RESTRICTED_USER : seuls les membres des rles db_owner, dbcreator, ou
sysadmin peuvent utiliser la base de donnes.
MULTI_USER : rtablit l'tat de fonctionnement normal de la base de donnes.
OFFLINE | ONLINE
Indique si la base de donnes est hors connexion ou en ligne.
READ_ONLY | READ_WRITE
READ_ONLY met la base de donnes en mode de lecture seule. Les utilisateurs sont
autoriss lire les donnes des bases de donnes, et non les modifier. La base de
donnes ne peut pas tre en cours d'utilisation lorsque l'option READ_ONLY est
spcifie. La base de donnes master fait exception cette rgle, et seul
l'administrateur systme peut l'utiliser lorsque l'option READ_ONLY est dfinie.
READ_WRITE rtablit les oprations de lecture et d'criture de la base de donnes.
<cursor_option>
Contrle les options du curseur.
<auto_option>
Contrle les options automatiques.
AUTO_CLOSE ON | OFF
Si ON la base de donnes est arrte et ses ressources sont libres ds que le
dernier utilisateur la quitte.
Si OFF la base de donnes reste ouverte aprs que le dernier utilisateur l'a quitte.
AUTO_SHRINK ON | OFF
Si ON les fichiers de base de donnes sont candidats un compactage automatique
priodique.
<sql_option>
Contrle les options de conformit la norme ANSI.

SQL Server

48

ANSI_NULL_DEFAULT ON | OFF
Si ON : CREATE TABLE colonne autorise les valeurs NULL.
ANSI_PADDING ON | OFF
Si ON : les chanes sont compltes la mme longueur avant leur comparaison ou
insertion. Si OFF : les chanes ne sont pas compltes.
ANSI_WARNINGS ON | OFF
Si ON : erreurs ou avertissements sont mis.
ARITHABORT ON | OFF
Si ON : requte s'arrte lorsqu'un dpassement de capacit ou une division par zro
se produit

4.5 Les tables


Le cur dune base de donnes est les tables, cest l ou sont stockes les donnes.

Cration dune table


Pour crer une table, il faut avoir cr une base de donnes, soit en utilisant
linterface graphique, soit laide de lanalyseur de requtes par les instructions
Transact-SQL.
Une table peut contenir maximum 1024 colonnes et 2 milliards de tables par base
de donnes.
La manire la plus simple de crer une table est lutilisation de linterface
graphique, si on veut garder le script de cration pour lutiliser dans dautres tables
ou serveurs ou le modifier, cest possible.

SQL Server

Syntaxe :
CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
Exemple :
CREATE TABLE [dbo].[T_Client] (
Nom char (30) NOT NULL ,
Prnom char (20) NULL ,
Adresse char (50) NOT NULL ,
CP char (5) NOT NULL ,
Ville char (25) NOT NULL )
On peut crer des colonnes virtuelles, lavantage est que les donnes de ces
colonnes ne sont pas stockes.
Exemple :
Calcul dun prix TTC partir dune colonne HTVA et une colonne TVA.
CREATE TABLE [dbo].[produit] (
nom char (10),
PrixHTVA float NULL ,
TVA float NULL,
Prix as PrixHTVA*(1+TVA))

Les types de donnes


Il existe 29 types de donnes pour caractriser les colonnes dune table.
Ils sont regroups en 7 catgories.
Numrique exact : nombre double prcision avec ou sans dcimal
Numrique : nombre simple prcision avec ou sans dcimale
Montaire : numrique avec 4 dcimales utilises pour les valeurs montaires
Date et heure : information de date et heure
Caractre : caractres de longueur variable
Binaire : donnes reprsentes sous forme binaire
Spciaux : donnes complexes

49

50

SQL Server

4.5.1.1 Types numriques exacts


bigint
:
int
:
smallint
:
tinyint
:
decimal (p,s) :

8 octets entier valeur entre -263 et 263-1


4 octets entier valeur entre - 231 et 231 -1
2 octets entier valeur entre -215 et 215 -1
1 octet entier valeur entre 0 et 255
5 17 octets dcimale valeur entre -1038 +1 et 1038 1 (jusqua 38
chiffres)
numeric (p,s) : 5 17 octets dcimal valeur entre -1038 +1 et 1038 1 (quivalent
dcimale)

4.5.1.2 Types numriques approximatifs


float
real

: 4 ou 8 octets dcimal virgule flottante -2.2 E308 et 2.2 E308


: 4 octets dcimaux virgule flottante -3.40 E38 et 3.40 E38

4.5.1.3 Types montaires


money
: 8 octets montaire
smallmoney : 4 octets montaire

entre -263 et 263 -1


entre -231 et 231 -1

4.5.1.4 Types date et heure


datetime

: 8 octets date et d'heure entre le 1er janvier 1753 et le 31 dcembre


9999
smalldatetime : 4 octets date et d'heure entre le 1er janvier 1900 et le 6 juin 2079

4.5.1.5 Types caractres


char(n)
:
nchar(n)
:
varchar(n)
:
nvarchar(n)
varchar(max)
nvarchar(max)
text
ntext

1 8000 octets
ANSI longueur fixe 8000 caractres
2 8000 octets
Unicode longueur fixe 4000 caractres
1 8000 octets
ANSI longueur variable 8000 caractres
: 2 8000 octets
Unicode longueur variable 4000 caractres
: jusqu 2 G0
ANSI longueur variable 2 E30
: jusqu 2 G0
Unicode longueur variable 2 E29
: jusqu 2 G0
ANSI longueur variable 2 E30
: jusqu 2 G0
Unicode longueur variable 2 E29

4.5.1.6 Types binaires


bit
binary(n)
varbinary(n)
varbinary(max)
image

: valeur entre 1 True ou 0 False


: 1 8000 octets binaires taille fixe
: 1 8000 octets binaires taille variable
: jusqu 2 Go binaires taille variable
: jusqu 2 Go binaires taille variable

Il y existe dautres types de donnes dfinies dans SQL Serveur, voir laide en ligne

SQL Server

51

Cration de types de donnes dfinis par lutilisateur (TDDU).


La cration de types de donnes dfinis par lutilisateur (TDDU) permet de
constituer un rfrentiel de travail pour les tables. Par exemple, si on cre un type
Code_Postal comme char (5) et qu'il est dfini dans la dfinition de tables, on vite
d'avoir des colonnes une fois char (5) et une autre fois interner
Il peut aussi avoir une valeur par dfaut et une rgle de validation. La colonne de ce
type hrite de la valeur par dfaut et de la rgle.
Pour crer des TDDU, on peut le faire soit avec linterface graphique, soit avec le
code Transact-SQL.
Ouvrir une base de donne, choisir le type de donnes utilisateur, faire nouveau.

Remarque :
Il est impossible de crer un TDDU partir dun autre TDDU
Une fois cr, il est impossible de modifier un TDDU
Pour quil soit pris en compte pour toutes les nouvelles bases de donnes, placer le
dans la base de donnes MODEL. Tout objet dfini dans cette base se retrouve dans
les nouvelles bases de donnes.
La procdure stocke sp_addtype cre un type de donnes dfini par l'utilisateur
Syntaxe :
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ]
[ , [ @owner = ] 'owner_name' ]
Exemple : sp_addtype Code_Postal, 'char (5)', 'NOT NULL'

Renommer un TDDU
Il est possible de renommer lobjet avec SQL Server Management (interface
graphique) ou avec la procdure stocke sp_rename
Syntaxe :

SQL Server

52

sp_rename [ @objname = ] 'object_name' ,


[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Exemple : sp_rename CodePostal,CP

Supprimer un TDDU
Avec linterface graphique, slectionner lobjet, choisir loption delete
Avec la procdure stocke sp_droptype
Syntaxe :
sp_droptype [ @typename = ] 'type'
Exemple : Sp_droptype CP

Les valeurs par dfaut


Lors dinsertion denregistrement, pour acclrer la saisie, certaines valeurs de
champ proposent des valeurs par dfaut. Ces valeurs sont dfinies soit au niveau
de la colonne de la table, soit au niveau de son type.
On peut dfinir cette valeur par dfaut au moment de la cration ou lors de la
modification de la table.

Contrainte DEFAULT
La contrainte DEFAULT permet de dfinir une valeur par dfaut attacher une
colonne de la table.

SQL Server

53

On peut visualiser les contraintes cres sur les tables

Exemple :
CREATE TABLE Commande
(Date_Commande datetime default getdate(),
Montant decimal default 0 not null,
Numcli int)
ALTER TABLE Commande
ADD CONSTRAINT Defnumcli default 0 for numcli
On ajoute une contrainte DEFAULT en spcifiant un nom Defnumcli la
contrainte au lieu que ce soit SQL Serveur qui cre le nom.
ALTER TABLE Commande
DROP CONSTRAINT [DF__commande__dateco__1A14E395]
On supprime une contrainte.

SQL Server

54

Cration de valeur par dfaut


On peut crer une valeur par dfaut sans la rattacher immdiatement une
colonne. Lintrt est quil peut tre rattach un TDU. Ceci se fait en deux tapes :
Cration de la valeur par dfaut
Attacher la valeur par dfaut
Choisir la base de donnes
Crer une nouvelle valeur par default
Donner un nom et la valeur

Associer cette valeur une colonne ou TDU

SQL Server

Cration
CREATE
Exemple
CREATE

55

dune valeur par dfaut dans une base courante, en utilisant linstruction
DEFAULT
:
DEFAULT CP as 1000

En utilisant la procdure stocke sp_bindefault, on peut lier une valeur par dfaut
une colonne ou un TDDU :
Syntaxe :
sp_bindefault [ @defname = ] 'default' ,
[ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
Exemple : sp_bindefault cp, Code_Postal
La valeur par dfaut a t lie au TDDU.
sp_bindefault cp,'[Commande]..[Code_Postal]'
La valeur par dfaut est lie la colonne Code_Postal de la table Commande.
Remarque :
Le flag futurronly est utilis dans le cas ou il existe dj des valeurs par dfaut
dans une colonne

Supprimer une valeur par dfaut


Avant de supprimer une valeur par dfaut, il faut supprimer les liens avec les
colonnes et les TDDU, soit par linterface graphique, soit par la procdure stocke
sp_unbindefault.
Syntaxe :
sp_unbindefault [@objname =] 'object_name'
[, [@futureonly =] 'futureonly_flag']
Dissocie (supprime le lien) une valeur par dfaut d'une colonne ou d'un type de
donnes dfini par l'utilisateur dans la base de donnes en cours.

56

SQL Server

Exemple :
sp_unbindefault Code_Postal Valeur par dfaut dtache du type de donnes.
sp_unbindefault
colonne de table.

'[commande]..[Code_Postal]' Valeur par dfaut dtache de la

Pour supprimer la valeur par dfaut, on utilise linstruction :


DROP DEFAULT CP

Rgles de validation
Les rgles de validation assurent lintgrit de domaine.
Permet de limiter les valeurs de saisies par rapport une plage dtermine
Permet dimposer un format de saisie.
Par exemple, imposer que ge soit compris entre 18 et 65ans ou bien que numro
de tlphone soit du format ## ###.##.##.
On dispose de deux possibilits
La contrainte check
La rgle de validation RULE

Contrainte CHECK
Elle est dfinie lors de la cration ou de la modification dune table. Une colonne
peut avoir plusieurs contraintes CHECK. La cration peut se faire par SQL Server
Management ou par du code Transact-SQL.

Choisir loption modifier table


Choisir le bouton proprits
Choisir longlet Check
Puis crire la contrainte : Age >=18 and Age<=65 ou Age between 18 and 65.
Exemple :
Crer une Table Test, colonne ge comprise entre 18 et 65 et Code_Postal
composes de cinq chiffres

SQL Server

57

CREATE TABLE Test (


Nom char (25),
Age int check (Age between 18 and 65),
Adresse char(50),
CP char (5),
Ville char (25),
Pays char (30),
Constraint Code_Postal
Check (CP like '[0-9][0-9][0-9][0-9][0-9]')
)
Ajout dune contrainte sur la colonne pays les valeurs insrer fait partie de la liste
dfinie.
ALTER TABLE Test
ADD CONSTRAINT Country
Check (pays in ('France','Suisse','Belgique','Luxembourg'))
Pour supprimer une contrainte
ALTER TABLE Test
DROP constraint country
Lavantage du check par rapport au RULE est dutiliser des noms de colonnes pour
vrifier quune valeur est suprieure une autre au sein dune mme table.
Exemple :
ALTER TABLE Commande
ADD constraint PTTCsupPHT check (PTTC>PHT)

Cration de RULE
La cration de RULE ou la cration de rgle de validation pour les colonnes est
quivalente la contrainte CHECK ; on la cre, on lattache une colonne ou aux
types de donnes. La syntaxe est similaire une condition WHERE.
Avec SQL Server Management, les deux oprations se droulent dans une bote de
dialogue. Puis on associe la rgle une colonne ou un type de donnes. Donner
un nom pertinent la rgle.

SQL Server

Syntaxe :
CREATE RULE rule
AS condition_expression
Exemple :
CREATE RULE CpRule
As @cp like [0-9][0-9][0-9][0-9][0-9]
@ nom : reprsente une variable locale
CREATE RULE Age
as@Age >=18 and @Age<=65
Syntaxe
Pour lier la rgle une colonne ou un TDDU, on utilise la procdure stocke
sp_bindrule.

Syntaxe :
sp_bindrule [ @rulename = ] 'rule' ,
[ @objname = ] 'object_name'
Exemple :
sp_bindrule CpRule,Type_CP
On attache la rgle CpRule au type utilisateur Type_CP
sp_bindrule CpRule,'Personnel.[CP]'
On attache la rgle CpRule la colonne Code_Postal de la table personnelle

Pour supprimer une rgle de validation, on utilise la procdure stocke


sp_unbindrule
Syntaxe :
sp_unbindrule [@objname =] 'object_name'
[, [@futureonly =] 'futureonly_flag']

58

SQL Server

59

Exemple : sp_unbindrule Type_CP


Une colonne peut comporter une contrainte CHECK et une rgle RULE, la
contrainte est vrifie en premier lieu.
La contrainte fait partie de la table et peut faire rfrence plusieurs colonnes.

4.6 Les cls


Les cls sont la base de lintgrit dentit (chaque ligne est identifie de manire
unique) et de lintgrit rfrentielle.
Les cls sont gres dans les tables systmes : SysContraints et SysReferences.
Pour obtenir des informations sur les cls primaires et trangres dune table,
utilisez les procdures stockes sp_pkeys et sp_fkeys.

Cl primaire.
La contrainte Primary Key indique au systme que la table dispose dune colonne
ou un groupe de colonnes permettant didentifier de manire unique chaque
enregistrement de la table. (Remarque : la contrainte unique le permet aussi)
On peut la crer ou la supprimer avec SQL Server Management ou avec les
commandes Transact-SQL CREATE TABLE ou ALTER TABLE.
La cration dune cl primaire induit celle dun index unique (le type de lindex est
cluster ou non, en SQL Serveur lindex cluster est par dfaut). La colonne ou groupe
de colonnes naccepte pas la valeur NULL et naccepte pas de doublons dans les
colonnes.

SQL Server

60

Syntaxe :
[ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
Exemple :
CREATE TABLE Test
(Numcli int primary key)
Crer une cl primaire le nom est gnr par le systme
CREATE TABLE Test
(Numcli int constraint PKNumcli primary key clustered)
Crer une cl primaire le nom est PKNumcli et lindex est de type cluster
CREATE TABLE Test
(Nom char (25),
Prenom char (25),
Constraint PKey primary key (Nom,Prenom))
Crer une cl primaire composite

Cl trangre.
Cette contrainte permet de grer lintgrit rfrentielle. La notion de cl trangre
sappuie sur une relation de cl primaire (la table Parent doit avoir une contrainte
Primary Key ou Unique Key pour que la cration de cl trangre puisse se faire).
On ne peut relier une cl trangre qua une cl primaire ou unique.
On peut la crer ou la supprimer avec SQL Server Management ou avec les
commandes Transact-SQL CREATE TABLE ou ALTER TABLE.
Avec SQL Server Management il propose la liste des cls primaires ou contraintes
unique pouvant servir crer une relation.
Dans SQL Serveur, il est possible de crer, de supprimer et de modifier une cl
trangre partir du diagramme de donnes.

SQL Server

61

Avec les commandes Transact-SQL, on utilise les mots Foreign Key et References.
Syntaxe :
[ CONSTRAINT constraint_name ]
FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
Exemple :
CREATE TABLE Enfant
(Numcli int References Parent(numcli))
Crer une cl trangre, le nom est gr par le systme faisant rfrence la
colonne Numcli de la table Parent. Cette colonne doit tre une cl primaire ou une
contrainte unique.
CREATE TABLE Enfant
(Numcli int,
Foreign Key (numcli) References Parent(numcli))
CREATE TABLE Enfant
(Nom char(25),
Prenom char(25),
Constraint FKey Foreign Key (Nom,Prenom) References Parent(Nom,Prenom)
On delete cascade)

SQL Server

62

Crer une cl trangre composite faisant rfrence une cl primaire composite,


mais en uvre la suppression en cascade. Le mot cl contraint permet attribu un
nom explicite la cl.
Si le type est diffrent ou la colonne nest pas primaire ou unique la cration de la
cl choue.
La cration dune cl trangre ne crer pas dindex. Pour amliorer les
performances, crer un index sur la cl facilite les oprations de jointure. partir
de la cration dune cl trangre, lintgrit rfrentielle est mise en place on ne
peut crer denregistrement enfant sans quil existe un parent correspondant. Ni
supprimer un enregistrement parent qui possde des enregistrements enfant
moins dactiver la suppression en cascade. Cette dernire vite la mise en uvre de
dclencheur.
La suppression en cascade supprime automatiquement tout enregistrement enfant
lie lenregistrement supprime. SQL Serveur prend en charge toute la chane de
suppression. Si un enregistrement enfant ne peut tre supprim, la transaction est
annule.
Il existe 4 types de suppression en cascade :

Suppression en cascade interdite : si lenregistrement parent possde des


enregistrements enfant, il ne peut tre supprim sauf si ses enfants sont
supprims au pralable (dfaut)
Suppression en cascade avec suppression automatique des enfants
Suppression en cascade valide avec mise NULL de la cl trangre mise en
uvre avec des dclencheurs
Suppression en cascade valide avec mise une valeur par dfaut de la cl
trangre mise en uvre avec des dclencheurs

Cet ajout de mise jour et de suppression en cascade rapproche normment SQL


Serveur des fonctionnalits prsentes dans Access.

Contrainte UNIQUE
Cette contrainte assure lunicit des lignes comme Primary Key mais accepte les
valeurs NULL. Les colonnes possdant une contrainte unique peuvent servir de
source une relation.
On peut la crer ou la supprimer avec SQL Server Management ou avec les
commandes Transact-SQL CREATE TABLE ou ALTER TABLE.
Avec SQL Server Management, choisir le radio contrainte et non index. Dans le
premier cas, on cre une contrainte unique qui peut tre source dune relation avec
lindex unique non.

SQL Server

63

Syntaxe :
[ CONSTRAINT constraint_name ]
{ UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
Exemple :
CREATE TABLE Test
(NumComm int unique)
CREATE TABLE Test
(Nom char(25),
Prenom char(25),
Constraint UniNomPren unique clustered (Nom,Prenom))
Crer une contrainte unique composite
Aprs la cration dune contrainte unique, il est impossible de crer des doublons y
compris des valeurs NULL, un seul NULL est autoris.

4.7 Modifier une table


On peut tout modifier dans une table mme si elle comporte des enregistrements.
Ajouter une colonne
Supprimer une colonne
Modifier le type de donnes dune colonne
Changer lordre des colonnes

Ajouter une colonne


Une colonne peut tre ajoute une table mme si elle contient des donnes.
Syntaxe :

64

SQL Server

ALTER TABLE table


{ ADD
[ < column_definition >
| column_name AS computed_column_expression [ ,...n ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ (seed , increment ) [ NOT FOR REPLICATION ] ] ]
[ ROWGUIDCOL ]
[ < column_constraint > ] [ ...n ]
}
Exemple :
ALTER TABLE Personnel
ADD Telephone varchar(15) null
On ajoute une colonne Telephone
existantes dans la table.

qui accepte les valeurs NULL pour les lignes

Ajout dune colonne avec une valeur par dfaut. Toutes les lignes existantes dans la
table recevront une valeur par dfaut. La colonne cre naccepte pas la valeur
NULL.
Exemple :
ALTER TABLE Personnel
ADD DateModif datetime not null default getdate()
On ajoute la colonne DateModif la table Personnel et on affecte la date du jour
pour les lignes existantes.

Modifier le type de donnes


On peut modifier le type dune colonne pour agrandir ou rduire la taille de champ
ou passer de smallint int. Il y a des conversions possibles et dautres impossibles.
Certaines conversions peuvent entraner une perte de donne passer de char(20)
char(10), par exemple.
Syntaxe :
ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
Exemple :
ALTER TABLE Personnel
ALTER column telephone char(8)

SQL Server

65

Conversion explicite
Conversion implicite

Conversion interdite
Requiert la conversion explicite CAST

Supprimer une colonne


Avec SQL Server Management, il suffit de :
Choisir la table,
Choisir modification de la table,
Slectionner la colonne
Choisir supprimer la colonne
Avec le code Transact-SQL :
ALTER TABLE Personnel
DROP column Telephone

4.8 Le diagramme de la base de donnes


Il permet de visualiser le schma relationnel et de le modifier en mode graphique.
La cration dun diagramme seffectue en slectionnant :
Nouveau diagramme de base de donnes.
Lassistant demande de choisir les tables que lon souhaite voir apparatre sur le
diagramme. Si des relations (cls trangres cl primaire) existent, lassistant
visualise automatiquement les relations avec les tables associes.
Les tables sont places dans la fentre du diagramme, partir de cette fentre on
peut ajouter des tables, crer des tables, supprimer des tables ou modifier des
tables, ajouter ou supprimer des relations.

SQL Server

66

Pour visualiser les relations existantes entre les tables, slectionner le lien et choisir
proprits.
On peut placer des annotations (commentaires) sur le diagramme. Noublier pas de
sauvegarder le diagramme. On peut imprimer le diagramme.

4.9 Les index


Les index correspondent la cl de la performance. La conception et la cration
dindex jouent un rle essentiel dans les performances dune base de donnes.
A quoi a sert.
La recherche dinformation lorsquelle ne sappuie pas sur un index est squentielle,
si on recherche les occurrences LEON dans une table, il faut lire tous les
enregistrements et vrifie sil sagit ou non de LEON. Avec un index, le systme
trouve plus rapidement linformation comme avec lindex dun livre. Lindex est
ordonn et donne rapidement les numros de page des occurrences. Sous SQL
Serveur 2000, il y a deux types dindex les clustered et les non clustered.

Les types index


Les index sous SQL Serveur sont de type arbre quilibre. Lavantage de cette
structure permet des performances identiques quel que soit lemplacement de
lenregistrement dans la table.

SQL Server

67

Cest une structure hirarchique plusieurs niveaux. On distingue deux niveaux le


niveau feuille et non feuille. Le niveau feuille dun index, contient toutes les valeurs
de cls tries. Il y a autant denregistrement que dindex de niveau feuilles dans la
table. Les niveaux non feuille contiennent les pages permettant daccder aux
autres niveaux non feuille ou au niveau feuille. Il peut y avoir plusieurs niveaux
non feuille cela dpend du nombre denregistrement et de la longueur de la cl.
Cette structure se divise en deux types les index clustered (index sur table ordonn)
et index non clustered (index sur table non ordonn) le propre dun index est tre
ordonn.
On peut crer, modifier les index avec SQL Server Management, avec lassistant ou
avec la commande Transact- SQL CREATE.
Syntaxe :
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
[ WITH < index_option > [ ,...n] ]
[ ON filegroup ]
< index_option > :: =
{ PAD_INDEX |
FILLFACTOR = fillfactor |
IGNORE_DUP_KEY |

SQL Server

68

DROP_EXISTING |
STATISTICS_NORECOMPUTE |
SORT_IN_TEMPDB

Exemple :
CREATE CLUSTERED INDEX Nom_Pren
ON Personnel (Nom, Prnom)
On cre un index clustered composite de nom Nom_Pren avec les colonnes Nom et
Prnom de la table Personnel
Par dfaut cest le type non clustered.

Index clustered
Il est construit sur une table dont les enregistrements sont tris suivant la cl
dindex. La table est trie pendant la construction de lindex. La particularit est
que le niveau feuille est confondu avec les feuilles de donnes donc inutile davoir
un niveau feuille distinct, la table est trie. Une autre caractristique des index
clustered est que chaque valeur de cl est unique. Si plusieurs valeurs sont
identiques, les cls sont rendues uniques par lajout dune colonne (compteur
interne).
Le fait que la table soit trie nest pas sans consquence pour les performances en
insertion et mise jour. En revanche grce au tri physique des enregistrements la
rcupration de donnes avec la clause between est rapide.
Il ne peut avoir quun index clustered par table.

Index non clustered

SQL Server

69

Il ne trie pas les donnes de la table. Cest lindex par dfaut, chaque ligne du
niveau feuille contient une valeur de cl et une rfrence lenregistrement
correspondant.
La rfrence est un numro de ligne sous la forme :
Numro de Fichier : Numro de Page : Numro dEnregistrement
Par exemple 1 :134 :12 ,douzime enregistrement de la page 134 du fichier 1.
Sil existe un index clustered la rfrence est la cl clustered de lenregistrement.
Une fois le niveau feuille atteint la recherche continue dans lindex clustered grce
la cl rcupr dans lindex non clustered.
Exemple :
Soit un index clustered sur le numro client et un index non clustered sur la ville.
Si on recherche les clients Bruxellois, le systme cherche dans lindex non
clustered les numros des clients (rfrence clustered) dont la ville est Bruxelles (cl
non clustered) puis parcours lindex clustered avec les numros obtenus.
La premire opration utilisation de lindex non clustered pour restreindre la
recherche aux clients bruxellois. La deuxime opration est utilisation de lindex
clustered pour piloter la recherche des enregistrements sur le numro de client
Il peut avoir 249 index non clustered par table.

4.10 Les vues


Une vue est une requte Select laquelle on a donn un nom et on peut lutiliser
comme si ctait une table. Lintrt des vues est de fournir un ensemble de
chemins daccs aux informations, en masquant la complexit des objets sousjacents. Les vues permettent damliorer les performances dune application, il est
possible de placer des index sur les vues.
Une vue peut tre cre partir dune ou plusieurs tables.

SQL Server

70

On peut crer, modifier des vues soit avec SQL Server Management, soit avec du
code Transact- SQL.

Syntaxe
Syntaxe :
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] )
]
[ WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA }]
AS
select_statement
[ WITH CHECK OPTION ]
Exemple :
CREATE VIEW vue1
As
Select Nom, Produit, Ville
From Client inner join Commande
On Client.NumCli=Commande.NumCli
Remarque :
La clause with encryption : permet de crypter le code
Schemabinding : les objets sous-jacents sont lis la vue la structure ne peut tre
modifi si la modification un impact sur la vue.
View_metadata : utilis pour optimiser les relations ODBC
Une vue sutilise avec une instruction Select. Les instructions de modification
(Insert, Delete, Update) ne peuvent mettre jour quune seule table sous-jacente. Si
la vue est multi tables Insert et Delete est impossible. Update est admis sil fait
rfrence dans la clause set des colonnes dune mme table.
Impossible de mettre jour et dinsrer des enregistrements dans les colonnes
calcules.
Si la vue ne slectionne pas la totalit des colonnes, linsertion nest possible que si
les colonnes exclues sont NULL ou valeur par dfaut.

SQL Server

71

Avec version prcdente, il fallait pour modifier une vue la supprimer puis la
recrer avec la perte des permissions sur la vue problme de gestion.
Pour modifier une vue, avec SQL Server Management slectionner la vue choisir
loption modifier vue. Avec du code Transact- SQL
Syntaxe :
ALTER VIEW [ < database_name > . ] [ < owner > . ] view_name [ ( column [ ,...n ] ) ]
[ WITH
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }]
AS
select_statement
[ WITH CHECK OPTION ]
Exemple :
ALTER VIEW vue1
As
Select Nom, Prnom, Ville, Produit
From client inner join commande
On client.NumCli=Commande.NumCli

4.11 Procdures stockes


Une procdure stocke permet deffectuer un traitement sur les donnes. Une
procdure stocke peut tre appele depuis une autre procdure par le client ou le
serveur. La diffrence avec une requte classique est quelle est pr compile et
optimise pour acclrer son excution.
Elles sont utilises par ODBC lors de lexcution de requte initie par le client. Les
procdures stockes par le systme permettent deffectuer des tches de gestion et
dadministration, elles sont prfixes par sp_
On peut crer une procdure, avec linterface SQL Server Management en
introduisant le code ou avec du codes Transact- SQL.

Syntaxe :
Syntaxe
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]

SQL Server

72

] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION
| RECOMPILE , ENCRYPTION
}
]
[ FOR REPLICATION ]
AS
sql_statement [ ...n ]
Exemple :
Create proc nouveau_client
As
Create proc commande @commande int
As
Crer une procdure commande avec une variable entire

Utilisation
Lappel dune procdure se fait par le mot cl EXEC[UTE] suivie du nom.Les
procdures ne sont pas recompiles moins de les forcer.
Syntaxe :
[ [ EXEC [ UTE ] ]
{
[ @return_status = ]
{ procedure_name [ ;number ] | @procedure_name_var
}
[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ]
[ ,...n ]
[ WITH RECOMPILE ]
Exemple :
EXEC Commande 4

Modification
Pour modifier une procdure, on peut soit la supprimer et la recrer (perte des
permissions), soit utilis linterface graphique SQL Server Management choisir
loption proprit de la procdure.
Syntaxe :
ALTER PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION
| RECOMPILE , ENCRYPTION
}
]
[ FOR REPLICATION ]

SQL Server

73

AS
sql_statement [ ...n ]
Alter proc nouveau_client
As
Exemple :
Alter proc commande @commande int, @code bit
As

4.12 Fonctions dfinies par lutilisateur


Cest une nouveaut dans SQL Serveur cest un complment idal des vues et des
procdures stockes. Elles permettent de crer des fonctions complexes.
Il y a deux types de fonctions les scalaires et les types tables. Leurs crations sont
identiques.

Slectionner le dossier fonctions dfini par lutilisateur.


Choisir nouveau
Introduire votre code.

Fonctions scalaires
Elle renvoie une seule valeur et accepte jusqu 1024 paramtres. Elle sutilise
comme une fonction systme. Elle peut tre utilise dans une expression, dans un
select, une condition where ou une colonne calcule. Elles sont types sauf les
type : timestamp, table, cursor ou type dfini par lutilisateur.
Syntaxe :
CREATE FUNCTION [ owner_name. ] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS scalar_return_data_type
[ WITH { ENCRYPTION | SCHEMABINDING } [ [,] ...n] ]
[ AS ]
BEGIN
function_body

SQL Server

74

RETURN scalar_expression
END
Exemple :
CREATE Function PTTC (@PHT money,@TVA float)
Returns money
As
Begin
Return @PHT*CAST((1+@TVA)as money)
End
Calcul le prix TTC partir du PHT et du taux de TVA
Select produit, dbo.PTTC(unitprice,0.21) as PPTC from Products
Lappel de la fonction doit tre prcd du nom du propritaire uniquement pour les
fonctions scalaires.
La fonction peut tre aussi utilise dans la cration de table.
Exemple :
CREATE TABLE Produits
( Idproduit int,
Nom char(20),
PHT money,
TVA float,
PTTC as dbo.PTTC(PHT,TVA))
Create function pttc (@pht money,@TypeTVA int)
Returns money
As
Begin
Declare @ TauxTVA float
Declare @ Sortie money
Select @TauxTVA=TauxTVA from TVA where TypeTVA=@TypeTVA
Set @Sortie=@pht*cast((1+@TauxTVA)as money)
Return @Sortie
End
On recherche le taux de TVA dans une table partir du TypeTVA

Fonctions tables
A linverse du type scalaire, elles renvoient plusieurs valeurs sous forme de table. Il
y a deux sous-types les inlines et multi-instructions. Elles peuvent tre utilises
la place dune table ou dune vue dans la clause FROM.

4.12.1.1 Fonction inline


La plus simple des fonctions de type table. Renvoie le rsultat dune seule
instruction Select.
Syntaxe :
CREATE FUNCTION [ owner_name. ] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS TABLE

SQL Server

75

[ WITH { ENCRYPTION | SCHEMABINDING } [ [,] ...n] ]


[ AS ]
RETURN [ ( ] select-stmt [ ) ]
Select * from functioninline
Elle nest pas prfixe comme pour les fonctions scalaires.

4.12.1.2 Fonction multi instructions


Ce sont les plus complexes et elles offrent le plus de fonctionnalits.
CREATE FUNCTION [ owner_name. ] function_name
( [ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [ ,...n ] ] )
RETURNS @return_variable TABLE < { column_definition | table_constraint } [ ,...n ] >
[ WITH ENCRYPTION | SCHEMABINDING } [ [,] ...n ] ]
[ AS ]
BEGIN
function_body
RETURN
END

4.13 Les dclencheurs ou Triggers


Introduits par Sybase. Cest une forme particulire de procdure stocke de type
vnementiel. Procdure stocke appartenant une table rattache un vnement
produit par une instruction Insert, Update ou Delete. Lors de lexcution dune de
ces instructions, le dclencheur associ va sexcuter. Ils permettent de mettre en
uvre des vrifications dintgrit.
SQL Serveur possde deux types de dclencheurs AFTER et INSTEAD OF. Il peut
exister plusieurs triggers AFTER par table sur les vnements insert, Delete ou
Update.

Trigger insert.
Sexcute chaque instruction Insert initie par le client, par une procdure ou par
le systme. Lors de linsertion, lenregistrement est insre dans la table destination
et une table temporaire (inserted). Elle nexiste que pendant le temps de linsertion
et de lexcution du trigger. La table disparat lorsque le dclencheur termine son
excution.
La table inserted est utilise pour vrifie la cohrence. Ce type de trigger est utilis
pour la vrification des rgles dintgrit rfrentielle.
Exemple :
Dans une commande le systme vrifie dans la table client que le client existe si
pas de problme, la transaction se termine sinon le trigger annule la transaction
[rollback ]supprime lenregistrement insr.

76

SQL Server

Table Destination

Table Inserted

Trigger delete
Sexcute chaque instruction Delete initie par le client, par une procdure ou
par le systme. Lors dune suppression, lenregistrement est supprim de la table
source et insrer dans une table temporaire (deleted). Elle nexiste que pendant le
temps de la suppression et de lexcution du trigger. La table disparat lorsque le
dclencheur termine son excution.
La table deleted est utilise pour rcuprer les valeurs sil y a lieu. Ce type de trigger
est utilis pour assurer les rgles dintgrit rfrentielle.
Exemple :
Lors de la suppression dun client Le trigger vrifie que le client na pas de
commande si pas de problme, la transaction se termine sinon le trigger annule la
transaction lenregistrement reprend sa place dans la table.

Table Source

Table Deleted

Trigger update
Sexcute chaque instruction Update initie par le client, par une procdure ou
par le systme. Lors de la mise jour, lenregistrement est supprim de la table
source et insrer dans une table temporaire (deleted) alors que le nouvel
enregistrement est insr dans la table destination et la table inserted. Succession
de Delete et Insert.
Le triggers peut tre mis en uvre pour autoriser ou interdire la modification dune
ou plusieurs colonnes par certains utilisateurs.
Tous ces types de dclencheurs sont en mode AFTER, sexcutent aprs que laction
utilisateur a eu lieu. Pas de dclencheur BEFORE comme dans oracle mais un
dclencheur INSTEAD OF.

77

SQL Server

Table Destination

Table Inserted

Table Deleted

Dclencheur INSTEAD OF - " la place de"


SQL 2000 a introduit les trigger INSTEAD OF, dclencheur qui sexcute avant que
lopration Insert, Update ou Delete nait lieu.
Ils peuvent tre crs sur une table ou sur une vue. Les vues nacceptent pas les
triggers AFTER. Il ne peut y avoir quun trigger par instruction et par table/vue.
Sur Insert : linsertion se fait uniquement sur la table inserted puis le trigger
sexcute. Il peut tester les valeurs et dcider de faire rellement linsertion.
Sur Delete : lenregistrement supprimer est insr dans la table deleted. Le trigger
a la capacit de tester les valeurs et dcider de faire rellement la suppression.
Sur update : limage avant est stocke dans la table deleted et limage aprs est
stocke dans la table inserted. Le trigger peut tester les valeurs avant et aprs la
mise jour, avant de dcider de faire rellement la modification.
Lintrt de ce type de trigger est de ne pas faire dopration rellement dans la table
avant que le trigger ne lexcute, limite limpact sur le journal de transaction et
acclre le traitement.
La cration dun trigger peut se faire soit via linterface graphique, soit avec du code
Transact- SQL.

SQL Server

78

Cest une simple fentre ou lon lintroduit le code. Il ne figure pas parmi les
dossiers des objets comme les procdures car ils sont associs une table. Pour les
crer, il faut passer par le dossier table, pointer la table et passer par le menu
contextuel.
La syntaxe est plus simple que celle des procdures car pas question de
paramtres. Beaucoup dinstructions ne sont pas autorises dans le code du
trigger : CREATE, ALTER, DROP, GRANT, REVOKE, SELECT INTO,
La syntaxe sapplique aux trois types de dclencheur.
Syntaxe :
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
sql_statement [ ...n ] }
|
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ]}
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
}]
sql_statement [ ...n ]
}
}
Exemple :
CREATE TRIGGER inser_commande on commandes
for insert
as
Le trigger sexcute tout seul, linsu de lutilisateur qui a initi linstruction
Update, Insert ou Delete. Dans le cas o un trigger met jour une table qui son
tour lance un autre dclencheur qui 'effet de boule de neige', on est limit 32
niveaux au-del la transaction est annul.
Pour inhiber le dclenchement imbriqu, il faut mettre le paramtre systme nested
triggers faux. Soit via linterface graphique, soit avec la procdure stocke
sp_configure "nested trigger",0.
Le temps dexcution dun trigger est court son code est pr compil et optimis.
Avec les triggers il convient de ne pas en abuser et de se limiter des oprations
simples.

Activation et dsactivation des dclencheurs.

SQL Server

79

Lors de la cration ou la modification dun trigger il est activ, il sexcute chaque


instruction. La dsactivation dun trigger et non la suppression peut se faire
uniquement par du code.
Syntaxe :

ALTER TABLE table


{
{ ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
}
Exemple :
ALTER TABLE Client disable trigger ins_client

80

SQL Server

CHAPITRE 5
LA SAUVEGARDE ET LA RESTAURATION
5.1 Introduction
La sauvegarde occupe une place importante dans les tches dadministration. La
perte dune base de donnes a des rpercussions importantes pour une socit.
Cest une des oprations les plus importantes du systme, mcanisme simple de
sauvegarde et gestion de sauvegarde. Personne nest labri dun crash du disque
dur ou dune mauvaise manipulation.
Sauvegarder quoi ?
Les bases de donnes cres, mais aussi les bases systmes si on fait de la
rplication et les journaux de transactions pour tenir compte des modifications
apportes aux donnes.
Quand ?
Tous les jours ou toutes les semaines cela dpend des bases de donnes, si donnes
frquemment mises jour, de lespace allou au journal de transactions, de la
confiance accorde aux bandes de sauvegarde, le temps de sauvegarde
La base de donnes master est la cl de vote de SQL Serveur.
Exemple :
Plan de sauvegarde incrmental
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi

sauvegarde
sauvegarde
sauvegarde
sauvegarde
sauvegarde
sauvegarde
sauvegarde

complte de la base 12h00


du journal 21h00
du journal 21h00
du journal 21h00
du journal 21h00
du journal 21h00
du journal 21h00

La sauvegarde du mardi ne contient que les transactions survenues depuis la


sauvegarde du journal du lundi, le dimanche on fait une sauvegarde complte de la
base.
Si le nombre dutilisateurs est important et des modifications importantes, il faut
sauvegarder le journal plusieurs fois par jour et raliser la sauvegarde complte ou

81

SQL Server

diffrentielle de la base tous les jours. Lavantage est que la sauvegarde du journal
est plus rapide que celle de la base, sauvegarder le journal et le vider contribue ne
conserver en permanence quun journal de faible volume. La sauvegarde
diffrentielle est plus rapide quune sauvegarde complte.
Exemple :
Plan de sauvegarde diffrentielle et incrmentale
Dimanche sauvegarde complte de la base 12h00
Lundi
sauvegarde du journal de 8h00 20h00 toutes les 2 heures
sauvegarde diffrentielle de la base 22h00
Mardi

sauvegarde du journal de 8h00 20h00 toutes les 2 heures


sauvegarde diffrentielle de la base 22h00

Mercredi

sauvegarde du journal de 8h00 20h00 toutes les 2 heures


sauvegarde diffrentielle de la base 22h00

Jeudi

sauvegarde du journal de 8h00 20h00 toutes les 2 heures


sauvegarde diffrentielle de la base 22h00

Vendredi

sauvegarde du journal de 8h00 20h00 toutes les 2 heures


sauvegarde diffrentielle de la base 22h00

Samedi

sauvegarde du journal de 8h00 20h00 toutes les 2 heures


sauvegarde diffrentielle de la base 22h00

Avec l'volution des systmes haute disponibilit, SQL Serveur introduit de


nouvelles fonctionnalits pour faciliter l'administration des bases de donnes,
augmenter les performances et les possibilits en termes de sauvegarde et de
rcupration des bases de donnes.
Destin aux administrateurs de bases de donnes, ce chapitre leur apportera des
lments sur les nouveauts amenes par SQL Serveur et les manires de les
mettre en place.
Nous aborderons les nouveaux modles de rcupration et leur impact sur les
performances.
Il existe donc trois modles de rcupration:
FULL
: tout est enregistr dans le journal des transactions
SIMPLE : quivaux l'option tronquer le journal au point de contrle
BULK_LOGGED : enregistrement minimum pour certaines oprations
La modification d'un modle s'opre par l'instruction alter database.
Les types de sauvegardes en fonction des modles choisis peuvent se schmatiser
ainsi :

82

SQL Server

Type de sauvegarde
Modle

FULL
BULK_LOGGED
SIMPLE

Complte
Requis (ou
sauvegarde de
fichiers)
Requis (ou
sauvegarde de
fichiers)
Requis

Diffrentielle

Journal des
transactions

Fichiers /
Fichiers
diffrentiels

Optionnel

Requis

Optionnel

Optionnel

Requis

Optionnel

Optionnel

Interdit

Interdit

5.2 Modles de rcupration


SQL Server introduit trois modles destins simplifier les procdures de
rcupration et les transitions entre les modles, tout en garantissant une
exposition minimale la perte des donnes.

Modle de rcupration COMPLET (FULL)


Ce modle est le plus complet, car il rduit considrablement l'exposition la perte
des donnes et supporte la restauration un point spcifique dans le temps. Toutes
les oprations sont enregistres dans le journal des transactions, y compris les
oprations prcdemment non enregistres dans le journal des transactions
(BACKUP LOG, WRITETEXT, SELECTINTO)
Ainsi, les oprations telles que BULK INSERT et INSERT INTO sont enregistres
dans le journal des transactions, ce qui permet de rcuprer ces oprations en cas
de problme.
En utilisant ce modle, le journal des transactions doit tre tolrance de panne
pour tre certain de pouvoir en disposer en cas de problme.

SQL Server

83

Modle de rcupration SIMPLE


Ce modle quivaut positionner l'option tronquer le journal au point de
contrle (truncate log on checkpoint) en version SQL 7.0. C'est la mthode la plus
simple car on ne sauvegarde pas le journal des transactions (ce qui offre un gain
d'espace disque). En revanche, ce modle ne permet pas de rejouer les instructions
du journal, et la restauration ne peut se faire qu'avec la dernire sauvegarde
complte ou diffrentielle.
Il n'est galement pas possible de restaurer un point dans le temps ni une
transaction marque.

Modle de rcupration JOURNALISE EN BLOC


(BULK_LOGGED)
Ce modle permet de hautes performances lors des oprations de BULK et minimise
l'espace utilis dans le journal des transactions. En effet, les donnes des
oprations de BULK ne sont pas enregistres dans le journal pour ne pas le
surcharger mais les extensions (extents) de donnes modifies par ces oprations
sont sauvegardes, ce qui permet de les restaurer.
Il en est de mme pour d'autres oprations comme :
CREATE INDEX
BULK INSERT, BCP, DTS
SELECT INTO
WRITETEXT, UPDATETEXT
Toutes les autres transactions sont enregistres dans le journal des transactions et
aucune information n'est perdue.
Ce modle ne supporte pas la restauration un point dans le temps ou une
transaction marque mais permet de restaurer jusqu' la dernire sauvegarde
(complte, diffrentielle ou journal).

5.3 Types dunits


Pour faire des sauvegardes avec SQL Serveur, il faut crer des units de
sauvegarde. Elles peuvent contenir des sauvegardes diffrentielles ou compltes de
bases de donnes ou de journaux. Une fois lunit cre, on peut sauvegarder une
ou plusieurs bases, journaux et crass les anciennes sauvegardes par une
nouvelle.
Pour acclrer les sauvegardes lorsquon ne possde pas de lecteur de bandes
rapide, est de sauvegarder sur le disque dur puis de sauvegarder ces fichiers avec le
gestionnaire de Windows ou autre logiciel. Il nest pas possible de sauvegarder
directement les fichiers de base de donnes sans arrter SQL Serveur.

Units sur bande


SQL Serveur naccepte que les lecteurs de bandes locaux, connects sur le serveur.
Possible sur des units de bande rseau mais au moyen de logiciel. Le pilote doit
tre install sur Windows Serveur. Lunit aura pour nom '..\\..\TApe0' si plusieurs

SQL Server

84

'\\..\Tape1'. Possible de sauvegarder plusieurs bases sur une mme bande ou une
base sur plusieurs bandes.

Unit de disque :
La cration dune unit sur disque se rsume la cration dun fichier local ou
fichier situ dans un rpertoire partag distant. Le fichier nest cr que lors de la
premire sauvegarde.

5.4 Cration des units


La cration dune unit peut se faire partir de linterface graphique ou de code
Transact- SQL.
Avec linterface graphique SQL Server Management
Ouvrir le dossier gestion
Choisir licne sauvegarde
Choisir nouvelle unit de sauvegarde
Donner le non de sauvegarde
Donner le nom physique et le chemin complet
g:\backup\mabase.bak,
\\hercule\backup\mabase.bak,
\\..\tape0

Avec le code Transact- SQL, on utilise la procdure sp_addumpdevice


Syntaxe:
sp_addumpdevice [ @devtype = ] 'device_type' ,
[ @logicalname = ] 'logical_name' ,
[ @physicalname = ] 'physical_name'
[ , { [ @cntrltype = ] controller_type
| [ @devstatus = ] 'device_status'
}
]
Exemple :
sp_addumpdevice disk,sauvemabase, c:\mssql\backup\mabase.bak

SQL Server

85

5.5 Editer le contenu dune unit


Il est possible dditer le contenu dune unit et de la supprimer. Une unit peut
contenir une ou plusieurs sauvegardes de base de donnes, de journaux de tables.
Il est possible dditer le contenu dune unit soit avec linterface graphique, soit
avec du code Transact- SQL. Une fois lunit cre, elle apparat dans la liste dans
le dossier sauvegarde. Choisir proprit de lunit, appuyer sur le bouton afficher
contenu pour visualiser le contenu de lunit.

En utilisant du code Transact- SQL, on utilise la procdure stocke sp_helpdevice


Syntaxe :
sp_helpdevice[ @devtype = ] 'name'
Sans paramtre, on affiche la rfrence des units de base de donnes et des units
de sauvegarde de la table sysdevices.

5.6 Supprimer une unit de sauvegarde


Supprimer une unit de sauvegarde ne supprime pas le fichier physique associ,
mais la rfrence dans la table sysdevices. En mode graphique, dans le dossier
sauvegarde choisir le nom de lunit supprimer.
En code Transact- SQL, on utilise la procdure stocke Sp_dropdevice
Syntaxe :
Sp_dropdevice
[ @logicalname = ] 'logical_name' ,
[ @delfile = ] 'deleted_name'

5.7 La sauvegarde
Lorsque les units sont cres, on peut passer la sauvegarde des informations :
Base de donnes complte
Base de donnes en mode diffrentiel
Journal de transactions
Un fichier

SQL Server

86

Groupe de fichier

SQL Serveur utilise le mode de sauvegarde dynamique, il nest pas ncessaire


darrter le fonctionnement de la base pendant sa sauvegarde. La sauvegarde
dynamique fait la sauvegarde de la base alors que les utilisateurs y sont connects.
Le systme sauvegarde simultane la base et le journal de transactions. SQL
Serveur enregistre la portion du journal correspondant la priode de sauvegarde
pour que la base de donnes reste cohrente.

Sauvegarde complte de la base de donnes


Cela assure quen cas de crash, on pourra revenir la dernire sauvegarde pour
restaurer les donnes.
Avec linterface graphique :
Il faut au pralable avoir cr des units de sauvegarde.
Slectionner le serveur o se trouve la base de donnes
Slectionner la base et choisir sauvegarder la base de donnes
Dans la liste base de donnes : slectionner la base sauvegarder
Choisir le type de sauvegarde, il faut imprativement commencer par une
sauvegarde complte avant de sauvegarder le journal ou faire des
sauvegardes diffrentielles
Dans la zone destination, ajouter les units o lon souhaite sauvegarder la
base. Si sauvegarde sur plusieurs units les ajouter.
Choisir si lon souhaite craser le contenu des units slectionnes
Choisir longlet option : slectionner vrification, date dexpiration, jecter
bande aprs sauvegarde.
La date au-del de laquelle la sauvegarde est obsolte, peut tre crase.
En choisissant la case planification et loption dans quelques minutes, la
sauvegarde se fait en arrire-plan sans bloquer linterface graphique.

SQL Server

87

En code Transact- SQL


Syntaxe :
BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
Exemple :
BACKUP DATABASE Mabase to SauveMabase
Si lunit de sauvegarde na pas t cre au pralable
BACKUP DATABASE Mabase to disk=c:\backbase.bak

Sauvegarde du journal de transaction.


Peut tre sauvegard indpendamment de la base, outre son enregistrement sur
disque, bande, le journal est purg des transactions valides (partie inactive), la

SQL Server

88

sauvegarde est une opration qui ne conserve quun journal de transaction de faible
volume.
La sauvegarde avec linterface graphique se droule comme la sauvegarde dune
base de donnes.
Avec le code Transact- SQL, il est similaire que pour les bases de donnes avec
dautres options spcifiques aux journaux. Lunit de sauvegarde peut tre une
unit existante ou une variable contenant un nom dunit ou nom dunit physique.
Syntaxe :
BACKUP LOG { database_name | @database_name_var }
{ [ WITH { NO_LOG | TRUNCATE_ONLY } ]
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] NO_TRUNCATE ]
[ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
}
Exemple:
BACKUP LOG Mabase to Sauvelog
truncate_only : vide la partie inactive du journal sans la sauvegarder. On perd la
capacit de recharger une sauvegarde de la base et des journaux. Cette option est
utilise lors de test ou de dveloppement. Sauvegarder toujours la base aprs un
Backup Log with truncate_only sinon on ne pourra pas faire dautres Backup Log
no_log : vide la partie inactive du journal mais la transaction Backup Log nest pas
enregistre dans le journal, nenregistre pas le fait que le journal a t vid. Utiliser
lorsque le journal est satur pour continuer travailler
no_truncate : lorsquil y a dfaillance de la base et le journal est accessible. On
sauvegarde le journal et on recharge la base et journal jusquau moment de la
dfaillance.

SQL Server

89

Sauvegarde diffrentielle et incrmentale.


La sauvegarde complte de la base de donnes et du journal est une sauvegarde
incrmentale.
Exemple :
Le journal de mardi 8h00 contient uniquement les modifications ayant lieu sur la
base entre la sauvegarde complte de la base et la sauvegarde du journal. La
sauvegarde de journaux ne contient que la partie des modifications depuis la
dernire sauvegarde. En cas de restauration, il faut rappliquer tous les journaux.
Le traitement peut savrer fort long.
La sauvegarde diffrentielle est une sauvegarde de base de donnes qui capture les
pages modifies depuis la dernire sauvegarde complte. Elle est plus rapide car
contient que les diffrences survenues depuis la dernire sauvegarde complte.
Exemple :
La sauvegarde diffrentielle effectue lundi 22h00 contient les pages modifies
depuis samedi 22h00 date et heure de la dernire sauvegarde complte, rendant
caduques les sauvegardes intermdiaires du journal du lundi. Elle est le point de
dpart de la sauvegarde du journal du mardi 8h00. Si un crash se produit aprs
8h00 le mardi, il faut restaurer la sauvegarde de la base complte, la sauvegarde
diffrentielle et le journal du mardi.
La sauvegarde diffrentielle est plus rapide quune sauvegarde complte et la
restauration est plus rapide que le journal de transaction, elle restaure des pages et
le journal rejoue les transactions.
Dans le cas de la cration dun index, le journal de transactions contient que les
instructions de cration dindex la sauvegarde diffrentielle contient les pages de
lindex cre.
La sauvegarde avec linterface graphique ou le code Transact-SQL est identique la
sauvegarde complte choisir loption diffrentiel.

Sauvegarde dun fichier ou groupe de fichiers


Avec SQL Serveur 7, il tait possible de sauvegarder une table avec 2008 ce nest
plus possible. Mais prconise la sauvegarde de fichier. Il est possible de placer une
table dans un fichier de manire dtourn.
La sauvegarde dun fichier est utile si la sauvegarde complte ou diffrentielle de la
base nest possible pour des raisons excessives de sa dure de sauvegarde.
Exemple :
Une base de 800G repartie en 4 fichiers de 200G. La base est sauvegarde le weekend et les fichiers chaque jour. Le journal des transactions nest pas inclus dans la
sauvegarde dun fichier, donc il faut faire la sauvegarde du journal aprs celle du
fichier afin de capturer toute les modifications.
Avec linterface graphique, fentre sauvegarde, choisir loption fichier ou groupe de
fichier. Slectionner le fichier ou groupe de fichier.

SQL Server

90

Avec le code Transact-SQL :


Syntaxe :
BACKUP DATABASE { database_name | @database_name_var }
{
FILE = { logical_file_name | @logical_file_name_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
TO < backup_device > [ ,...n ]
[ WITH Options]
Exemple :
BACKUP DATABASE Mabase FILE=Gestion1 to SauveFichier

5.8 Stratgie de sauvegarde


Il y a

quatre types de sauvegarde :


Complte,
Diffrentielle,
Journal,
Fichier ou groupe de Fichiers

La stratgie de sauvegarde dpend de quatre facteurs :


Le temps dont on dispose pour faire la sauvegarde
Le dbit des units de sauvegarde
Facteur daccroissement de taille du journal
Temps acceptable pour la restauration complte de la base

5.9 La restauration
La restauration ne peut se faire en production seule, le dbo peut tre connect.
Lors de la restauration, il faut dconnecter tous les utilisateurs.
La restauration de la base de donnes restitue le contenu complet de la base de
donnes. Elle ne doit pas tre en exploitation lors de la restauration. On peut
utiliser linterface graphique ou le code Transact-SQL . Il est possible de consulter le
contenu avant restauration.

SQL Server

91

Slectionner le serveur sur lequel se trouve la base charger


Dans menus outils, choisir restaurer la base de donnes
Choisir la base restaurer dans la liste
Choisir la sauvegarde restaurer
Le systme affiche lhistorique des sauvegardes, slectionner la dernire
sauvegarde complte de la base, des journaux, des sauvegardes
diffrentielles
Loption forcer la restauration sur la base de donnes existante permet
dcraser la base existante.

Restaurer partir dune unit spcifique


Si lunit de sauvegarde na pas t dfinie. Dans le cas dune rinstallation de SQL
Serveur suite un crash disque dur. Il faut redfinir lunit pour que SQL Serveur
puisse lutilis. Avec linstruction restore, cest possible sans quelle ait t
pralablement dfinie par la procdure sp_addumpdevice.

SQL Server

92

Restaurer une sauvegarde partir dun fichier sur disque.


partir de la fentre restaurer la base de donnes
Choisir loption partir de lunit
Cliquer sur slectionner les units, apparition dune nouvelle fentre

Ajouter les units.

Une fois valide lunit, il est possible de visualiser le contenu de lunit afin de
slectionner la sauvegarde restaurer.

SQL Server

93

Pour obtenir des informations sur lunit de sauvegarde ce qui revient consulter
son en-tte. Soit avec linterface graphique voir prcdemment soit avec linstruction
restore headeronly.
Restauration avec le code Transact-SQL.
Syntaxe :
RESTORE DATABASE { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
Exemple :
RESTORE DATABASE Mabase from SauveBase

Restauration du journal de transaction


Consiste r appliquer les transactions sauvegardes. Celui-ci a t sauvegard
indpendamment de la base de donnes
avec instruction Backup Log. Si
sauvegarde incrmentale, on dispose de plusieurs sauvegardes du journal. Pour
restaurer les journaux, il faut restaurer la base avec loption norecovery puis r
appliquer les transactions enregistres dans les journaux dans lordre.
Avec linterface graphique, cest identique que celle dune base de donnes
Restauration avec le code Transact-SQL
Syntaxe :
RESTORE LOG { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]

SQL Server

[
[
[
[
[

[
[
[
[
[

94

, ] { NOREWIND | REWIND } ]
, ] { NOUNLOAD | UNLOAD } ]
, ] RESTART ]
, ] STATS [= percentage ] ]
, ] STOPAT = { date_time | @date_time_var }
| [ , ] STOPATMARK = 'mark_name' [ AFTER datetime ]
| [ , ] STOPBEFOREMARK = 'mark_name' [ AFTER datetime ]

]
]
Exemple :
RESTORE LOG Mabase from SauveLog
On a une sauvegarde du journal le mardi 21h00 et on veut revenir ltat dans
lequel la base tait 12h45 le mardi. On restore la sauvegarde de la base du
dimanche par backup database, on restaure le journal du lundi par un backup log
et on restaure celui du mardi avec loption with stopat 'date heure'

Restauration dune sauvegarde diffrentielle


Suit immdiatement celle dune sauvegarde complte de la base faite avec loption
norecovery. La dmarche est identique que la restauration dune base ou dun
journal. Le code Transact-SQL est identique que linstruction restore database. La
diffrence rside dans le jeu de sauvegarde et de loption norecovery applique la
restauration complte.

Restauration dun fichier ou groupe de fichiers


Avec linterface graphique
Opration identique la restauration dune base ou dun journal faire le choix de
loption groupe de fichiers ou fichier.
SQL Serveur slectionne automatiquement les journaux appliquer au fichier la
suite de sa restauration.
Restauration avec le code Transact-SQL
Syntaxe :
RESTORE DATABASE { database_name | @database_name_var }
< file_or_filegroup > [ ,...n ]
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] NORECOVERY ]

SQL Server

[
[
[
[
[

[
[
[
[
[

,
,
,
,
,

95

] { NOREWIND | REWIND } ]
] { NOUNLOAD | UNLOAD } ]
] REPLACE ]
] RESTART ]
] STATS [ = percentage ] ]

]
Il est possible de restaurer partiellement une base de donnes. Lintrt rside de ne
pas restaurer lintgralit de la base si lon souhaite accder qu un sousensemble des donnes.
Syntaxe :
RESTORE DATABASE { database_name | @database_name_var }
< file_or_filegroup > [ ,...n ]
[ FROM < backup_device > [ ,...n ] ]
[ WITH
{ PARTIAL }
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] NORECOVERY ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTRICTED_USER ]
[ [ , ] RESTART ]
[ [ , ] STATS [= percentage ] ]
]

5.10 Vrification de cohrence


Il y a des instructions et des outils qui permettent de vrifier si la base de donnes
est cohrente avant sa sauvegarde. La dfragmentation, sqlmaint et database
consistency checker (dbcc)
Dbcc checkdb : vrifie que les tables et les index sont correctement lis. Si des
erreurs, faire une rparation
Dbcc checkalloc : vrifie les allocations de page
Dbcc checktable : vrifie la cohrence des tables
Dbcc checkcatalog : vrifie la cohrence des tables systme.

5.11 Automatisation
SQL Serveur met disposition un gestionnaire de tches automatises. Il y a deux
moyens dautomatiser la sauvegarde.
Crer un travail qui excute un backup database ou un log partir de la
fentre sauvegarder la base de donnes.

SQL Server

96

Crer un travail qui sappuie sur sqlmaint assistant plan de maintenance de


la base de donnes

Automatiser une sauvegarde.


Dans le premier cas, il sagit de lautomatisation dinstructions. Dans linterface
graphique :
Ouvrir gestion, AGENT SQL Server
Slectionner travaux
Choisir nouveau travail ou assistant cration de travail en slectionnant
planification de travail dans le menu outil.

Un travail planifi se compose dun nom, dune catgorie, dune tape et dune
planification.
Donner un nom et une catgorie au nouveau travail.

Slectionner longlet tapes


Cliquer sur nouveau, dfinir les caractristiques de ltape nom et la commande
SQL excuter.

SQL Server

97

Choisir longlet planification, cliquer sur nouvelle planification, dfinir les


paramtres de la planification.

SQL Server

98

Loutil de maintenance sqlmaint utilise comme support lassistant plan de


maintenance mais rien nempche de lutiliser pour la sauvegarde.
Syntaxe :
sqlmaint
[-?] |
[
[-S server_name[\instance_name]]
[-U login_ID [-P password]]
{
[ -D database_name | -PlanName name | -PlanID guid ]
-Rpt text_file
[-To operator_name]
[-HtmlRpt html_file [-DelHtmlRpt <time_period>] ]
[-RmUnusedSpace threshold_percent free_percent]
[-CkDB | -CkDBNoIdx]
[-CkAl | -CkAlNoIdx]
[-CkCat]
[-UpdOptiStats sample_percent]
[-RebldIdx free_space]
[-WriteHistory]
[
{-BkUpDB [backup_path] | -BkUpLog [backup_path] }
{-BkUpMedia
{DISK [ [-DelBkUps <time_period>]
[-CrBkSubDir ] [ -UseDefDir ]
]
| TAPE
}
}
[-BkUpOnlyIfClean]
[-VrfyBackup]
]
}
]

99

SQL Server

CHAPITRE 6
CONNEXIONS ET SCURIT

SQL Serveur propose divers niveaux de protection des donnes. Protger laccs au
serveur en fonction du profil, lutilisateur aura ou non accs certaines bases de
donnes. A lintrieur dune base de donnes, il naura pas forcment le loisir
daccder et de modifier les informations.

6.1 Architecture de la scurit


Si un utilisateur doit avoir accs une base de donnes il doit avoir un compte
sur le serveur ou sur le domaine qui pour rappel est gr par Windows Serveur.
SQL Serveur ne travaille qu partir de la validation douverture de session effectu
par Windows Serveur.
On suppose que lutilisateur possde un compte sur le serveur ou le domaine
Windows Serveur. Il doit possder un nom de connexion pour ouvrir une session
sur SQL Serveur. Ce nom de connexion est mis en correspondance avec un nom
dutilisateur dans la base de donnes laquelle il souhaite accder tout ne lui sera
pas forcement possible dans la base.
En gnral, le nom de connexion correspond au nom du compte Windows de
lutilisateur. On peut inclure un groupe Windows comme compte de connexion dans
SQL Serveur, tous les membres du groupe auront accs SQL Serveur avec les
droits et les privilges de leur groupe dappartenance sans avoir de nom de
connexion personnel.
Laccs SQL Serveur (ouverture de session) est gr par la table master..sysxlogins
qui contient tous les noms de connexion et les mots de passe. A chaque compte est
associe un identifiant numrique (security user id ou sid ) qui est utilis pour relier
un nom de connexion un nom dutilisateur.
Au dpart les seuls comptes existant sont sa et builtin\administrateurs.
Une fois laccs SQL Serveur obtenu, il faut franchir le barrage du nom utilisateur.
Les noms dutilisateur sont stocks dans les tables nom_base..sysusers. La table
sysusers se trouve dans model et chaque base possde la sienne puisquelle gre
son propre accs. Les rles utilisateurs sont stocks dans sysusers.

SQL Server

100

Chaque utilisateur a un nom (le mme que son nom de connexion sauf dbo), un
identifiant systme permet dtablir une relation unique avec master..sysxlogins
(sid) et un identifiant dutilisateur (userid ou uid) servant la relation avec la table
des droits (sysprotects). On rentre dans la base que sil existe une relation entre
sysusers et sysxlogins.
Pour connatre les noms de connexion disponibles sur un serveur utiliser la
procdure sp_helplogins ou cliquer sur le dossier connexions de SQL Server
Management.
Le ticket dentre la base de donnes consiste en un nom de connexion et un nom
dutilisateur.

6.2 Noms prdfinis


Lors de linstallation de SQL Serveur et de la cration des bases de donnes des
noms de connexion et dutilisateurs sont crs
Deux noms de connexions sont crs :
sa : Administrateur Systme qui a tous les droits sur le systme et ses bases
de donnes.
builtin\administrateurs : compte correspondant au groupe administrateurs
Windows
Lorsquune nouvelle base est cre, le groupe public et le nom dutilisateur dbo
(database owner, propritaire de la base de donnes) sont crs, il a tous les droits
sur les objets se trouvant dans la base.
Il existe un utilisateur dbo par base qui correspond au nom de connexion qui a t
utilis pour crer la base (sauf si on a utilis la procdure stocke
sp_changedbowner change dbo). Par dfaut lors de linstallation sa est le dbo de
toutes les bases.

6.3 Cration des noms


Les noms de connexion ou dutilisateur sont crs via linterface graphique ou du
code Transact-SQL.

SQL Server

101

Connexions
Les noms de connexion sont stocks dans la table sysxlogins. Les colonnes 'dbid' et
'langage' personnalisent laccs au systme (identifie la langue de lutilisateur
connect ce qui permet pour une mme application de retourner des messages dans
des langues diffrentes). Dbid dfinit une base de donnes par dfaut pour un
utilisateur, il sera plac automatiquement dans cette base lors de la connexion.
Cration dun nom de connexion avec linterface graphique.
Ouvrir le dossier scurit
Slectionner connexions dans ce dossier, il y a les noms de connexion dfinis
sur le systme
Choisir nouvelle connexion, on peut au mme moment crer les noms
dutilisateur et dfinir les rles auquel appartient le compte de connexion

Dans la zone nom, donner le nom de lutilisateur ou nom dun groupe


Windows (dans ce cas, il sagit dune connexion authentifie par Windows
tous les membres de ce groupe auront accs SQL Serveur)
Choisir le mode authentification de ce nouveau compte de connexion, soit
Windows (donner le nom du domaine) SQL Serveur sadressera au
gestionnaire de scurit du domaine pour vrifier la validit du compte, soit
SQL Serveur donner le mot de passe.
Indiquer la base de donnes par dfaut laquelle lutilisateur se trouvera
automatiquement connect louverture de la session (vite de passer par la
commande USE Nom_Base pour y rentrer) en absence de slection, Master
est choisi par dfaut.
Indiquer la langue de lutilisateur dans laquelle il recevra les messages
davertissement ou derreurs.

SQL Server

102

On peut choisir les rles du serveur auxquels va appartenir le compte de


connexion.

Choisir les bases de donnes auxquelles ce compte un droit daccs.


La colonne autorise permet de crer un nom dutilisateur dans la base.
La colonne utilisateur indique le nom de lutilisateur dans la base autorise.
Par dfaut, le nom dutilisateur est le nom daccs rien nempche de le
changer.
Dfinir les rles de base auxquels appartient la nouvelle connexion.

SQL Server

103

En code Transct-sql
La cration dun compte de connexion nentrane pas la cration du nom utilisateur
associ. Il y a deux procdures pour crer un compte de connexion :
Pour un compte authentifi par le SQL Serveur sp_addlogin
Pour un compte authentifi par Windows sp_grantlogin
Syntaxe :
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
Exemple :
sp_addlogin 'garcia', 'garcia','gestion',null
Cette procdure cre un compte 'garcia' avec mot de passe 'garcia', base par dfaut
'gestion' et la langue est par dfaut celle du serveur.
sid : force lutilisation dun identifiant particulier. Paramtre utilis pour transfrer
des comptes dun serveur un autre et de garder le mme identifiant
0x0123456789
encryptopt : d active le cryptage du mot de passe skip_encryption
Exemple :
EXEC sp_addlogin Margaret, Rose
SELECT CONVERT(VARBINARY(32), password)
FROM syslogins
WHERE name = 'Margaret'
0x2131214A212B57304F5A552A3D513453

SQL Server

104

EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453,


@encryptopt = 'skip_encryption'

Syntaxe :
sp_grantlogin [@loginame =] 'login'
Exemple :
sp_grantlogin 'isib/garcia'
Ce nest pas possible de prciser une base et une langue par dfaut (base Master et
langue du systme serveur) pour modifier, utiliser la procdure sp_defaultdb et
sp_defaultlanguage.
Syntaxe :
sp_defaultdb [ @loginame = ] 'login' ,
[ @defdb = ] 'database'
sp_defaultlanguage [ @loginame = ] 'login'
[ , [ @language = ] 'language' ]
Exemple :
sp_defaultdb 'isib/garcia','gestion'
sp_defaultlanguage 'isib/garcia','french'

Crer les noms dutilisateur


Les noms dutilisateur sont stocks dans la table sysusers prsente dans toutes les
bases. Gnralement identiques aux comptes de connexions sauf pour dbo qui est
mis en correspondance avec le compte propritaire.
Ave SQL Server Management.
En ouvrant le dossier dune base, on trouve un dossier utilisateur o figure la liste
des utilisateurs dclars de la base. Pour crer un nouvel utilisateur il faut au
pralable crer un nom de connexion.
Choisir nouvel utilisateur de la base de donnes.
Dans la liste droulante nom connexion, choisir le nom auquel on souhaite donner
laccs.
Le systme remplit automatiquement la zone nom utilisateur (on peut le modifier).
Choisir les rles dappartenance.

SQL Server

105

Avec le code Transact_sql il faut utiliser la procdure sp_grantdbaccess ou


sp_adduser.
Syntaxe :
sp_grantdbaccess [@loginame =] 'login'
[,[@name_in_db =] 'name_in_db' [OUTPUT]]
sp_adduser [ @loginame = ] 'login'
[ , [ @name_in_db = ] 'user' ]
[ , [ @grpname = ] 'group' ]
Exemple :
sp_grantdbaccess 'garcia'
Le compte guest (invit) permet daccder une base de donnes sans avoir de nom
dutilisateur. Crer un compte guest sans correspondance avec un nom de
connexion pour que tout utilisateur accde au base sp_grantdbaccess guest

6.4 Suppression des noms


On peut supprimer un nom de connexion et un nom dutilisateur.
Avec linterface graphique, slectionner le nom de connexion et supprimer le nom de
la connexion dans le dossier scurit/connexion, la connexion et le nom
dutilisateur associs sont supprims.
Pour supprimer le nom utilisateur sans supprimer le nom de connexion, enlever la
coche dans la colonne autorise de longlet accs aux bases de donnes ou dans le
dossier utilisateurs des bases de donnes choisir supprimer.

SQL Server

106

Avec du code Transact-sql, pour supprimer un nom de connexion utiliser la


procedure sp_droplogin
Syntaxe :
sp_droplogin [ @loginame = ] 'login'
Cela ne supprime pas les noms dutilisateurs associs. Si on supprime une
connexion par erreur on peut la recrer avec le mme sid . Pour le retrouver,
interroger la table sysuser dans laquelle le nom de la connexion tait rfrenc.
Utiliser la procdure sp_addlogin avec le mme identificateur. Pour supprimer le
nom dutilisateur de manire dfinitive en leffaant de la table sysusers utiliser la
procdure sp_revokedbaccess.
Syntaxe :
sp_revokedbaccess [ @name_in_db = ] 'name'
Exemple :
Il nest pas possible deffacer ni le dbo, ni un nom dutilisateur qui possde des
objets.

6.5 Les rles


Un rle est lquivalent dun groupe. Son but est de regrouper plusieurs utilisateurs
autour dun ensemble dfini de tches ou dautorisation . Il y a deux types de rles,
les rles serveur et les rles de bases de donnes.

Rle serveur
Ces rles sont qualifis de fixe, car impossible : de supprimer, de modifier,
dajouter. Leur but est daccorder des utilisateurs des droits dadministration
limits du serveur.
Il existe neuf rles serveur.
bulkadmin
dbcreator
diskadmin
processadmin
public
securityadmin
serveradmin
setupadmin
sysadmin

SQL Server

107

Il est possible daffecter un compte de connexion un ou plusieurs rles serveur


lors de la cration. Il est aussi possible de le faire partir de la fentre du rle
serveur dans linterface graphique dossier scurit/rles.

En code Transact-SQL, il faut utiliser la procdure sp_addsrvrolemember


Syntaxe :
sp_addsrvrolemember [ @loginame = ] 'login'
, [ @rolename = ] 'role'

SQL Server

108

Pour supprimer du rle une connexion existante slectionner la connexion et


cliquer sur supprimer.
En code Transact-SQL, il faut utiliser la procdure sp_dropsrvrolemember
Syntaxe :
sp_dropsrvrolemember [ @loginame = ] 'login' , [ @rolename = ] 'role'
Si on nindique pas de nom de rle, la connexion est supprime de tous les rles
auxquels elle appartient.

Rles de base de donnes


Les utilisateurs dune base de donnes peuvent tre regroups pour faciliter
ladministration de la scurit. Les rles de base de donnes sont aux bases ce que
les rles serveur sont SQL Serveur.
Il existe un rle public dans chaque base de donnes, qui contient tous les
utilisateurs quivalents 'everyone' de Windows (tout le monde pour Windows). Il
existe dix rles de base prdfinis :
Accessadmin : membres peuvent grer la scurit daccs la base en
ajoutant des utilisateurs et/ou des rles
Backupoperator
Datareader : membres ont droit de lire le contenu de toutes les tables de la
base. Si le membre na pas dautorisation sur une table dfinie, il ne pourra
pas lire les donnes de la table
Datawriter : membres ont le droit de modifier, supprimer, insrer des
donnes dans toutes les tables de la base
Ddladmin : membres peuvent ajouter, modifier, supprimer les objets de la
base
Denydatareader : membres ne peuvent lire les donnes d'aucunes table de la
base.
Denydatawriter : membres ne peuvent modifier, supprimer, insrer des
donnes dans aucune table de la base

Owner : membres ont tous les droits sur les objets de la base
Public : rle auquel appartiennent tous les utilisateurs de la base, personne
ne peut tre enlev de ce rle
Securityadmin : membres grent les rles et les autorisations sur les objets
de la base
En plus de public, un utilisateur peut appartenir plusieurs autres rles.

SQL Server

109

6.6 Crer un rle


Il est possible dajouter de nouveau rle de base de donnes ave SQL Server
Management.
Choisir le dossier rle dune base particulire
Choisir nouveau rle de base, une fentre apparat
Dans la zone nom, donner un nom du rle, on peut ajouter les utilisateurs si
cest un rle standard ou un mot de passe si cest un rle dapplication.

Pour supprimer il suffit de choisir lutilisateur et cliquer sur le bouton supprimer.


Avec le code Transact-SQL, la cration et la composition du rle se fait en deux
tapes en utilisant les procdures sp_addrole, sp_addrolemember

SQL Server

110

Syntaxe :
sp_addrole [ @rolename = ] 'role'
[ , [ @ownername = ] 'owner' ]
Exemple :
EXEC sp_addrole 'Managers'
On peut aussi utilis : sp_addgroup [ @grpname = ] 'group'

Le remplissage du rle
Syntaxe :
sp_addrolemember [ @rolename = ] 'role' ,
[ @membername = ] 'security_account'
Exemple:
sp_addrolemember 'Engineering', 'Michael'
On peut aussi utilis :
sp_changegroup [ @grpname = ] 'role'
, [ @username = ] 'user'
sp_changegroup 'developers', 'Albert'
Rappel, un utilisateur qui nest pas intgrer un rle appartient Public la
procdure sp_addrolemember permet de le faire entrer dans un nouveau rle en
plus de Public. Pour changer un utilisateur de rle, il faut laffecter au nouveau rle
et
le supprimer
de lancien ceci ce fait en utilisant la procdure
sp_droprolemember.
Syntaxe :
sp_droprolemember [ @rolename = ] 'role' ,
[ @membername = ] 'security_account'
Exemple :
sp_droprolemember 'Sales', 'Jonb'

Supprimer un rle
Il faut tout abord supprimer tous les membres du rle, le rle ne doit pas contenir
dutilisateur sinon une erreur est donne. Avec linterface graphique, slectionner le
rle supprimer, choisir supprimer le rle. Le rle est supprim de la table
sysusers de la base.
Avec le code Transact-SQL, utiliser la procdure sp_droprole.
Syntaxe :
sp_droprole [ @rolename = ] 'role'
Ou
sp_dropgroup [ @rolename = ] 'role'

SQL Server

111

6.7 Autorisations dobjet et autorisations dinstruction


Une fois laccs SQL Serveur obtenu et une base de donnes, un client normal (ni
administrateur systme, ni propritaire de base, ni propritaire dobjet) na aucun
droit dans la base dans laquelle il a t dfini moins que le rle auquel il
appartient (par dfaut public) nait lui-mme des droits. Il est possible de donner
des droits aux utilisateurs et aux groupes dutilisateurs.
Il y a deux types dautorisation :
Autorisations dinstruction
Cration dune base de donnes
Cration de rgle et de valeurs par dfaut dans une base de donnes
Cration de tables et de vues dans une base de donnes
Cration de procdures ou de fonctions dfinies par lutilisateur
Sauvegarde de la base de donnes
Sauvegarde du journal
Autorisation dobjet
select
update
insert
delete
references
execute
Un rle ou un utilisateur se trouve dans lun des trois tats vis--vis dune
autorisation :
accord : grant
enlev : deny
rvoqu : revoke

112

SQL Server

Autorisations dinstruction
Les autorisations dinstruction agissent sur :
create database
create table
create view
create procedure
create function
create default
create rule
backup database
backup log
Seul un administrateur systme peut transmettre le droit de crer des bases de
donnes.
Pour donner des autorisations dinstruction aux utilisateurs dune base de donnes,
choisir la base, choisir proprits dans la fentre, slectionner longlet
autorisations.

On trouve la liste des rles symboliss par une cl et des utilisateurs de la base de
donnes, il ne reste plus qu donner ou retirer des droits.

Marqueur de case

Vide
Coche noire
Croix rouge

Signification
Pas dautorisation
Autorisation accorde
Autorisation enleve

Remarque : loption crer une base de donnes napparat que dans la base Master
un utilisateur ne peut crer une base de donnes que sil est membre de la base
Master.
Il est possible de donner ou retirer des droits avec le code Transact_SQL. Avec le
mot cl all toutes les instructions dautorisations sont ajoutes, enleves ou
rvoques. Si on donne des droits Public tous les utilisateurs sont concerns par
ces attributions.

SQL Server

113

Syntaxe :
GRANT { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]
GRANT CREATE DATABASE, CREATE TABLE
TO Mary, John, [Corporate\BobJ]

DENY { ALL | statement [ ,...n ] }


TO security_account [ ,...n ]
DENY CREATE DATABASE, CREATE TABLE
TO Mary, John, [Corporate\BobJ]

REVOKE { ALL | statement [ ,...n ] }


FROM security_account [ ,...n ]
Exemple:
REVOKE CREATE TABLE FROM Joe, [Corporate\BobJ]

Autorisation dobjet
Il sapplique la manipulation dobjets. Donne des utilisateurs ou des rles des
droits dutilisation des tables, vues et procdures.
Affectation des autorisations dobjet par utilisateur
Avec linterface graphique SQL Server Management,
Slectionner le serveur, la base de donnes puis le dossier rles ou
utilisateurs
Choisir le rle ou utilisateur souhait
Slectionner proprits, choisir autorisations.
La fentre apparat, choisir les droits.

SQL Server

114

Pour les tables, il est possible de descendre au niveau de la colonne, avec linterface
SQL Server Management,
Choisir la table dans la fentre proprits cliquer sur les colonnes

6.7.1.1 Affectation des autorisations dobjet objet


Avec linterface graphique SQL Server Management,
Slectionner le serveur, la base de donnes puis le dossier contenant lobjet
(tables, vues, procdures, fonctions)
Choisir lobjet souhait
Slectionner proprits, choisir grer autorisations
La fentre apparat choisir les autorisations

Donner des autorisations dobjet avec Transact-sql. La syntaxe est identique aux
autorisations dinstruction.

SQL Server

Syntaxe :
GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
Exemple:
GRANT INSERT, UPDATE, DELETE
ON authors
TO Mary, John, Tom
Syntaxe:
DENY
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ CASCADE ]
Exemple :
DENY SELECT, INSERT, UPDATE, DELETE
ON authors
TO Mary, John, Tom
Syntaxe :
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
{ TO | FROM }
security_account [ ,...n ]
[ CASCADE ]
[ AS { group | role } ]
Exemple :
REVOKE SELECT ON Budget_Data TO Mary

115

SQL Server

116

Attribution des autorisations aux rles


Lorsquon donne des autorisations un rle, tous ses membres en profitent. Si on
enlve des autorisations un utilisateur et quon les donne au rle cet utilisateur
na pas dautorisations.
Il est prfrable de commencer par donner des droits Public puis aux rles et
enfin aux utilisateurs. Si nouvel utilisateur est ajout la base, il possde des
autorisations dues public et ses rles dappartenance. Il ne reste qu donner ou
enlever des autorisations particulires.

Transmettre les autorisations


Avec SQL Serveur, il est possible quun utilisateur puisse donner des droits de ses
objets pour que dautres utilisateurs puissent les utiliser et leur tour les donner
dautres personnes. Transmettre le droit de transmettre des droits.
Syntaxe :
GRANT
{ ALL [ PRIVILEGES ] | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
Le fait de placer une connexion dans lun des sept rles de serveur, lui donne des
permissions implicites au niveau du serveur et des bases de donnes. Pour
connatre les autorisations de ces rles utiliser soit linterface graphique, scurit
rles du serveur, cliquer sur le rle, cliquer sur onglet autorisation, soit en
utilisant la procdure sp_dbfixedrolepermission.

6.8 Laccs au systme


Il faut possder un compte de connexion pour ouvrir une session sous SQL
Serveur, cela fonctionne si on a ouvert une session sur le serveur ou un domaine
Windows. Elle oblige lutilisateur possder un compte Windows et un compte SQL
Serveur pouvant avoir un nom et un mot de passe diffrent. Il nexiste aucune
stratgie de gestion des comptes SQL Serveur tandis que sous Windows oui, dure
de validit des mots de passe, longueur minimum, obligation den changer, heures
daccs. Sql Serveur peut en tirer parti.

SQL Server

117

Modes de scurit.
Il existe deux types dauthentification
Celle de SQL Serveur dite sans confiance : lutilisateur indique son nom et
mot de passe qui sont valids par SQL Serveur indpendamment de son
profil de connexion Windows.
Lautre Windows dite avec confiance, SQL Serveur rcupre les informations
didentification de la connexion dans la base de comptes de Windows et
vrifie par rapport sa propre base de comptes. A aucun moment
lutilisateur ne sidentifie par rapport SQL Serveur.
On est en mode de scurit mixte. Si on change de mode il faut redmarrer le
serveur SQL pour que le nouveau mode entre en action il y a deux mode de
scurit :

Mode mixte : permet une authentification SQL Serveur ou Windows le client


a le choix de son mode dauthentification
Mode intgre : uniquement des connexions authentifies par Windows

Pour connatre le mode de connexion, ouvrir une fentre de requte sous la base
Master et excuter la procdure exec xp_loginconfig.

6.8.1.1 Authentification SQL


Lorsquon installe SQL Serveur, le programme dinstallation demande le mode
dauthentification et se place par dfaut en mode scurit Windows. Dans ce mode
lutilisateur se fait identifier tout dabord par Windows puis par SQL Serveur. Il
tablit alors une connexion avec confiance. Dans ce mode mixte, la connexion est
authentifie par SQL Serveur.
Dans ce cas, ladministrateur SQL Serveur refait le travail de ladministrateur
Windows : gr les comptes utilisateur.
Schma dune connexion sans confiance

Lutilisateur ouvre une session sous Windows


Il ouvre une session sous SQL Serveur en donnant un nom de connexion et
un mot de passe valide
SQL Serveur vrifie le nom de connexion et le mot de passe et autorise ou
non laccs

SQL Server

118

Lauthentification SQL Serveur nest possible quen mode mixte dans lequel laccs
peut tre tabli avec ou sans confiance. Le droulement du mode mixte dpend des
renseignements transmis dans la boite de connexion :
Si le client tape des informations dans la boite de connexion, SQL Serveur
vrifie la paire nom de connexion et mot de passe dans la table sysxlogins.
SQL Serveur est en mode sans confiance.
Si le client laisse la boite vide SQL Serveur passe en mode avec confiance et
demande le nom de lutilisateur Windows.

6.8.1.2 Authentification Windows


En mode intgre, SQL Serveur rcupre les informations de la base de comptes de
Windows pour autoriser ou interdire laccs dun compte Windows. Les informations
fournies par le client lors de la connexion SQL Serveur sont ignores. Des quune
demande de connexion intervient SQL Serveur demande Windows de lui donner le
nom de lutilisateur pour le vrifier sa propre base de comptes et autoriser ou non
laccs.
Schma dune connexion avec confiance

Lutilisateur ouvre une session sous Windows


Il ouvre une session sous SQL Serveur sans rien indiquer (de toute manire,
le systme ne tient pas compte de ce que lutilisateur a tap)
SQL Serveur demande Windows de lui fournir le nom de lutilisateur.
Layant obtenu, SQL Serveur le compare sa propre base de compte.
SQL Serveur ouvre une session avec le nom de connexion correspondant au
nom utilisateur Windows

SQL Server

119

6.9 Changement de mode


Le changement de mode se fait depuis SQL Server Management, choisir le nom du
serveur et slectionner proprits slectionner scurit
On trouve les deux modes et le niveau audit des connexions
SQL Serveur et Windows en mode mixte
Uniquement Windows en mode intgre
Niveau audit permet de suivre les vnements : accs russis ou choues. Utile
dans le cas de tentative de piratage.
Il faut redmarre le serveur pour que les changements du mode de scurit soit pris
en compte.

120

SQL Server

CHAPITRE 7
RCUPRATION & MISE JOUR
DE DONNES DISTRIBUES

SQL Serveur offre des moyens pour daccder des donnes sur des :
SQL Serveur locaux,
Stockes sur dautres plates-formes SQL Serveur,
Des formats trangers SGBDR
Des systmes de fichiers

7.1 Serveurs lis


Avec les serveurs lis, on excute tous types dinstructions SQL et de procdures.
Cest le principe des serveurs qui permettent de rpartir la charge sur plusieurs
serveurs de faon transparente pour le client.
Laccs un serveur li est bas sur sa dclaration au niveau du serveur SQL
Serveur. La liaison entre les serveurs est assure par OLE-DB. Microsoft garantit le
fonctionnement des fournisseurs OLE-DB suivants :
Fournisseur Jet,
Fournisseur Oracle,
Fournisseur SQL Serveur,
Fournisseur ODBC
Le client se connecte SQL Serveur et peut atteindre un autre serveur sans avoir le
pilote ODBC ou fournisseur OLE-DB

121

SQL Server

Client SQL Serveur

SQL Serveur
OLE-DB
Fournisseur OLE-DB

Fournisseur OLE-DB
pour ODBC
ODBC
Pilote ODBC

Serveur de donnes

Serveur de donnes

Cration de serveurs lis


Crer un serveur li est chose simple et rapide. Il faut seulement possder le
fournisseur OLE-DB (ou le pilote ODBC) de lapplication.
Configurer un serveur li par OLE-DB
Si on

a un fournisseur OLE-DB, on peut le grer avec linterface graphique.


Dossier scurit
Slectionner le serveur li, choisir nouveau
Donner un nom au serveur li
Dfinir ses paramtres, si le serveur est un SQL Serveur, cocher SQL Serveur
et donner le nom du serveur

Les paramtres :
Nom fournisseur (fournisseur OLE-DB employ pour ce serveur)
Nom produit (informatif nom du logiciel de donnes)
Source de donnes : nom de la source laquelle on souhaite se connecter
o pour Access fichier *.mdb,
o pour Oracle nom de lalias SQL.NET
Chane du fournisseur (facultatif,)
Emplacement (facultatif)
Catalogue (facultatif)

122

SQL Server

SQL Serveur ne vrifie pas laccs au serveur lors de la cration, mais lutilisation
pour vrifier si les paramtres sont les bons, ouvrir le dossier du serveur li et
cliquer sur son dossier tables. Si la liste des tables apparat, cest que la connexion
est tablie.
On peut dfinir un serveur li avec la procdure sp_addlinkedserver.
Syntaxe :
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]
Nom des fournisseurs OLE-DB
SQL Serveur

SQLOLEDB

Oracle

MSDAORA

Access/Jet

Microsoft.Jet.OLEDB.4.0

Source de donnes ODBC

MSDASQL

Systme de fichiers

MSIDXS

Feuilles
Excel.

de

calcul

Microsoft Microsoft.Jet.OLEDB.4.0

Base de donnes IBM DB2

DB2OLEDB

SQL Server

123

Configurer un serveur li par ODBC


La liaison une source de donnes ODBC (Open DataBase Connectivity) est tablie
soit par la cration dun nom de source de donnes (DSN : Data Source Name) soit
par la fourniture de la chane de connexion.

Avec DSN :
Crer un DSN Systme (qui est indpendant de la connexion et de lemplacement de
stockage des informations) laide de ladministrateur de source de donnes ODBC.
Une fois dfinie on peut se servir du DSN dans SQL Server Management.
Crer un nouveau serveur li, choisir fournisseur OLE-DB pour ODBC et fournir le
nom de la source de donnes.

Sans DSN :
Les informations dun DSN font rfrences :
Au pilote,
Au nom du serveur,
A la base de donnes
Aux informations de scurit
Une chane de connexion ODBC sont ces paramtres spares par (;)
Exemple :
Driver=nom_pilote;server=nom_serveur;database=nom_base;
uid=nom_utilisateur;pwd=mot_passe
Pour connatre le pilote, il suffit de rcuprer le nom du pilote dans la chane de
connexion ODBC sans crer un DSN.
La liste de tous les pilotes se trouve dans :
\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI

SQL Server

124

Il y a des options pour les serveurs lis, on peut les activer avec SQL Server
Management ou avec la procdure sp_serveroption
Syntaxe :
sp_serveroption [@server =] 'server'
,[@optname =] 'option_name'
,[@optvalue =] 'option_value'
Il est remarquer quil y a aussi des options pour le fournisseur OLE-DB

Scurit des serveurs lis


Dans longlet scurit des proprits du serveur li, il faut mettre en
correspondance connexions locales et distantes pour garantir la scurit de
lexcution des requtes sur les serveurs lis.

SQL Server

125

En utilisant la procdure
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
[ , [ @useself = ] 'useself' ]
[ , [ @locallogin = ] 'locallogin' ]
[ , [ @rmtuser = ] 'rmtuser' ]
[ , [ @rmtpassword = ] 'rmtpassword' ]
Remarque si on a plac une scurit sur la base Access, il faut mettre en
correspondance les comptes de connexion SQL Serveur avec les utilisateurs
dclars sous Access avec la procdure prcdente ou avec SQL Server
Management.

Excuter des requtes sur des serveurs lis


Quand les serveurs lis sont dclars, on sen sert comme sil sagissait de serveurs
SQL Serveur.
Pour rfrencer un objet table, requte ou procdure dun serveur li, il faut utiliser
un nom compltement qualifi :
NomServeur.NomCatalogue.NomSchema.NomTable
Dun type de serveur un autre la syntaxe varie
Pour

SQL Serveur :
Serveur.BaseDeDonnees.Proprietaire.Table
Serveur.BaseDeDonnees.Proprietaire.Vue
Serveur.BaseDeDonnees.Proprietaire.Procedure

Avec Access :
ServeurTable
ServeurRequte
Avec Excel :
Serveurfeuille$
Serveurnom_plage_nomme

SQL Server

Avec Oracle
Serveur..proprietaire.table

7.1.1.1 Lire les donnes

126

SQL Server

127

CHAPITRE 8
IMPORTATION ET EXPORTATION DE DONNEES
Limportation et lexportation sont des procds trs importants qui permettent de
charger dans un serveur des donnes en provenance dune source extrieure. Cela
permet de faire fonctionner un systme dinformations constitu de plusieurs
serveurs et de sources htrognes.

8.1 BCP
Lutilitaire BCP (Bulk Copy Program) permet de crer des fichiers dexport pour une
importation en mode BULK INSERT.
Cest la mthode la plus rapide et la plus simple dimporter et dexporter des fichiers
textes. Exploitable en mode ligne de commande. Les paramtres sont sensibles la
casse.
BCP est limit la transformation de donnes complexes et la gestion des erreurs
Ce systme est beaucoup moins convivial et surtout moins souple que DTS.

Exporter des donnes


Pour exporter des donnes, on utilise le mot cl OUT. Les paramtres minimum
sont :
Nom de la Base de donnes
Nom de la table, vue ou requte
Nom du fichier de donnes qui contiendra les donnes
Le mode dexportation (Natif SQL, Texte, Unicode)
Le serveur et la connexion
Syntaxe :
BCP {dbtable | query} {in | out | queryout | format} fichier_donnes
[-m
[-F
[-n
[-C
[-i
[-S
[-T
[-k
[-h
[-N

errs max]
[-f format fich.]
[-e fichier err]
prem ligne] [-L dern ligne]
[-b taille lot]
type orig]
[-c type caract]
[-w type caract larg]
spcif page de code] [-t indic fin champ] [-r indic fin ligne]
fich entre] [-o fich sortie]
[-a taille paquet]
nom serveur] [-U nom utilisateur] [-P mot passe]
connexion approuve] [-v version] [-R rgional activ]
conserv valrs nulles] [-E conserv valrs identit]
"conseils chargmnt"]
[-q identif entre guillem]
conserv car nontexte orig] [-Version de format de fichier V]

SQL Server

128

Exemple :
BCP pubs..authors out c:\auteur.txt -c Splutonsql Usa P
-c : mode caractre, le champ est converti en type char
-n : mode natif les champs conserve leur type
-w : unicode les champs convertient en type nchar
-t : sparateur de champ caractre doit tre mis entre guillemets sil sagit dun
caractre imprimable ( t" ;" , \t :tabulation)
-r sparateur denregistrements \n retour la ligne
En utilisant le mode caractre ou unicode il est possible de rcuprer le fichier par
Excel, Word.
BCP pubs..authors out c:\auteur.txt -c Splutonsql T
Avec une authentification NT/2000
BCP pubs..authors out c:\auteur1.txt w t" ;" r\n Splutonsql T

Importer des donnes


Pour importer des donnes, on utilise le mot cl IN
Exemple :
BCP pubs..authors in c:\auteur.txt -c Splutonsql T
Il est possible dinsrer des donnes avec un caractre de sparation :

129

SQL Server

Il est possible de crer un fichier de format et lutiliser avec un fichier source pour
importer les donnes vers une base de donnes.

8.2 BULK INSERT


Cest la version TRANSACT SQL de limportation par BCP. Elle sappuie sur BCP.
Syntaxe :
BULK INSERT [ [ 'database_name'.] [ 'owner' ].] { 'table_name' FROM 'data_file' }
[ WITH
(
[ BATCHSIZE [ = batch_size ] ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ]
[ [ , ] DATAFILETYPE [ =
{ 'char' | 'native'| 'widechar' | 'widenative' } ] ]
[ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ]
[ [ , ] FIRSTROW [ = first_row ] ]
[ [ , ] FIRETRIGGERS [ = fire_triggers ] ]
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ]
[ [ , ] LASTROW [ = last_row ] ]
[ [ , ] MAXERRORS [ = max_errors ] ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ]
[ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ]
[ [ , ] TABLOCK ]
)
]
Exemple:
BULK INSERT clients.dbo.clients
FROM 'c:\clients.txt'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '|\n'

130

SQL Server

8.3 DTS ou Services dIntgration Serveur


DTS est un acronyme pour Data Transformation Service. Cest le procd le plus
utilis sous SQL Serveur pour importer ou exporter des donnes avec dautres
serveurs SQL ou des sources varies.
Mais dans DTS il y a aussi le mot transformation, cela veut dire que DTS ne se
contente pas seulement dimporter les donnes, il peut galement y effectuer des
traitements. Ceci est particulirement utile lorsque le systme avec lequel on veut
dialoguer utilise des types de donnes diffrents.
SQL Server Integration Services contient des outils graphiques et des assistants
pour la cration de packages. Ces packages permettent de raliser des tches
extraction et de chargement de donnes entre sources de donnes et destinations
Il assure limportation, lexportation et la transformation de donnes entre sources
de donnes homognes ou htrognes via OLE-DB. Lutilisation est trs simple.
Actions que lon peut raliser par SQL Server Integration Services :

Importer, exporter des donnes


Scinder une colonne source en plusieurs colonnes destination
Combiner des colonnes sources en colonne destination
Vrifier la validit des donnes
Changer le type de donnes sources en un autre type de donnes
Calculer des colonnes destination partir de donnes sources
Modifier les valeurs destination en fonction de tests

Lorganisation de SQL Server Integration Services est simple : la pompe donnes


importe des donnes depuis une source OLE-DB, les envoie vers un script et les
exporte vers une autre source OLE-DB. SQL Server Integration Services nest pas
propre SQL Serveur car la connexion aux sources de donnes se fait par OLE-DB.
Il est possible dimporter/dexporter des donnes depuis/vers dautres sources.
Transformations
Par script

SOURCE

OLE-DB

DESTINATION

OLE-DB

Pompe donnes

SQL Server

131

Il se compose sur la notion de lot : une composition de connexions, de tches et de


liaisons.
Une connexion dcrit les informations ncessaires pour tablir une connexion la
source de donnes via OLE-DB.
Une tche reprsente une action ou plusieurs actions excuter. Il y en a de
plusieurs types : instruction SQL, ActiveX, BCP, envoie e-mail, transfert de
donnes,
Il y a deux types de liaison :
Liaison entre sources de donnes qui reprsentent des transferts de donnes
ou des transformations de donnes.
Liaison entre tches ou flux de travail qui chanent la tche excuter la
tache suivante.
SQL Serveur dispose dun assistant trs bien fait, nous allons-en voir son
fonctionnement.

Mise en place
Clic droit sur une base puis slectionnez toutes les tches on aperoit loption
importer des donnes et exporter des donnes.

Source de donnes et de destination


Procdons la slection de la source et de la destination.

SQL Server

132

Un menu similaire permet ensuite de choisir la destination

Source et destination tant choisies, il faut slectionner les donnes.

8.3.1 Choix des objets


Plusieurs choix soffrent. Si les deux plateformes sont des SQL Serveur il est
possible de copier tous les objets entre les bases de donnes. On peut galement
choisir les donnes transfrer en les slectionnant au moyen dune requte SQL
mais dans la plus part des cas on se contentera de copier une ou plusieurs tables
entre les bases.

On choisit les tables sources et leur destination. Si la table destination nexiste pas
elle est ensuite cre automatiquement.
Davantage doptions sont accessibles depuis longlet transformer, cela permet par
exemple de configurer les types des colonnes lorsque lon importe depuis un fichier
texte.

SQL Server

133

Tous les choix tant effectus, nous pouvons procder une excution immdiate, ou
enregistrer le tout dans un lot que lon pourra excuter plus tard.

8.4 Business Intelligence Development Studio


Business Intelligence Development Studio permet de crer des lots de manire
manuelle.

Crer un nouveau projet Integration Services

SQL Server

Choisir les bases de donnes Source et Destination.

Choisir les objets transfrer et leurs attributs.

Connecter la Source la Destination et lier les colonnes Source et Destination


entre-elles.

134

SQL Server

135

Il est possible dinsrer un script de transformation avant de transfrer les donnes


entre source et destination.

136

SQL Server

CHAPITRE 9
LA RPLICATION
La rplication est un mcanisme asynchrone de transfert de donnes entre les
serveurs. A linverse des transferts synchrones des serveurs lis ou distants.
Le principe de la rplication est de mettre disposition des donnes sur plusieurs
serveurs afin de faciliter laccs.

Serveur de
Publication

Serveur de
Distribution

Serveur
dAbonnement

(Editeur)

(Distributeur)

(Abonn)

Lditeur contient les donnes rpliquer


Le distributeur stocke temporairement les donnes
LAbonn reoit les informations rpliques

Un serveur peut remplir plusieurs rles la fois.


Exemple :

Editeur
Distributeur

Un serveur diteur/distributeur et plusieurs abonns

Abonn

SQL Server

137

Il y a trois types de rplications :

Transactionnelle : les transactions sont envoyes rgulirement aux abonns


Capture instantane : les donnes compltes sont envoyes rgulirement
aux abonns
Fusion : les donnes modifies sur diteur et sur abonn sont compares et
fusionnes.

Un abonnement extrait est un abonnement dcid par labonn


Un abonnement envoy est un abonnement dcid par lditeur
Les tches de rplications sont assures par le gestionnaire de tches cest dire
par SQL Server Agent. Il faut attribuer un compte SQL Server Agent sur Windows
NT/2000/2003 qui :
Doit faire partie du groupe des administrateurs de domaine
Avoir un mot de passe qui nexpire jamais
Heures douverture illimites
Pour attribuer ce compte, on peut utiliser SQL Server Management
Serveur, Gestion, Agent SQL Server, Proprits.
Il faut que tous les SQL Server Agent des serveurs faisant partie dun jeu de
rplication utilisent le mme compte.

9.1 La distribution
La premire tape mettre en uvre pour la rplication est de crer le distributeur
qui contient la base de distribution. Quand on installe un distributeur gard en
prsence le nom du serveur, elle apparat dans chaque bote de dialogue.

Rplication,
Choisir configurer la distribution

SQL Server

138

La premire question concerne linstallation dun nouveau distributeur ou le


rattachement du serveur un distributeur existant. Le but tant de crer un
nouveau distributeur utiliser votre serveur local comme distributeur.

Le serveur va contenir la base de distribution. Il va configurer SQL Server Agent


pour quil dmarre automatiquement, lassistant demande dindiquer le rpertoire
utiliser pour les fichiers de capture instantane.

SQL Server

139

Le rpertoire par dfaut est


Program Files\Microsoft SQL Server\MSSQL$PLUTONSQL\REPLDATA peut faire
laffaire condition de le partager.
Pour des raisons de performances, placer le dans un disque dur part pour rduire
la charge du serveur.
Par dfaut la base de distributeur sappelle distribution.
Choisir un emplacement pour les fichiers de donnes et le journal. Le travail de la
cration du distributeur sarrte l, les questions suivantes concernent lactivation
des diteurs et des bases publies. Si on nactive aucun diteur, on passe lcran
final qui rsume les choix terminer.

SQL Server

140

SQL Serveur cre la base de distribution et active la machine en tant que


distributeur.

SQL Server

141

Cela prend quelques minutes la fin, il ajoute le moniteur de rplication. On


dispose dun distributeur.

9.2 Utiliser un distributeur existant


Sil existe dj un distributeur, suivre la mme dmarche et choisir un distributeur
existant, slectionner dans la liste le serveur jouant le rle de distributeur.

SQL Server

142

9.3 Configurer un distributeur

Rplication
Choisir configurer la publication

Cliquer proprits, l on peut paramtres la dure de rtention des transactions


(indique le temps pendant lequel sont conserves les transactions dans le
distributeur) et la conservation de lhistorique.

SQL Server

143

Une transaction est supprime du distributeur par lagent de nettoyage des


transactions quand :
Elle a t rplique sur tous les abonns et le temps minimum de rtention
est dpass
Le temps maximum de rtention a t dpass que la transaction na pas t
rplique (il faut re synchronis).

9.4 La publication
Il faut disposer dun distributeur et configurer une machine en tant quditeur.
Les articles sont lentit de base de la publication, un article peut-tre :
Une table, une projection, une slection, un objet (procdure, vue, fonction dfinie).
Un ensemble darticles constitue une publication.

Mise en place de la publication


Pour publier des informations, il faut paramtrer la machine pour quelle se
comporte comme un diteur. Pour dfinir une machine en tant quditeur il faut
installer la rplication sur cette machine et choisir un distributeur.

Outils, rplication
Choisir configurer la publication, la distribution et les abonns
Ou laide de lassistant configuration de publication et de distribution.

La distribution installe, on arrive une bote de dialogue (voir : configurer un


distributeur)
Longlet diteur donne la liste des diteurs utilisant le distributeur.

SQL Server

144

Slectionner la machine que lon souhaite transformer en diteur. Le bouton


donne accs aux proprits du distributeur par rapport un diteur particulier.
SQL Serveur a besoin dinformations complmentaire pour configurer lditeur.
La configuration consiste valider les emplacements de la base et du dossier de
distribution et dfinir le compte utilis pour ouvrir une connexion sur lditeur.
Par dfaut, SQL Serveur se sert du compte dfini pour lAgent SQL Server. Lditeur
est configur mais aucune base de donnes publier nest active.

9.5 Publications
Les publications sont les informations publies. La premire opration est dactiver
le type de rplication autorise
pour la base
rpliquer. Sous le terme
transactionnel se cache le terme capture direct. La fentre des publications donne
la liste des bases pour la publication.
Des quune base est active pour la rplication, elle apparat dans larborescence
avec une main de partage.
La cration dune publication se fait laide de lassistant cration de publication :
Outils, rplication, nouvelle, publication
Ou avec lassistant cration de publication
Ou choisir base de donnes, nouvelle, publication

SQL Server

145

Dans les deux premiers cas, il faut choisir la base de donnes pour la publication.
Dans le dernier cas, la base est choisie et lassistant dmarre.

Les informations pour la publication sont :


Le nom de la base
Un article
Le type de rplication
La premire question est le type de rplication de la publication, elle peut tre par :
Capture instantane,
Transactionnelle,
Fusion
Il nest pas possible de modifier le type de rplication dun article existant.

SQL Server

146

La seconde question est la mise jour des abonns (pour les ditions Serveur et
Entreprise)
Le type dabonns la publication est le format dexportations des donnes pour les
abonns. Pour des abonns SQL Serveur le format est natif SQL Serveur pour des
abonns Access et Oracle le format est ASCII.

Choisir le ou les articles faisant partie de la publication : par dfaut la liste propose
que les tables. Si on dsire rpliquer les procdures ou les vues cocher la case.
Choisir les objets faisant partie de la publication.

SQL Server

147

Le bouton qui apparat, permet dajouter, de modifier le nom et les proprits de


la table de destination.
Longlet instantan concerne la synchronisation initiale et les scripts gnrs par
SQL Serveur.

Dans le cas de rplication transactionnelle, il y a un onglet commandes pour les


instructions insert, update et delete correspondant une procdure.
Il reste donner un nom et une description la publication.

SQL Server

148

Lassistant propose darrter ou de personnaliser la publication pour ajouter des


filtres aux articles, dautoriser la publication anonyme et dcider de la planification
de la synchronisation. Le systme cre les tches la publication et prpare la
base la publication. La publication est cre partir des articles choisis. SQL
Serveur ajoute un dossier publications larborescence de la base contenant la
publication.

SQL Server

149

Proprits dune publication


Chaque publication possde des proprits qui sont modifiables. Certaines sont
apparues lors de la cration. La fentre des proprits dune publication contient les
proprits de la publication et des articles. Choisir proprits

Expiration de labonnement
Cette option se trouve dans longlet gnral. Quand un serveur sabonne une
publication il doit synchroniser les articles. La dure dexpiration indique le dlai au
del duquel lagent de distribution pour cet abonn choue.

Autoriser les abonnements anonymes


Cette option se trouve dans longlet options abonnement. Un abonnement
anonyme est celui pour lequel aucune information nest enregistre dans lditeur et
le distributeur. Les abonns sont dcrits dans lditeur (table syssubscriptions de la
table publie). Utile pour les abonnements Internet.

Autoriser les abonnements extraits


Il y a deux types dabonnement lextrait et lenvoy. Labonnement extrait, labonn
est demandeur et excute lagent de distribution ou de fusion ce qui dcharge le
distributeur des tches de distribution. Onglet options dabonnement.

Utilisateurs autoriss
Les utilisateurs autoriss sabonner une publication sont cits dans longlet
liste daccs aux publications. Cette liste doit contenir au moins les comptes
susceptibles de crer des abonnements partir de la publication et celui du service
SQL Server Agent. Par dfaut, un agent fonctionne en mode authentification
Windows avec le compte du service SQL Server Agent.

SQL Server

150

Articles
Larticle est lentit de base de la publication. Pour crer un article, la table sousjacente doit comporter une cl primaire. La procdure stocke sp_addarticle cre
des articles dont la table ne possde pas de cl primaire uniquement pour des
publications par capture instantane ou par fusion.
Exemple :
sp_addarticle 'gestion','clients','clients',@force_invalidate_snapshot =1
Un article possde certaines proprits :
Un nom
Une description
Un nom de destination
Une slection de colonnes
Condition de restriction
Une procdure qui remplace les commandes : insert, delete, update
Un script pour la synchronisation

Filtres des articles


Filtres sur les colonnes, choisir les colonnes rpliquer, la colonne cl primaire est
obligatoire.

Filtres sur les lignes permet dcrire les clauses de restrictions sur les tables. On
choisit la table et on complte la clause.

SQL Server

151

9.6 Labonnement
Labonnement consiste demander la distribution de certaines informations
rpliques. Il peut tre demand par labonn, abonnement extrait (pull
subscription) ou provoqu par lditeur : abonnement envoy (push subscription)
On peut sabonner une publication complte ou un article particulier.

Abonnement extrait
Lintrt de labonnement extrait est que lon a le choix des abonnements partir
dun diteur, cest labonn qui travaille les travaux de distribution se trouvent sur
labonn.
Pour sabonner :
Outils rplication,
Choisir extraire un abonnement pour nom_serveur
Ou utiliser lassistant cration dun abonnement extrait
Pour un nouvel abonnement lassistant extraction dmarre.

SQL Server

Recherche des publications publies.

Choisir la base et cliquer sur extraire un nouvel abonnement.

152

SQL Server

153

On peut supprimer un abonnement ou rinitialiser, si la distribution na t faite et


que les transactions rpliquer ont expir ou donnes sont dsynchronises entre
abonn et diteur.
Si la liste daccs de la publication ne contient pas de compte de connexion de SQL
Server Agent, lassistant demande les informations de connexion.

Choisir la base de donnes de destination l ou va tre place les donnes.


Choisir le type de synchronisation :
En continu : ds quune transaction est disponible sur le distributeur, elle
est envoye labonn
Planification : il faut dfinir la frquence de mise jour de labonn
A la demande : dans le cas ou les abonns sont souvent dconnects et qui
ont besoin de se synchroniser la demande.

SQL Server

Dmarrage des services requis pour labonnement :


SQL Server Agent pour une rplication transactionnelle, de capture
instantane ou de fusion
MS-DTC pour une rplication avec mise jour immdiate

154

SQL Server

155

Cration de labonnement

Une bote de dialogue saffiche et indique que la tche sest bien droule,
labonnement est prt tre synchronis.

Sur le distributeur et labonn, il y a de nouveaux travaux de capture instantane et


de distribution.

SQL Server

156

9.7 Abonnement envoy

Un diteur peut forcer labonnement dun serveur. La dmarche est la mme que
par abonnement extrait.
Outils rplication, publications
Slectionner la publication
Choisir envoyer un nouvel abonnement
Utiliser lassistant cration dun abonnement envoy.
Dans le premier cas, on devra crer une nouvelle publication
Dans le deuxime cas, on devra indiquer la publication envoyer. Slectionner la
publication ou lon souhaite abonner un serveur puis cliquer sur envoyer un
nouvel abonnement.
Remarque :
La distribution la demande nest pas possible normal la distribution est initie par
le distributeur.

9.8 La rplication par fusion


La mise jour dun enregistrement ne peut tre faite au mme instant sur lditeur
et sur labonn. Dans la rplication par fusion, labonn est souvent dconnect de
lditeur et des conflits peuvent survenir au moment de la synchronisation des
bases.
La cration dune publication et dun abonnement de fusion est la mme que dans
les autres cas. La diffrence rside dans le mcanisme de rplication.

9.8.1 Publication de fusion


SQL Serveur apporte des modifications la base publie :

SQL Server

157

Il ajoute ou sil elle existe une colonne de type rowguid et cre un index sur
cette colonne et sen sert pour suivre les nouvelles insertions sur lditeur et
les abonns

Il ajoute dans chaque table de la publication des dclencheurs pour suivre


les modifications, insertions et suppressions apportes aux articles.
Ajoute des tables qui sert aux curseurs

9.9 Modifier la rplication


On peut supprimer un article, une publication, ajouter un article une publication,
modifier un article, ajouter de nouvelles publications, de nouveaux abonnements

9.10 Modifier une publication ou un article.


Slectionner la publication choisir proprits, cliquer sur longlet souhait, choisir
la proprit. Il est impossible de modifier un article qui fait lobjet dabonnement.
On peut ajouter des articles une publication, ajouter ou supprimer une colonne
dune table publie. Onglet filtrer des colonnes.

9.11 Supprimer une publication ou un article.


La suppression dune publication ou dun article entrane la fin des abonnements.
Les tables des abonnes ne disparaissent pas, mais elles ne reoivent plus de mises
jour car la publication est supprime. Slectionner supprimer dans la publication,
SQL Serveur prvient quil va supprimer labonnement cte diteur mais il faut
supprimer manuellement cte abonn.

9.12 Ajouter une publication


Il est possible de rajouter un article une publication qui fait lobjet dun
abonnement, il faut synchroniser.

9.13 Dsinstaller la rplication.


En cas de crash ou changement de stratgie, il faut arrter toutes les rplications
dun diteur ou dun distributeur.

Ct abonn
Larrt de la rplication cte abonn consiste supprimer ses abonnements. On ne
peut supprimer que les abonnements extraits. Se placer sur labonn ouvrir dossier

SQL Server

158

extraire des abonnements de la base de destination de la rplication, slectionner


labonnement supprimer et supprimer.

Ct diteur
Dans le cas dabonnements envoys, on se place sur lditeur ouvrir dossier
publications de la base publi proprits onglet abonnement, slectionner
labonnement supprimer.
On supprime ensuite les publications
outils rplication crer et grer les
publications, slectionner les publications et supprimer. Cela annule les
publications mais ne met pas en cause le rle de lditeur. Pour supprimer le rle de
lditeur se placer sur distributeur et choisir outils rplication configurer la
publication de la distribution et les abonnes onglet diteurs dcochez la case
SQL Serveur propose de supprimer les publications et les abonnements en suspens.

Ct distributeur
Abonns et diteur supprims, dsactiver la distribution. Outils rplications
dsactiver la publication.

159

SQL Server

CHAPITRE 10
SQL PROFILER
10.1 SQL Profiler
Le gnrateur de profils (SQL Profiler) sinsre entre les clients et un serveur donn.
Il intercepte toutes les requtes envoyes par les clients au serveur et les stocke
dans un fichier ou une table ou bien les renvoie la console.

SQL
Filtre

Gnrateur
de profils

SQL

SQL

Serveur
Donnes

Console ou
Fichier

La base de SQL Profiler est la trace, dfinie par trois caractristiques :

SQL Server

160

des vnements : un vnement dfinit une opration survenant SQL


Serveur. Par exemple : une connexion, lexcution dune instruction donne,
une erreur,
des donnes : une donne reprsente une information quil faut stocker dans
la trace. Par exemple : le texte de la requte, le nom de lutilisateur excutant
celle-ci, le temps dexcution, le nombre de lectures,
des filtres : un filtre permet de limiter les requtes intercepter. Par
exemple : un utilisateur prcis, un temps minimum dexcution, un nombre
minimum de lectures,

Une trace est enregistre (si on le souhaite) dans un fichier ( *.trc) ou une table
dune base de donnes, dans lesquels sont inscrites les instructions interceptes
entre le client et le serveur, pour une analyse ultrieure.
SQL Server Profiler vous propose de nouvelles mthodes pour limiter une trace.
Vous avez galement accs plusieurs vnements trace. Vous pouvez y accder en
crant une trace et en cliquant sur l'onglet vnements.

Le gnrateur de profils (SQL Profiler) va beaucoup plus loin que SQL Trace en ce
sens quil permet :
la cration et lutilisation de nombreux filtres
le regroupement de multicritres
la sauvegarde, dans une table ou un fichier, des traces ou des seules
instructions reues
lanalyse des instructions contenues dans une procdure stocke.
Vous vous servirez de SQL Profiler comme une source de loptimiseur dindex, pour
reprer les requtes les plus lentes, identifier les processus bloquants ou encore
enregistrer la charge de travail dun serveur.

SQL Server

161

CHAPITRE 11
DVELOPPER UNE APPLICATION SQL SERVEUR
11.1 Introduction
ASP (Active Server Page) est un standard de Microsoft qui permet de dvelopper des
applications Web interactives, c'est--dire dont le contenu est dynamique.
Une page Web ASP (dont lextension est .asp) aura un contenu pouvant tre
diffrent selon certains paramtres (des informations stockes dans une base de
donnes, les prfrences de l'utilisateur, ...) tandis que page Web dite classique
(dont l'extension est .htm ou .html) affichera continuellement la mme information.
ASP est un langage de script puissant, il fait partie des langages interprts (comme
le Basic et le JavaScript), excut du ct du serveur (tout comme les scripts CGI,
PHP, ...) et non du ct client (les scripts crits en JavaScript ou les applets Java
s'excutent dans le navigateur de la personne connecte un site).
Les ASP sont intgrables au sein d'une page Web en html l'aide de balises
spciales permettant au serveur Web de savoir que le code, compris l'intrieur de
ces balises, doit tre interprt afin de renvoyer du code html au navigateur du
client.
Ainsi, les Active Server Pages s'inscrivent dans une architecture 3-tier, ce terme
compliqu signifie qu'un serveur supportant les Active Server Pages peut servir
d'intermdiaire entre le navigateur du client et une base de donnes en permettant
un accs transparent celle-ci grce la technologie ADO (ActiveX Data Object),
qui fournit les lments ncessaires la connexion au systme de gestion de bases
de donnes, la manipulation des donnes grce au langage SQL.
Aujourdhui, Il est facile de crer des pages Web. Il existe de nombreux outils
capables de crer automatiquement des pages simples ou des sites complets
(FrontPage, en est un exemple).
Mais lorsquon saventure au-del des concepts de base, les choses se compliquent,
notamment pour maintenir les informations jourIl faut essayer dautomatiser
cette tche au maximum.
Une solution : utiliser conjointement les bases de donnes et les techniques de
publication html.
De manire gnrale, maintenir une prsence sur le Web est une tche difficile. En
effet, crer et animer un site Web demande beaucoup de temps et dnergie et, en
rgle gnrale, des moyens financiers importants.

SQL Server

162

De plus, tantt, il faut essayer de rentabiliser les cots dinvestissement, tantt, il


faut rduire les cots de fonctionnement.
Mais, in fine, ds que le site Web atteint une taille critique, le recours des bases
de donnes peut constituer une solution viable.
Une base de donnes sur le Web cest :
une source dinformations dj disponible dans la plupart des cas
une base qui est facile maintenir jour
une base qui devient accessible par tous

163

SQL Server

CHAPITRE 12
LES PAGES WEB DYNAMIQUES
12.1 Cration
Il faut trouver le moyen de connecter la base de donnes au Web afin de crer
dynamiquement chaque page en utilisant les donnes stockes dans la base.
En thorie, il suffit de relier simplement le serveur Internet la base de donnes de
sorte quil renvoie le contenu de la base sur demande. Ainsi lutilisateur, qui ouvre
une page Web, visualise les dernires valeurs des enregistrements de la base de
donnes.

12.2 tablir la connexion


Il sagit dun problme compliqu. En fait, nous avons besoin dune combinaison
matriel et logiciel entre la base de donnes et le monde extrieur.
En pratique, la machine serveur doit disposer dun logiciel de connexion lInternet
qui gre les requtes des utilisateurs et fournit les pages rsultats.

12.3 Les besoins


De quoi avons-nous besoin ?
Dun serveur http : Internet Information Server (IIS) sous Windows Server

Dun systme de gestion de bases de donnes (SGBD), Access par exemple.

Dun pont entre les deux, ce pont est cr avec une application Internet.

Un pont entre le serveur et la base de donnes : ODCB (Open DataBase


Connectivity)

SQL Server

164

12.4 Aperu des solutions techniques


Notre principal souci est de trouver le composant qui va grer linterface entre
Internet et notre source de donnes.
Ce composant doit
accepter des instructions venant du navigateur,

traiter la requte correspondante,


rcuprer les informations de la base de donnes,

transformer ces informations en html et les renvoyer au navigateur client


Il existe plusieurs moyens pour faire tout cela. Tout se base sur ISAPI (Internet
Server Application Programming Interface). Cette interface est propose en standard
sur IIS.
Les autres produits pour jouer ce rle dinterface sont :
IDC (Internet Database Connector)

Microsoft dbWeb
DLL OLEISAPI
Scripts Server ActiveX

Application CGI (Common Gateway Interface)


Le moteur de recherche Index Server

et les ASP que nous allons approfondir.

12.5 Caractristiques
Active Server Page est la dernire technologie propose par Microsoft pour
construire des pages Web agrables, dynamiques et interactives destination dun
site World Wide Web (www) ou Intranet.
Cest exactement ce quil faut pour attirer lattention des visiteurs et des
annonceurs publicitaires.
Par rapport aux mthodes traditionnelles, les ASP sont puissantes et
relativement faciles mettre en uvre. Il sagit en fait dune technologie
attrayante qui rend nombre de mthodes antrieures obsoltes.
Cest une technologie qui noblige pas les concepteurs abandonner leurs
anciennes applications (IDC, CGI, ).

SQL Server

165

ASP est un moyen de construire des applications transactionnelles scurises sur le


Web, ce qui permet aux clients de faire facilement des achats sans aucun risque.
La base de ASP est Internet Information Server, totalement intgr depuis Windows
NT4 Server, ce qui garantit une combinaison des plus efficaces.
ASP nest pas une vraie application, il ne sagit que dune technologie de type
colle prise rapide , qui sert maintenir ensemble plusieurs programmes issus
des labos de Microsoft.
Si vous possdez au moins NT 4 Server, vous disposez dActive Server Page. ASP est
en effet inclus dans les Service Packs 2 et 3 de NT 4.
En gros, Active Server Page est un interprteur VBScript et JavaScript, intgr
IIS, dot dune interface pour dautres contrles personnaliss.
ASP nest pas une technologie pantagrulique
On comprend mieux ce que fait ASP si on le considre comme un ensemble
dinterfaces et dinterprteurs de langages, cest une technologie dassemblage.

Compatibilit avec les autres technologies, ce qui est pratique pour un site en cours
de migration vers ASP.
SSI (Server-side Includes) est un terme gnrique utilis pour dcrire la faon dont
les lments peuvent tre insrs dans une page Web.
On peut, par exemple, crer un fichier texte contenant une fraction de code
frquemment utilis, puis linsrer dans une page Web avec une instruction SSI.

SQL Server

166

12.6 Quest-ce quune page dynamique ?


La caractristique majeure dActive Server Page rside dans sa capacit inclure
des scripts directement dans un fichier auquel accde le navigateur, crant ainsi
des pages dynamiques.
Attention, il y a cependant des diffrences par rapport aux autres mthodes
existantes

12.7 Les pages Web statiques

Le code source de la page html est identique celui du fichier stock sur le disque
dur du serveur.

167

SQL Server

CHAPITRE 13
ASP, CE QUI FAIT LA DIFFRENCE
13.1 Les balises dune page ASP
<HTML>
<HEAD>

</HEAD>
<BODY>
<%%>
<SCRIPT LANGUAGE= >

section html normale


script sexcutant sur le serveur lors
de la cration de la page
script sexcutant dans le navigateur
pendant lintgration de la page

</SCRIPT>
<SCRIPT LANGUAGE= RUNAT=SERVER>

script sexcutant sur le serveur sous


forme de procdures ou de fonctions
</SCRIPT>
< !--#Include -->
server side includes : script ou code
html stocks dans un fichier spar
<TABLE> </TABLE>
code html normal
</BODY>
</HTML>
Les composants dActive Server Page
En rsum : si lon sait crer des pages base de scripts, il ny a pratiquement pas
de limite ce que lon puisse raliser.
Mais le code utilis nest que du code VBScript ou Javascript interprt, donc lent.
Aprs avoir commenc crer des programmes complexes, on ne peut que
constater un ralentissement du serveur quand il traite du code. Les limitations sont
les mmes que celles que lon rencontre lors de lexcution de scripts ct
navigateur.

Utiliser des objets sur le serveur


Pour rpondre ces restrictions de performances du ct serveur, VBScript propose
linstruction CreateObject qui permet de crer des instances dobjets sur le serveur
et daccder directement leurs mthodes et proprits. On se trouve ainsi libr
des limitations inhrentes au langage de script.

SQL Server

168

Tout ce qui tait impossible faire en script ou trop long excuter peut tre
remplac par lutilisation dun objet crit dans tout autre langage.
Les objets crs en vue dune telle utilisation sont gnralement appels composant
Active Server.

Le composant ADO (Active Data Object)


Lintrt principal des pages dynamiques sur un site Web est de fournir un accs
aux bases de donnes. Il peut sagir simplement de donnes afficher mais aussi
doprations plus complexes telles que la rcupration et le stockage de donnes
saisies par un utilisateur.
Un des composants livrs en standard avec ASP est conu pour rpondre ce
besoin. Il sagit du composant ADO qui permet daccder nimporte quel systme
de gestion de bases de donnes pour lequel existe un pilote ODBC (Open Database
Connectivity).
ADO est certainement le plus important et le plus complexe des composants
standards, et il est galement au cur des autres produits Microsoft.
En effet, depuis Office 97 il est possible de crer des pages Web - pas
ncessairement statiques - partir de nimporte quelle application.
Par exemple, pour mettre en ligne une base de donnes sous Access, il suffit de
lenregistrer au format html. Ceci dmarre lAssistant Publication Web. On
slectionne ensuite les tables, requtes et formulaires voulus. On choisit ensuite
loption ASP - dynamique et le fichier ASP se cre automatiquement.

169

SQL Server

CHAPITRE 14
INSTALLER ACTIVE SERVER PAGE
Active Server Pages est une des composantes essentielles de Microsoft. Il est apparu
ds les versions 3.0 et 4.0 dInternet Information Server (IIS), le serveur Web intgr
au systme dexploitation Windows NT Server 4.
Nanmoins, dans le cas de NT Server 4, il est ncessaire de disposer du Service
Pack 2 ou 3.
Mais ASP fait aussi partie des dernires versions des serveurs Web associs
Windows NT Workstation 4 (Peer Web Services) et Windows 95 (Personal Web
Server).
Pour utiliser ASP, il faut d'abord installer sur votre PC IIS (Windows 2000 ou XP
pro) ou le Personal Web Server (Win 95, 98, Me ou XP) : il est sur votre CD Windows
ou tlchargeable ! (22.73 Mo)
Tout va dpendre de votre systme dexploitation :

Win 95

PWS sur CD Win 98


ou tlchargeable
puis comme Win98

EasyPHP

Non disponible

Win 98

PWS sur le CD

EasyPHP

Non disponible

Win Me

Le PWS n'est pas sur le CD


Win 98 ou Win 95

EasyPHP

Non disponible

Win 2000 Pro

IIS5 sur le CD

IIS5 & PHP

.NET Framework

Win XP

IIS

EasyPHP

Comme XP pro une


fois IIS install ?

Win XP Pro

IIS5 sur le CD

EasyPHP
ou IIS5 & PHP

.NET Framework

WinServer 2003

IIS6

IIS6 & PHP

IIS6

Mac OS

Emulation iASP

Explications
sur PHP.net

???

Unix/Linux

Emulation Sun Chili!Soft ASP


ou iASP

SQL Server

170

14.1 Premiers pas


Si l'installation s'est bien droule, vous pouvez ds prsent ouvrir un explorer et
taper dans l'url
http://localhost ou encore
http://votreip ou bien
http://votre_nom_d_ordi
A ce moment 2 fentres doivent s'ouvrir simultanment, si c'est le cas, votre serveur
est prt l'emploi !

14.2 Aperu
Pour configurer le serveur, direction le Panneau de configuration
/Outils d'administration/Gestionnaire des Services Internet !
La version d'IIS5 fournie avec Win2000 PRO ne gre qu'un site Web, contrairement

SQL Server

171

la version SERVER qui permet de grer plusieurs sites Web sur une seule et
mme machine. Sur la capture d'cran, nous n'avons alors qu'un seul site Web,
celui par dfaut d'administration, comme vu prcdemment. Nous avons des
Rpertoires virtuels , cest--dire des pointeurs sur des rpertoires qui ne sont
pas dans le chemin par dfaut c:\inetpub\wwwroot\, par exemple mon rpertoire
DL qui se trouve sur mon bureau sera accessible via http://localhost/DL/;
ensuite les rpertoires et les fichiers normaux se trouvant eux directement dans
le chemin par dfaut du serveur.

14.3 Configuration de base


Le premier onglet rgler est celui-l, on peut y changer le rpertoire par dfaut du
site Web, ajouter quelques droits, Nous allons nous en tenir aux rglages par
dfaut ici, amplement suffisants, assurez-vous bien que vous autorisez l'excution
des scripts tout de mme !

SQL Server

172

Si l'on clique sur 'Configuration', on peut paramtrer la dure d'une session (20
minutes par dfaut) et la dure d'excution des scripts, gnralement 2 ou 3
secondes suffisent amplement une boucle pour gnrer une centaine d'crans de
texte via une base de donnes.

IIS5 ne prend comme fichier de base que les default.asp, .html, etc,
il est intressant d'y ajouter les fichiers
index.asp,
index.html
et index.htm,
histoire d'tre l'abri...

Si vous commettez une erreur de script ASP, IIS5 vous gnrera une belle page
Microsoft, assez explicite, que l'on pourra remplacer par une page perso ou bien
dsactiver la page. De ce fait, vous aurez toujours les mmes messages d'erreur,
mais le serveur va tout de mme rendre la page jusqu' l'erreur, comme a, l'on
sait plus prcisment l'endroit o le script a plant, simple et efficace (Erreur 500100 )

SQL Server

D'autres options sont galement intressantes, comme dclarer la place du


compte Invit un vrai compte NT pour accder au site Web, utile en cas
d'intranet uniquement, mais il s'agissait ici plutt de faire une prise en main
du serveur pour les dbutants. Les plus avancs pourront leur guise
explorer les autres options !

173

174

SQL Server

CHAPITRE 15
LOBJET CONNECTION
Dfinir une connexion une base de donnes est une opration simple. La premire
tape consiste crer une instance de lobjet Connection, implment par le
composant Active Database :
Set oConn = Server.CreateObject("ADODB.Connection")
Avec la mthode Create.Object, nous dfinissons une variable contenant une
rfrence linstance de lobjet Connection.

15.1 Dfinir ltendue de la connexion


Pour ouvrir une connexion qui stend au niveau de la session ou de lapplication et
la rutiliser dans plusieurs pages, il faut crer un fichier global.asa.
Ce fichier comprend des instructions valables pour toutes les pages stockes au
mme niveau. Il suffit dintroduire les commandes suivantes :
Sub Application_onStart ()
Set oConn =
End sub
Sub Session_onStart ()
Set oConn =
End sub

Server.CreateObject("ADODB.Connection")
Server.CreateObject("ADODB.Connection")

15.2 Ouvrir une connexion


Ds que lon a cr une instance de lobjet Connection, on peut lutiliser. Cependant,
elle ne fait encore rfrence rien. Ltape suivante consiste se servir de la
connexion pour ouvrir la source de donnes et de les manipuler, avec la mthode
Open de lobjet Connection.
Voici un exemple douverture dune connexion utilisant un DSN systme (Data
Source Name) appel Contacts :
Set oConn =
oConn.Open "Contacts"

Server.CreateObject("ADODB.Connection")

SQL Server

175

15.3 Le DSN
Le systme DSN simplifie beaucoup la manipulation des bases de donnes dans les
scripts puisquon fait simplement rfrence un alias plutt qu lensemble des
paramtres ncessaires pour identifier la base de donnes.
En fait, cest le DSN qui joue le rle dintermdiaire entre le script et ODBC.
Nous verrons plus tard comment ajouter une base de donnes au systme DSN.

15.4 Excuter les commandes


Maintenant que la connexion est ouverte, on peut excuter des commandes sur la
base de donnes avec la mthode Execute. Nous verrons plus tard comment
rcuprer les informations dans un ensemble de rsultats (recordset).
Linstruction Execute admet une chane contenant une requte SQL, le nom dune
procdure stocke ou le nom dune table.
Dans le cas dune table, linstruction renvoie un jeu denregistrements contenant
toutes les donnes de la table.
oConn.Execute "Contacts"
Une procdure stocke est une procdure stocke dans la base de donnes, par
exemple une requte dAccess. Elle est constitue dune ou de plusieurs
instructions SQL. Cest assez pratique !
oConn.Execute "DeleteAllLA"

Voici maintenant une instruction Execute base sur une commande SQL :
oConn.Execute "DELETE * FROM Contact WHERE State = LA "

15.5 Indiquer le type de commande


On peut utiliser Execute avec diffrents paramtres optionnels :
Connection.Execute TexteCommande,
NbEnregModifis, Options

Lorsquon excute une commande, ADO doit interroger la source de donnes pour
savoir quoi faire, ce qui a pour effet de ralentir le processus global. Pour contrer ce
problme, on peut donner une valeur au paramtre Options. ADO connat alors le
type dinstruction et acclre son excution.

Attention, pour utiliser le nom des constantes dans le code, et non leur valeur, il
faut inclure un fichier de dfinition avec un Server-Side Include (SSI).
Ce fichier est fourni avec ASP (Adovbs.inc pour VBScript et Adojavas.inc pour
Jscript). On les trouve normalement dans lun des rpertoires dASP
(ASPSamp/Samples)
Il suffit de taper :

SQL Server

176

<!--#include virtual= "/Aspsamp/Samples/Adovbs.inc"-->


On peut aussi copier le fichier dans le rpertoire de lapplication et simplifier
linstruction :
<!--#include virtual="Adovbs.inc"-->

Lautre paramtre est NbEnregModifi. Si lon donne un nom de variable ce


paramtre. ADO y mettra le nombre denregistrements modifis par la requte ou la
procdure stocke.

15.6 Les paramtres en pratique


Voici les deux exemples prcdents, cette fois-ci optimiss grce lindication du
type de commande utilise et avec une variable, IngRecs, contenant le nombre
denregistrements modifis :
oConn.Execute "DELETE * FROM Contact WHERE State = LA ", IngRecs,
adCmdText
oConn.Exceute "DeleteAIILA", IngRecs, adCmdText

15.7 Fermer la connexion


En fin de traitement sur la base de donnes, on peut fermer la connexion. En outre,
on peut librer les ressources utilises par lobjet.
oConn.Close
Set oConn = Nothing

Si on ne le fait pas, ASP sen charge automatiquement ds que la variable est hors
de porte (selon les cas, aprs lenvoi de la page, la fin de lapplication).

15.8 Utilisation des transactions


Le principe est simple : si lon doit faire plusieurs mises jour simultanes, on
amliore lefficacit de lensemble en demandant au systme de faire les
modifications, puis en les validant en une opration.

Autre avantage, puisque les modifications ne sont valides qu la fin, on peut


toujours changer davis. Cest lannulation des modifications (Rollback). On peut
utiliser la commande pour ne valider que les processus qui nont pas rencontr
derreurs.

SQL Server

177

15.9 Lobjet Command


Pour interroger une source de donnes, nous avons toujours utilis lobjet
Connection. On peut galement utiliser lobjet Command condition de lui attribuer
une chane de connexion grce la proprit ActiveConnection.
Dans ce cas, la connexion stablit, mais sans variable de connexion :
set oCmd = Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection = "Contacts"

15.10 Paramtrage au coup par coup


La syntaxe de la mthode Execute de lobjet Command est lgrement diffrente de
celle de la mthode Connection car elle contient un argument pour les paramtres
utiliss :
command.Execute NbEnregModifi, Paramtres, Options

178

SQL Server

CHAPITRE 16
LOBJET RECORDSET
En plus de crer des requtes qui modifient, ajoutent ou suppriment des
enregistrements, il est galement souvent intressant de pouvoir envoyer, via ADO,
des valeurs de la source de donnes vers la page.
Pour ce faire, il faut dfinir un objet Recordset. Un recordset est identique une
table en mmoire contenant des enregistrements (ou lignes) subdiviss en champs
(ou colonnes).
Les deux mthodes dj vues (connection et command) crent automatiquement
des recordsets. Mais on peut aussi crer un recordset directement, sans ouvrir de
connexion, ni excuter de commande.

16.1 Mthodes et proprits


Nous verrons les mthodes principales : Open, Move, AddNew, Update, Close,
Ainsi que quelques proprits
CursorType, LockType,

AbsolutePosition,

BOF,

EOF,

Bookmark,

16.2 Rcuprer un recordset


La diffrence par rapport aux requtes qui ne renvoient pas de rsultats est que lon
prcise que le rsultat est stock dans un objet Recordset :
Set recordset =
connection.Execute(TexteCommande,
NbEnregModifis, Options)
Set recordset = command.Execute(NbEnregModifis, Paramtres, Options)

16.3 Crer un recordset partir dune requte


Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Contacts"
Set oRs = oConn.Execute("SELECT * FROM Contact WHERE State = LA ")

SQL Server

179

16.4 Crer un recordset partir de lobjet command


Set oCmd = Server.CreateObject("ADODB.Connection")
oCmd.ActiveConnection = "Contacts"
oCmd.CommandText = "SELECT * FROM Contact WHERE State = LA "
oCmd.CommandType = adCmdText
Set oRs = oConn.Execute

16.5 Crer un recordset partir dune table


Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Contacts"
Set oRs = oConn.Execute("Contacts", , adCmdTable)
Attention, "Contacts" est ici le nom de la table.
adCmdTable permet dacclrer le processus.

16.6 Crer un recordset directement


On utilise pour ce faire la mthode Open de lobjet Recordset. La syntaxe est la
suivante :
recordset.Open Source, ActiveConnection, CursorType, LockType, Option

Source : un objet Command, une instruction SQL,


ActiveConnection : un objet Connection existant
CursorType : type de curseur utilis louverture du recordset

LockType : type de verrou utilis louverture du recordset


Options : le type de requte ou la table reprsent par Source

16.7 Types de curseurs dun recordset


Il y a quatre types de curseurs :
Curseur dynamique : propose un recordset en mise jour, et travers lequel
les ajouts, modifications et suppressions excutes par dautres utilisateurs
sont visibles. Permet tout type de dplacement.
Valeur : adOpenDynamic
Curseur jeu de cls : presque identique au curseur dynamique sauf que les
enregistrements ajouts par les autres utilisateurs aprs la cration du
recordset ne sont pas accessibles. Permet tout type de dplacement.
Valeur : adOpenKeyset
Curseurs statique : propose une copie statique en lecture seule. Les
modifications apportes par les autres utilisateurs ne sont pas visibles.
Permet tout type de dplacement.
Valeur : adOpenStatic
Curseur dfilement vers lavant : (type par dfaut) ensemble
denregistrements en lecture seule dans lesquels seuls les dplacements vers

SQL Server

180

lavant sont possibles. Ce recordset amliore les performances dans les


situations
ne
ncessitant
quun
seul
parcours
de
lensemble
denregistrements.
Valeur : adOpenForwardOnly ou sans argument.

16.8 Fermer un recordset


En fin de traitement, on ferme le recordset par la mthode Close, et on libre ses
ressources et donnant sa variable objet la valeur Nothing :
oRs.Close
Set oRs = Nothing

16.9 Utiliser un recordset avec ADO


Quand on cre un objet Recordset et quon y met des donnes, cest en gnral pour
sen servir :
se dplacer dun enregistrement lautre,
diter les enregistrements existants,
en ajouter de nouveau
Nous allons tout dabord tudier le fonctionnement dun ensemble
denregistrements et notamment sa collection Fields.
Commenons par voir comment afficher dans une page Web les informations
extraites du recordset.

16.10 Se dplacer dans un recordset


Il est pratique de concevoir la structure dun objet Recordset comme celle dune
table, cest--dire dun ensemble de lignes (reprsentant chacune un champ). On
parcourt les enregistrements et on accde aux champs de lenregistrement courant.
Il existe cinq mthodes qui permettent de se dplacer.

La mthode MOVE
La mthode Move dplace le pointeur denregistrement de n positions, vers lavant
(nombre positif) ou vers larrire (nombre ngatif), relativement lenregistrement
courant. Noublions pas linfluence du choix du curseur.
oRs.Move 7 se dplace en avant de 7 enregistrements

Pratique, il est possible de connatre la position courante avec la proprit


AbsolutePosition de lobjet Recordset.
En complment de la mthode Move, il est facile de crer un bookmark sur un
enregistrement (avec Access) puis de se dplacer en fonction de la position de celuici.

varMyBookmark = oRs.Bookmark

SQL Server

181

oRs.Move 3
oRs.Move 7
oRsMove 1, varMyBookmark

Les quatre autres mthodes


ADO dispose de quatre autres mthodes de dplacement : MoveFirst, MoveLast,
MoveNext et MovePrevious. Leur rle respectif est vident !
Faire un MoveFirst louverture de tout recordset est utile afin dtre sr dtre au
dbut. MoveNext est galement pratique pour parcourir le recordset enregistrement
par enregistrement.
Attention, si lenregistrement courant est le dernier, appeler MoveNext gnrera une
erreur. Ds lors, pour reprer le dbut et la fin du recordset, deux proprits sont
trs utiles : BOF (begin of file) et EOF (enf of file). La proprit BOF est vraie quand
le pointeur se trouve juste avant le premier enregistrement...
Afin dviter des erreurs lors de tentatives de dplacements dans un recordset, il est
parfois ncessaire de sassurer que les proprits BOF et EOF sont bien fausses.

16.11 Vrifier le nombre denregistrements


On connat le nombre denregistrements dun recordset avec la proprit
RecordCount. Cependant, il faut au pralable utiliser la mthode MoveLast. Ceci est
d au fait que le fournisseur ne connat pas le nombre denregistrements du
recordset avant den avoir atteint la fin.
On peut aussi utiliser cette proprit pour parcourir le recordset dans une boucle
ForNext. Mais si le pointeur est dynamique, il y a un risque derreur. Il est
prfrable dutiliser les proprits EOF et BOF.

16.12 Parcourir un recordset


Lidal consiste donc combiner la mthode MoveNext avec une boucle Do While
(tant que) et la proprit EOF.
Do While Not oRs.EOF

oRs.MoveNext
Loop
La boucle sexcute indfiniment (MoveNext) jusqu ce que la valeur de EOF soit
vraie. On vite ainsi toute erreur (fin de recordset et recordset vide).

SQL Server

182

16.13 Travailler avec la collection Fields


La collection Fields va maintenant nous permettre daccder aux donnes
proprement dites.
Tout objet recordset est dot dune collection Fields contenant les donnes, ainsi
que dautres informations sur les champs de lenregistrement courant : Count
(nombre de champs dans la collection).
Chaque membre de la collection Fields est lui-mme un objet Field possdant un
ensemble de proprits utiles : value (valeur attribue au champs), name (nom du
champ), ...

183

SQL Server

CHAPITRE 17
CONNEXION UNE BASE DE DONNES
(PAR LA PRATIQUE)

Pour se connecter une base de donnes, on utilise lobjet Connection, qui permet
avant toute autre chose de raliser une connexion.
Cet objet doit recevoir un ensemble dinformations qui expliquent comment oprer
la connexion avec la base de donnes.
On peut utiliser plusieurs objets Connection pointant vers des sources de donnes
diffrentes.

17.1 Connexion une base de donnes Access


Dfinit un nom pour lobjet connexion

<%
Dim dcnDB 'AS ADODB.Connection
Dim DbLocation 'As String

Cration dobjet avec


Server.CreateObject

la

mthode

DbLocation="C:\WEBSHARE\WWWROOT\monsite\fpdb\my.mdb
Set dcnDB = Server.CreateObject("ADODB.Connection")
dcnDB.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" _

On fournit OLEDB technologie de


Microsoft pour laccs aux bases de
donnes

& "Persist Security Info=False;Data Source=" _


& DbLocation
dcnDB.Open

On active la connexion
par la mthode Open

La proprit ConnectionString spcifie


la chane de connexion la base de
donnes

17.2 Connexion une base de donnes SQL Server


<%

Dim dcnDB 'AS ADODB.Connection


Dim DbLocation 'As String
DbLocation="MERCURY\MERCURY_SQL"
(= nom ordinateur sur le rseau)
Set dcnDB = Server.CreateObject("ADODB.Connection")
dcnDB.ConnectionString
(=authentification par nom et mot de passe)
"Provider=SQLOLEDB.1;" _

SQL Server

184

& "Persist Security Info=True;User ID=sa;Password=momo;Initial Catalog=pubs; " _


&"Data Source=" & DbLocation
dcnDB.Open
(=authentification de la connexion par NT/2000)
"Provider=SQLOLEDB.1; Integrated Security=SSPI; " _
& "Persist Security Info=False;Initial Catalog=pubs;Data Source=" _
& DbLocation
dcnDB.Open

17.3 Utilisation dun fichier de liaison de donnes

Slectionner le fournisseur OLE-DB

Donner le nom du serveur SQL Server, slectionner le type dauthentification,


choisir la base de donnes et sauvegarder le fichier.

SQL Server

185

<%
Dim dcnDB 'AS ADODB.Connection
Set dcnDB = Server.CreateObject("ADODB.Connection")
dcnDB.ConnectionString = "File Name=..\base1.udl"
dcnDB.Open (ci-dessus : pour fichier de liaison de donnes)

Pour fermer une connexion, on utilise la mthode Close


dcnDB.Close
Pour effacer toute rfrence la connexion on utilise une instruction du type:
Set dcnDB = Nothing

17.4 Lobjet recordset


<%
Dim rsCat 'As ADODB.Recordset
Dim strSQL 'As String
Set rsCat= dcnDB.Execute (" Select count(*)from identification")
Response.Write "il y a" & rsCat(0) & " denreg."

Ici, on nutilise pas la mthode Server.CreateObjet pour instancier lobjet Recordset.


On laisse la mthode Execute sen occuper.

17.5 Supprimer un enregistrement


La mthode Execute, permet aussi de supprimer des enregistrements.
Exemple:
strSQL= "delete from identification where nom=BLAKE "
dcnDB.Execute(strSQL)

17.6 La mthode Open


La mthode Open est plus souple que la prcdente, mais il faut instancier lobjet
Recordset avant de lutiliser.
Exemple:
Dim rsQuery 'As ADODB.Recordset

186

SQL Server

Set rsQuery = Server.CreateObject("ADODB.Recordset")


rsQuery.Open("identification where prenom=SCOTT"),dcnDB_
, adOpenForwardOnly (pas ncessaire, valeur par dfaut)

Ce code ouvre un jeu denregistrements en lecture seule, utilis dans le cas o lon
souhaiterait dfinir simplement une srie de donnes dans un formulaire.
On peut utiliser les mthodes Execute, Open avec diffrents paramtres.
Lorsquon excute une commande, ADO interroge la source de donnes pour savoir
quoi faire, ce qui a pour effet de ralentir le processus. Pour contrer ce problme on
peut fournir des paramtres ; ADO connat alors le type dinstruction et acclre
son excution.
Le code suivant utilise des arguments avec des valeurs qui conviennent mieux
certaines requtes. Pour que cela fonctionne, il faut inclure le fichier adovbs.inc.
Exemple:
<!--#include file="../adovbs.inc"

-->Nb : copier ce fichier dans le rpertoire de notredb

<%
Dim rsQuery 'As ADODB.Recordset
Set rsQuery = Server.CreateObject("ADODB.Recordset")
rsQuery.Open "select * from identification ", dcnDB,
adOpenKeySet ,
adLockOptimistic
adOpenKeySet (ajout, modifier, supprimer des enregistrements)
adLockOptimistic (verrouillage des records lors de lappel de la mthode update)

Une autre mthode est de dfinir les arguments utiliss par la mthode Open
laide du type Const.
Exemple:
<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1 (ajouter enregistrement)
Const adLockReadOnly = 1
Const adLockOptimistic = 3 (locker enregistrement pendant mise jour)
Dim rsQuery 'As ADODB.Recordset
Set rsQuery = Server.CreateObject("ADODB.Recordset")
rsQuery.Open "select * from identification ", dcnDB, adOpenKeySet, adLockOptimistic

17.7 Afficher les enregistrements


La boucle Do/Loop permet de parcourir le jeu denregistrements.
La mthode Close termine le jeu denregistrements ainsi que la connexion.
Exemple :
<%
Do While Not rsQuery.EOF
Response.Write rsQuery("nom") & "<br>"
rsQuery.MoveNext
loop
rsQuery.Close
dcnDB.Close
%>

SQL Server

187

17.8 Mise jour denregistrements


La mise jour dun enregistrement se fait par la slection de lenregistrement dans
la requte Select. La mthode Update envoie la ou les valeur(s) dans la base de
donnes.
Exemple :
rsQuery.Open "select * from identification where nom=SCOTT'", dcnDB, adOpenKeySet,
adLockOptimistic
rsQuery("salaire") ="1050"
rsQuery.Update
rsQuery.Close
dcnDB.Close

17.9 Ajout denregistrements


Lajout dun nouvel enregistrement dbute par la mthode AddNew. Puis, chaque
champ est rempli par une valeur.
La mthode Update envoie les valeurs dans la base de donnes.
Exemple :
rsQuery.Open "select * from identification", dcnDB, adOpenKeySet, adLockOptimistic
rsQuery.AddNew
rsQuery("Nom") ="garcia"
rsQuery("adresse") ="bruxelles"
rsQuery.Update
rsQuery.Close

17.10 Lobjet Request


Lobjet Request rend disponibles toutes les informations renvoyes au serveur par le
navigateur de lutilisateur. Ces donnes peuvent tre fournies par un formulaire de
saisie.
Exemple :
rsQuery.Open "select * from identification, dcnDB, adOpenKeySet, adLockOptimistic
rsQuery.AddNew
rsQuery("nom")=Request("T1")
rsQuery("adresse")=Request("T2")
rsQuery("job")=Request("T3")
rsQuery("salaire")=Request("T4")
rsQuery.Update
rsQuery.Close

SQL Server

188

CHAPITRE 18
LA RECHERCHE TEXTE LIBRE
La majorit des informations stockes numriquement le sont sous forme de
donnes de texte non structures, dans des fichiers de texte brut et des documents
mis en forme. Jusqu' prsent la plupart de ces donnes de texte taient stockes
dans des systmes de fichiers, mais plusieurs entreprises commencent les stocker
dans des bases relationnelles. Ainsi, tout le monde peut bnficier des avantages
lis l'utilisation d'une base de donnes, notamment
l'accs haute performance,
la gnration de requtes,
les interfaces utilisateurs simples fondes sur des applications et destines
aux utilisateurs finaux et
l'accs distance scuris.
La recherche de texte intgral permet aux dveloppeurs de fournir un accs
cohrent aux donnes structures et non structures depuis leurs applications.
Grce la recherche de texte intgral, les utilisateurs finaux peuvent explorer du
texte stock dans la base de donnes mme quand celui-ci est un document mis en
forme, ce qui offre plusieurs avantages :
Cration de requtes de texte intgral fondes sur des donnes de texte brut
stockes dans des tables relationnelles
Cration de requtes de texte intgral uniformment intgres dans le
langage T-SQL ; les requtes simples peuvent combiner des paradigmes de
recherche de texte intgral et classique
Recherche dans toutes les colonnes indexes en texte intgral d'une table
Accs programm aux informations relatives la requte (numro de rsultat
correspondant, pondration par mots de recherche, )
Top_N_By_Rank, pour renvoyer les premiers rsultats N par numros, idal
pour amliorer les performances.
Requtes de texte intgral sur des documents mis en forme (par exemple, des
documents Office et HTML) stocks dans des colonnes BLOB de la base de
donnes et enregistrs pour tre indexs en texte intgral. SQL Serveur est
fourni avec des filtres destins aux fichiers HTML, texte et aux documents
Office. Par ailleurs, les dveloppeurs peuvent crire leurs propres filtres par
le biais de la spcification IFilter.
SQL Serveur introduit galement des modifications dans le suivi des index en texte
intgral afin de rduire le besoin de donnes compltes et incrmentielles.

189

SQL Server

CHAPITRE 19
CARACTERISTIQUES XML/HTTP POUR SQL
SERVEUR

SQL Serveur comporte un grand nombre de nouvelles caractristiques supportant


lemploi de XML et permettant la communication avec le serveur par le circuit http.

19.1 Accder SQL Serveur


Vous n'avez pas besoin d'utiliser HTTP pour prendre avantage de la plupart des
fonctionnalits XML dans Serveur SQL. Pour certaines tches, cependant, l'accs
HTTP peut tre une vraie commodit. Par exemple, vous pourriez installer un site
Web qui permette aux utilisateurs d'excuter des requtes sur le Serveur SQL et
avoir les donnes formates utilisant automatiquement XSL, sans excuter de code.
Cela est accompli par une application ISAPI efficace qui travaille avec IIS (Internet
Information Service).
Chaque administrateur de la base de donnes, qui est au courant que HTTP accde
directement au Serveur SQL, s'inquite des questions de scurit. N'importe quand
les donnes d'entreprises sont exposes publiquement sur le rseau, la scurit doit
tre adresse, mais vous verrez que vous avez plusieurs chemins alternatifs solides
pour protger vos donnes qui utilisent ou les logins de SQL Serveur ou la scurit
intgre de Windows. Vous avez le contrle complet partout o les requtes URL
peuvent tre utilises ou galement quand HTTP est seulement utilis pour excuter
des botes de requtes que vous dfinissez dans les formulaires XML.

19.2 Rcupration de donnes


Pour soutenir la rcupration de donnes sous forme de XML, Microsoft a fait une
nouvelle proposition disponible dans les dclarations select de Transact-SQL. En
ajoutant FOR XML une requte, vous pouvez rapporter les donnes comme XML.
Plusieurs options sont disponibles pour vous permettre de rgler la structure
hirarchique du XML, aussi bien si les donnes sont codes comme les attributs
d'lments ou comme les sous lments imbriqus.

19.3 Cration de vues XML

SQL Server

190

Les vues standards de SQL Serveur vous permettent de crer et sauver des
dclarations select qui prsentent des donnes aux clients de Transact-SQL, en
cachant les dtails ou comment les donnes sont assembles et traites. Les vues
XML fournissent un service semblable pour les clients XML qui utilisent
spcialement des schmas XML annots.
Les schmas annots permettent aux requtes XPath d'tre formules et bases sur
une structure XML standard dcrite dans un schma de document. Les annotations
spciales dressent une carte des lments et attributs dcrits dans le schma aux
tables et colonnes des bases de donnes relationnelles de SQL Serveur. Les vues
XML vous permettent essentiellement de traiter vos bases de donnes comme de
grands documents XML, en vous donnant encore la performance bnfique d'un
moteur relationnel.

19.4 Envoi de donnes vers SQL Serveur par XML


SQL Serveur offre trois manires de transmettre les donnes avec XML : OpenXML,
Updategrams, et XML Bulk Load.

OpenXML est une nouvelle fonction de rowset, similaire la fonction de


rowset de OpenQuery qui vous permet rapporter des donnes de n'importe
quel provider OLE DB. Avec OpenXML, vous pouvez passer XML dans une
requte SQL Serveur ou la procdure stocke comme un paramtre et
analyser le XML dans votre code Transact-SQL. Vous pouvez utiliser XPath
pour choisir les donnes recherches et vous pouvez utiliser aussi un select
conventionnel pour filtrer, calculer, ou trier les rsultats retourns par la
fonction de OpenXML.
Updategrams sont des formulaires spciaux de XML que vous utilisez pour
insrer, mettre jour ou effacer les donnes de SQL Serveur. Les
Updategrams supportent les transactions et les paramtres, et ils fournissent
galement le contrle par-dessus les conflits de concurrence.
XML Bulk Load (Chargement de Masse de XML) utilise un modle de
streaming pour faire l'usage efficace de la mmoire pendant le traitement de
trs grands documents XML, offrant des rsultats comparables aux vieux
programmes de copie de masse (toujours fiables) de SQL Serveur ( Server
Bulk Copy Program : bcp).

191

SQL Server

CHAPITRE 20
SOURCES

SQL Serveur 2008 , Jrme GABILLAUD, Eni Edition, octobre 2009

http://www.labo-microsoft.org/articles/SQL_Server_Database/

http://support.microsoft.com/search/default.aspx?query=sql+serveur&mod
e=r&catalog=LCID%3D1033

http://www.microsoft.com/france/serveur/sql/

http://support.microsoft.com/kb/955829/fr

http://msdn.microsoft.com/fr-fr/library/bb500435(v=SQL.100).aspx