Académique Documents
Professionnel Documents
Culture Documents
SECTEUR NTIC
OFPPT
SECTEUR NTIC
Filire : TDI
Niveau Technicien spcialis
Manuel de TP
Module18 : Systme de Gestion de Bases de Donnes II
p. 1
Dure : 75 h
CRITERES PARTICULIERS DE
PERFORMANCE
p. 2
p. 3
Activit dapprentissage 1
Module
TDI-18
Prcision
Code Activit
A001
Activit
Dure
45 mn
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 4
DESCRIPTION DE LACTIVIT
Pour grer les membres dun forum de programmation, on dispose de la table suivante :
Membre (Pseudo, E-mail, Mot de passe, Date de naissance, Date dinscription, Ville)
Travail faire :
Crer la table Membre.
Enregistrer quelques membres dans la table.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
p. 5
Activit dapprentissage 2
Module
TDI-18
Prcision
Code Activit
A002
Activit
Dure
30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 6
DESCRIPTION DE LACTIVIT
Facture deau
<=8
1,29
Entre 9 et 20
4,29
Entre 20 et 36
6,59
> 36
10,37
crire un lot transact-sql qui calcule le montant payer pour une consommation
donne.
Dclarer une variable @consommation et lui affecter la valeur 26.
En utilisant la structure if else calculer et afficher le montant de la consommation.
Excuter le lot
Calculer le montant de la facture pour les consommations suivantes : 6 m3, 15 m3 et 40
m3
p. 7
Activit dapprentissage 3
Module
TDI-18
Prcision
Code Activit
A003
Activit
Dure
30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 8
DESCRIPTION DE LACTIVIT
Pour encourager lentraide des membres du forum, un systme de bonus point a t
instaur.
Un extrait de la base de donnes est le suivant :
Membre (Pseudo, E-mail, Mot de passe, Date de naissance, Date dinscription, Ville)
Bonus (PseudoMembre, NbPoint)
Travail faire :
Crer la table Membre
Ajouter quelques membres la table
crire un lot Transact-sql qui permet dajouter la base de donnes la table Bonus si
elle nexiste pas et/ou crer la contrainte FOREIGN KEY si elle nexiste pas.
Pour tester lexistence dun objet dans la base de donnes, vous pouvez utiliser
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Nom
objet'))
Dans un nouveau lot Transact-sql, on souhaite ajouter un nombre de points au score d
un membre :
Dclarer une variable @pseudo et lui affecter la valeur TDI2
Dclarer une variable @point et lui affecter la valeur 2
Si le membre a dj eu un bonus, augmenter donc ses points par la valeur de la variable
@point
Sinon ajouter une nouvelle entre dans la table Bonus (@pseudo, @point).
p. 9
Activit dapprentissage 4
Module
TDI-18
Prcision
Code Activit
A004
Activit
Dure
1h30mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 10
DESCRIPTION DE LACTIVIT
Pour la gestion des rendez-vous dun cabinet mdical, un extrait de la base de donnes
vous est fourni :
RDV (NUM_RDV, DATE_RDV, HEURE_RDV, PATIENT)
Heure_RDV (Heure)
le champ Heure est de type time
Dclarer les variables suivantes
Nom variable
Type
@HeureDebut
Time
@HeureFin
Time
@dure
Int
Valeur initiale
8 :00
14:00
20
p. 11
Activit dapprentissage 5
Module
TDI-18
Prcision
Code Activit
A005
Activit
Dure
1 h 30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 12
DESCRIPTION DE LACTIVIT
Soit une base de donnes SQL Server contenant les tables suivantes :
Salle (NumSalle, Etage, NombreChaises)
Transfert (NumSalleOrigine, NumSalleDestination, NbChaisesTransfres,
DateTransfert)
Crer la base de donnes
Le nombre de chaises dans une salle doit tre compris entre 20 et 30 chaises par salle
Implmenter cette rgle laide dune contrainte CHECK
Saisir les donnes suivantes :
Numro salle
1
2
3
4
Etage
1
1
1
2
Nombre de chaises
24
26
26
28
laide dune transaction, crire le code qui permet de dplacer un nombre de chaise
dune salle une autre.
Dmarche :
Dclarer les variables suivantes :
Variable
type
@SalleOrigine
int
@SalleDest
int
@NbChaises
int
@dateTransfert
Date
Valeur
2
3
4
Getdate()
Dans un bloc BEGIN TRY END TRY, crire le code qui permet de :
a. dbuter une transaction (BEGIN TRANSACTIN)
b. modifier le nombre de chaises de la salle dont le numro = @SalleOrigine
(NombreChaises = NombreChaises - @NbChaises)
c. modifier le nombre de chaises de la salle dont le numro = @SalleDest
(NombreChaises = NombreChaises + @NbChaises)
d. enregistrer lopration dans la table transfert
e. valider la transaction (COMMIT TRANSACTION)
dans le bloc BEGIN CATCH .. . END CATCH, crire le code qui permet de :
a. annuler la transaction (ROLLBACK TRANSACTION)
b. afficher le message derreur Impossible deffectuer le transfert des chaises
excuter le code puis consulter les tables salle et transfert, le transfert doit tre effectu
parce que la contrainte CHECK est vrifie pour les deux salles
en essayant de r-excuter le code une deuxime fois, le message derreur sera affich
p. 13
Activit dapprentissage 6
Module
TDI-18
Prcision
Code Activit
A006
Dclenchement d'une exception via
RAISERROR
Activit
Dure
1 heure
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 14
DESCRIPTION DE LACTIVIT
Soit la base de donnes suivante :
Adhrents (Num_Adh, Nom_Adh, Prnom_Adh, Date_Naissance)
Livres (Num_Li, Titre, Dure_Max_Emprunt, Emprunt)
Emprunts (Num_Emp, Num_Adh, Num_Li, Date_Emprunt, Date_Retour)
Travail faire ( modifier pas de ps)
1. Crer la base de donnes
2. Remplir la table Adhrents et la table Livres.
A l'aide de sp_addmessage, dfinir les messages derreur suivants :
Id message
Message
Severity
60000
Le livre nexiste pas
16
60001
ladhrent nexiste pas
16
60002
le livre est dj emprunt
16
60003
ladhrent emprunte dj 3 livres
16
3. crire un lot transact-sql qui enregistre une opration demprunt en tenant
compte des indications suivantes :
Dclarer deux variables @Num_Adh et @Num_Li et leur affecter des
valeurs de votre choix.
Dclencher lerreur numro 60000, si le livre nexiste pas (utiliser
linstruction RAISERROR)
Dclencher lerreur numro 60001, si ladhrent nexiste pas.
Dclencher lerreur numro 60002, si le livre est dj emprunt.
Dclencher lerreur numro 60003, si ladhrent a trois 3 livres non
retourns.
Enregistrer lopration demprunt (la date demprunt est la date systme).
4. On souhaite enregistrer lopration de retour dun livre
dclarer une variable @Num_Livre
Enregistrer le retour du livre en levant des erreurs si le livre nexiste pas
ou sil nest pas emprunt
La date de retour est la date systme.
Afficher le nombre de jour de retard sil on a dpass la dure max
demprunt.
p. 15
Activit dapprentissage 7
Module
TDI-18
Prcision
Code Activit
A007
Activit
Dure
45 mn
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 16
DESCRIPTION DE LACTIVIT
A partir dune liste de personnes, on souhaite calculer et renvoyer le nombre de
personnes par tranches d'ge.
Crer une base de donnes contenant la table suivante : Personne (nom, adresse,
dateNaissance)
Remplir la table avec quelques enregistrements.
Crer une table temporaire dont la structure est la suivante :
Age min
Age max
NOMBRE
Int
Int
Int
p. 17
Age max
9
19
29
NOMBRE
6
4
15
Activit dapprentissage 8
Module
TDI-18
Prcision
Code Activit
A008
Activit
Dure
45 mn
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 18
DESCRIPTION DE LACTIVIT
La base de donnes dun centre de formation contient la table suivante :
Formation (Num, Titre, Date_dbut, Date_fin, NbParticipants)
Le responsable du centre souhaite calculer le nombre total des participants par
jour entre deux dates donnes.
Par exemple, si la table Formation contient :
Num
1
2
3
Titre
Initiation Windows 7
SQL SERVER 2008
Office 2012
Date_dbut
Date_fin
09/12/13
11/12/13
09/12/13
12/12/13
14/12/13
11/12/13
NbParticipants
8
6
5
Nombre participants
13
13
19
14
Travail faire
Crer la table Formation
Saisir quelques enregistrements dans la table
Dclarer une variable de type table contenant deux colonnes la date et nombre
participants
Dclarer une variable @dateDebut et linitialiser avec la valeur 09/12/2013.
Dclarer une variable @dateFin et linitialiser avec la valeur 12/12/2013.
Dans le bloc dinstructions dune boucle While, calculer le nombre de participant pour
chaque jour, puis ajouter le rsultat obtenu dans la variable de table
Afficher le contenu de la variable table
Afficher les jours o le nombre total des participants dpasse 16 personnes
p. 19
Activit dapprentissage 9
Module
TDI-18
Prcision
Code Activit
B001
Activit
Dure
25 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 20
DESCRIPTION DE LACTIVIT
Crer un ensemble de collecteurs de donnes pour analyser le serveur Sql
3. Cliquez avec le bouton droit sur Dfinis par lutilisateur, puis cliquez sur
Nouveau Ensemble de collecteurs de donnes .
4. Dans la bote de dialogue Crer un nouvel ensemble de collecteurs de
donnes, dans la zone Nom, taper Collecteur1 , cocher la case Crer
manuellement (avanc), puis cliquer sur Suivant.
5. Dans la bote de dialogue Quel type de donnes inclure, cocher la case
Compteur de performance. puis cliquer sur Suivant.
6. Dans la bote de dialogue Quel compteurs de performance enregistrer dans
un journal ? dfinir lintervalle dchantillonnage 10 secondes puis cliquer
sur le bouton Ajouter
7. Dans la nouvelle bote de dialogue cocher la case Afficher la description (lire
la description du compteur slectionn) Ajouter dans le journal les
compteurs rpertoris dans le tableau ci-dessous :
Objet de performance
Mmoire
Mmoire
Processus
Processeur
SQLServer:Locks
SQLServer:Locks
SQLServer:Memory Manager
Compteur
Pages/s
Dfauts de page/s
% Temps processeur
% Temps processeur
Requtes de verrous/s
Temps dattente des verrous (ms)
Mmoire totale du serveur
Instance
sqlservr
_Total
_Total
_Total
p. 21
Activit dapprentissage 10
Module
TDI-18
Prcision
Code Activit
B002
Activit
Dure
45 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 22
DESCRIPTION DE LACTIVIT
Dmarrer SQL Server Management Studio
Crer une base de donnes BDCommercial :
Crer la table suivante : Articles (Num, Designation, Prix)
Insrer deux lignes de donnes dans la table Articles
INSERT INTO Articles VALUES (1, 'Galaxy S5',5000)
INSERT INTO Articles VALUES (2, 'Xperia Z2',5500)
Dmarrer SQL Server Profiler, (menu Outils - SQL Server Profiler), et se
connecter linstance Sql Server
Indiquer un nom de trace, Dans la zone Nom de la trace
slectionner Vide Dans la liste Utiliser le modle.
Enregistrer les rsultats de la trace dans un fichier,
cliquer sur l'onglet Slection des vnements.
Activer la case cocher pour l'vnement Deadlock graph dans la catgorie
Locks,
Cliquer sur Excuter pour dmarrer la trace
Ouvrez deux fentres de requte et modifier le contexte de la base de donnes
BDCommercial .
Dans la premire fentre de requte, excuter le code suivant:
begin transaction
UPDATE Articles
SET
Prix = 6000
WHERE (Num = 1)
Dans la deuxime fentre de requte, excuter le code suivant:
begin transaction
UPDATE Articles
SET
Prix = 6000
WHERE (Num = 2)
select * from Articles
where Num = 1
Dans la premire fentre de requte, excuter le code suivant:
select * from Articles
where Num = 2
Observer les rsultats dans le SQL Server Profiler
p. 23
Activit dapprentissage 11
Module
TDI-18
Prcision
Code Activit
C001
Activit
Dure
45 mn
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
Dclarer un curseur
Ouvrir un curseur
Rcuprer les donnes dun enregistrement
Utiliser la boucle While avec un curseur.
Fermer un curseur
.
..
............
p. 24
DESCRIPTION DE LACTIVIT
p. 25
Activit dapprentissage 12
Module
TDI-18
Prcision
Code Activit
C002
Activit
Dure
45 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 26
DESCRIPTION DE LACTIVIT
Facture dlectricit
La facture dlectricit est calcule selon un barme tranche.
La consommation mensuelle dlectricit est rpartie en tranches, les
informations concernant les tranches (Numro, Quantit, Tarif) sont stockes
dans une table nomme Barme.
Crer la table Barme
Renseigner la table Barme
Numro
Quantit
Tarif kWh
100
0,8496
100
0,9227
300
1,0039
1,3717
p. 27
Activit dapprentissage 13
Module
TDI-18
Prcision
Code Activit
C003
Activit
Dure
30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 28
DESCRIPTION DE LACTIVIT
Classement des lves
On souhaite classer les lves selon leur moyenne.
Crer une table lve (Num, Nom, Moyenne)
Remplir la table avec les donnes de quelques lves
Ajouter la table lve une colonne Classement
laide dun curseur, calculer et mettre jour la colonne Classement
Dclarer un curseur associ la requte SELECT Moyenne FROM lve
ORDER BY 1 DESC
Dclarer une variable @classement et lui affecter la valeur 1
Parcourir le rsultat obtenu par le curseur, et mettre jour le champ classemnt de
lenregsitrement courant en xcutant linstruction suivante :
update lve set Classement = @Classement where CURRENT of nomcurseur
incrmenter le compteur
excuter le code et vrifier le classement des lves
modifier le code pour tenir compte des lves ex quo (ayant la mme moyenne
donc le mme classement)
p. 29
Activit dapprentissage 14
Module
TDI-18
Prcision
Code Activit
D001
Activit
Dure
40 mn
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 30
DESCRIPTION DE LACTIVIT
Exercice 1
Crer une procdure permettant de crer la table Semaine (jour date) et la rempli
avec les dates des 7 jours qui suivent la date systme.
Excuter la procdure
Afficher le contenu de la table Semaine
Modifier la procdure pour inclure le code qui permet de supprimer la table si
elle existe
if OBJECT_ID('Semaine') is not null vrifie lexistence de la table Semaine
R-excuter la procdure.
Supprimer la procdure.
p. 31
Activit dapprentissage 15
Module
TDI-18
Prcision
Code Activit
D002
Activit
Dure
2h
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 32
DESCRIPTION DE LACTIVIT
Club loisir
Pour grer les diffrentes activits dun club de loisirs, et partir de cet extrait
dune base de donnes relationnelle, raliser le travail demand
Adhrent (code, nom, prnom)
Activit (refActivit, intitul, NbMaxParticipant)
Inscription (code, refActivit, date)
1. Crer la base de donnes
2. Crer une procdure permettant dajouter un nouvel adhrent
3. Ajouter des adhrents la base de donnes en excutant la procdure
4. Crer une procdure permettant dajouter une nouvelle activit la base de
donnes
5. Crer des activits dans la base de donnes, en excutant la procdure
correspondante
6. Crer une procdure permettant dinscrire un adhrent dans une activit :
La date inscription est facultative, (elle est gale la date systme si omise).
p. 33
Activit dapprentissage 16
Module
TDI-18
Prcision
Code Activit
D003
Activit
Dure
2h30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 34
DESCRIPTION DE LACTIVIT
A partir de cet extrait dune base de donnes relationnelle, raliser le travail
demand
Fonctionnaire (matricule, nom, dateEmbauche, chelle_actuelle)
Historique_Echelle (DateEffet, Nouvelle_Echelle, matricule)
Grille_indiciaire (Echelle, Point_Indice, Dure minimale)
p. 35
p. 36
Activit dapprentissage 17
Module
TDI-18
Prcision
Code Activit
D004
Activit
Dure
2 h 30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 37
DESCRIPTION DE LACTIVIT
Soit la base de donnes suivante :
Adhrents (Num_Adh, Nom_Adh, Prnom_Adh, Date_Naissance)
Livres (Num_Li, Titre, Dure_Max_Emprunt, Emprunt)
Emprunts (Num_Emp, Num_Adh, Num_Li, Date_Emprunt, Date_Retour)
Archives (Nom_Prnom_Adh, Titre_livre, Date_Emprunt, Date_Retour)
Num_Adh, Num_Li et Num_Emp sont des champs identity
Travail faire :
Crer la base de donnes
1. Crer une procdure stocke AjoutLivre qui permet dajouter un
nouveau livre la base de donnes (le champ Emprunt a la valeur 0)
2. Ajouter des livres en excutant la procdure
3. Crer une procdure stocke LivresEmprunts qui renvoie la liste des
livres actuellement emprunts
4. Crer une procdure stocke AjouterAdhrent @Num OUTPUT,
@nom, @prnom, @dateNaissance qui permet denregistrer un nouvel
adhrent, utiliser un paramtre OUTPUT pour retourner le numro
attribu automatiquement (@@identity)
5. crire une procdure Emprunter qui enregistre un emprunt. Par
dfaut, la date demprunt est la date du jour. En cas derreur la procdure
retourne un numro de code selon le tableau suivant :
Code de retour Erreur
1
Le livre nexiste pas
2
ladhrent nexiste pas
3
le livre est dj emprunt
4
ladhrent emprunte dj 3 livres
6. En utilisant les procdures prcdemment cres, ajouter un nouvel
adhrent, rcuprer son numro dans une variable et lui faire emprunter le
livre Num 1, si le code retourn par la procdure Emprunter est
diffrent de 0, afficher le message derreur correspondant.
7. Crer une procdure stocke SuppAdhrent qui permet de supprimer
un adhrent ainsi que tous ses emprunts de la base de donnes
les emprunts doivent tre archiv avant leur suppression
la procdure doit lever une erreur si ladhrent na pas retourn des livres
utiliser une transaction pour garantir la cohrence des donnes
8. Excuter la procdure SuppAdhrent pour supprimer ladhrent cr dans
la question 6
9. Crer une procdure stocke RetournerLivre qui permet denregistrer
le retour dun livre
RetournerLivre @Num_Livre
en levant des erreurs si le livre nexiste pas ou il nest pas emprunt et en
imposant la date du jour comme date de retour.
Utiliser un paramtre OUTPUT pour renvoyer le nombre de jour de retard
si on a dpass la dure maximale demprunt.
10. Retourner le livre Num 1, en excutant la procdure RetournerLivre .
11. R-excuter la procdure SuppAdhrent pour supprimer ladhrent cr
p. 38
dans la question 6
p. 39
Activit dapprentissage 18
Module
TDI-18
Prcision
Code Activit
D005
Activit
Dure
2 h 30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 40
DESCRIPTION DE LACTIVIT
Pour le suivi des paiements raliss par ses patients, un dentiste utilise une base de
donnes SQL Server contenant les tales suivantes :
p. 41
Activit dapprentissage 19
Module
TDI-18
Prcision
Code Activit
D006
Activit
Dure
2 h 30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 42
DESCRIPTION DE LACTIVIT
Scurit dun site Web.
Pour grer la scurit dun site Web, on utilise une base de donnes contenant les
tables suivantes:
CompteUtilisateur (Nom, PassWord, QuestionSecurite, ReponseSecurite,
DateCration , estBloqu, date_dernire_connexion, Nombre_Echec_Connexion,
Date_Dernier_Echec)
Rle (Id, Nom)
Appartenance (NomUtilisateur, IdRole)
Travail faire :
Crer la base de donnes :
Crer des procdures stockes permettant de :
1. ajouter un nouveau rle.
2. crer un nouvel utilisateur :
CreerUtilisateur @Nom, @PassWord, @Email, @QuestionSecurite,
@ReponseSecurite, @DateCration
le paramtre @DateCration est facultatif, (elle est gale la date systme si
omise).
3. Ajouter un utilisateur un rle
4. Retourner les rles dun utilisateur donn.
5. Supprimer un utilisateur ainsi que toutes ses appartenances aux diffrents
rles
6. Renvoyer tous les noms des utilisateurs.
7. Rinitialiser le mot de passe dun utilisateur
ReinitialiserPassword @Nom, @NouveauPassWord, @QuestionSecurite,
@ReponseSecurite
Le mot de passe est modifi si la question et la rponse de scurit sont correctes
la procdure doit renvoyer des messages derreurs si le nom utilisateur nexiste
pas ou si la question ou la rponse de scurit ne sont pas correctes
8. Vrifier si un nom de rle existe dans la base de donnes
Roleexiste @nomRole
La procdure retourne 1 si le rle existe et 0 sinon.
p. 43
9. Authentifier un utilisateur.
Seconnecter @NomUtilisateur, @Password, @resultat OUTPUT
La procdure vrifie le nom de l'utilisateur et son mot de passe par rapport aux
informations d'identification stockes dans la table CompteUtilisateur et
retourne comme resultat les valeurs suivantes :
0 si le nom de lutilisateur et le mot de passe sont valide (actualiser la date de
dernire connexion et initialiser le Nombre_Echec_Connexion 0)
1 - si le nom dutilisateur est incorrect.
2 si le mot de passe est incorrect (actualiser la Date_Dernier_Echec et
incrmenter de 1 le Nombre_Echec_Connexion aprs 3 checs dans un intervalle
de 30 mn la procdure doit bloquer le compte utilisateur)
10. Dbloquer le compte dun utilisateur.
Dbloquer @NomUtilisateur
La procdure retourne le code 1 si chec
Excuter chaque procdure cre et vrifier son rsultat.
p. 44
Activit dapprentissage 20
Module
TDI-18
Prcision
Code Activit
D007
Activit
Dure
2 h 30
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 45
DESCRIPTION DE LACTIVIT
p. 46
Activit dapprentissage 21
Module
TDI-18
Prcision
Code Activit
D008
Activit
Dure
1 h 30
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 47
DESCRIPTION DE LACTIVIT
Exercice 1
Soit la base de donnes suivante :
Utilisateur (Id, Pseudo, E-mail, Mot de passe, Date dinscription)
Salle (Id, Thme)
Message (IdUtilisateur, IdSalle, date_envoi, ,corps)
1.Crer la base de donnes.
2.Crer une fonction ListeUtilisateurs qui retourne la liste des utilisateurs
ayant particip une salle de discussion (ayant envoy au moins un
message).
3. Crer une fonction Participants qui renvoie trois utilisateurs ayant
envoy le plus grand nombre de messages une salle de discussion.
(Pseudo, E-mail, Nombre de message envoy)
4.L'oprateur APPLY permet d'appeler une fonction table pour chaque ligne
retourne par l'expression de table externe d'une requte.
crire la requte suivante pour afficher pour chaque salle les 3 utilisateurs
ayant envoy le plus grand nombre de message.
SELECT thme, Pseudo, FROM Salle cross apply
dbo.participants(Salle.Id)
p. 48
Activit dapprentissage 22
Module
TDI-18
Prcision
Code Activit
D009
Activit
Dure
2 heures 30
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 49
DESCRIPTION DE LACTIVIT
Exercice 1
Soit une base de donnes contenant la table suivante :
Formations (Num, Titre, Date_dbut, Date_fin, NbParticipants)
Num est un champ auto-incrment.
Crer la table
Ajouter la table les formations suivantes :
Num
1
2
3
Titre
Initiation Windows 7
SQL SERVER 2008
Office 2012
Date_dbut
Date_fin
09/12/13
11/12/13
09/12/13
12/12/13
14/12/13
11/12/13
NbParticipants
8
6
5
Ecrire une fonction table qui renvoie le nombre total de participants par jour entre
deux dates donnes en paramtres.
Lexcution de la requte :
SELECT * FROM dbo.prsences_quotidiennes(09/12/13, 12/12/13)
Affiche le rsultat suivant
Date
09/12/13
10/12/13
11/12/13
12/12/13
Nombre participants
13
13
19
14
Exercice 2
Soit la table Personne (nom, adresse, dateNaissance)
Crer la table Personne
Saisir des enregistrements dans la table
Ecrire une fonction qui renvoie le nombre de personnes par tranches d'ge.
Lexcution de la requte : SELECT * FROM dbo.nbPersonneTranche(10)
Affiche le rsultat suivant
Age min
Age max
NOMBRE
0
9
6
10
19
4
20
29
15
Exercice 3
p. 50
Nombre ordinateurs
50
56
72
74
98
p. 51
Activit dapprentissage 23
Module
TDI-18
Prcision
Code Activit
D010
Activit
Dure
1 heure 30
Phase dapprentissage
Entrainement
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 52
DESCRIPTION DE LACTIVIT
Exercice 1
A partir de cet extrait dune base de donnes relationnelle, raliser le travail
demand
Salles (Num, Nom, Capacit, Prix_journalier, Total_recettes)
Rservations (NumReservation, client, NumSalle, DateDebutRes, DateFinRes)
Crer la base de donnes
Renseigner les tables
Ecrire une fonction qui renvoie toutes les priodes ou une salle sera libre,
entre deux dates donnes en paramtre.
Priodeslibres(@NumSalle, @DateDebut, @DateFin)
La fonction retourne un rsultat ayant
Date dbut
Numro
1
13/12/2013
2
25/12/2013
la structure suivante :
Date fin
Nombre jours
17/12/2013
4
28/12/2013
3
DateDebutRes, DateFinRes
FROM Rservations WHERE NumSalle = @NumSalle ORDER BY DateDebut
Utiliser un curseur associ linstruction SELECT
p. 53
Activit dapprentissage 24
Module
TDI-18
Prcision
Code Activit
F001
Activit
Dure
2 heures
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 54
DESCRIPTION DE LACTIVIT
Exercice 1
Soit une base de donnes contenant les tables suivantes:
Formations (Num, Titre, Date_dbut, Date_fin, NbParticipants)
Num est un champ auto-incrment.
Journal (DateOperation, Opration, Nbligneaffecte, Utilisateur)
Lopration est : ajout, modification ou suppression.
Crer la base de donnes.
CREATE TABLE Formations (Num INT primary key identity,
Titre varchar(150), Date_dbut date, Date_fin date,
NbParticipants int)
CREATE TABLE Journal (DateOperation datetime default getdate(),
Opration varchar(50), Nbligneaffecte int, utilisateur sysname
default system_user)
p. 55
Table DELETED
Type opration
Vide
Ajout
Non vide
Non vide
modification
suppression
Pour tester le trigger cr, mettre jour la table des formations et consulter la
table journal.
p. 56
Activit dapprentissage 25
Module
TDI-18
Prcision
Code Activit
F002
Activit
Dure
2 heures 30
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 57
DESCRIPTION DE LACTIVIT
Exercice 1
A partir de cet extrait dune base de donnes relationnelle, raliser le travail
demand
Salles (Num, Nom, Capacit, Prix_journalier, Total_recettes)
Rservations (NumReservation, client, NumSalle, DateDebut, DateFin)
Travail faire :
Crer la base de donnes.
Remplir la table Salles
Une salle ne peut faire lobjet de deux rservations pour une mme journe; par
exemple si la salle 1 est rserve entre le 09/09/2013 et 13/09/2013, elle ne peut
tre rserve entre le 12/09/2013 et 14/09/2013. Implantez par un trigger cette
rgle.
Tester le trigger
A chaque mise jour de la table des rservations il faut mettre jour le montant
total des recettes des salles concernes. Crer un dclencheur after INSERT
permettant daugmenter le total des recettes dun montant gal au prix journalier
de la salle multipli par la dure de la rservation.
Pour tester le trigger, enregistrer une rservation et afficher le total des
recettes de la salle concerne.
Exercice 2
A partir de cet extrait dune base de donnes relationnelle, raliser le travail
demand
Patient (Code, Nom, Prnom, date_naissance, Total_d, Total_pay)
Acte (rfrence, libell, Prix)
RalisationActe (numro, Rfrence, CodePatient, Date, Pay (O/N))
Paiement (numro, CodePatient, datePaiement, Montant)
Total_d est le total des prix des actes subi par un patient mais non pay
Total_pay est le total des prix des actes subi par un patient et pay
1.Un patient ne doit subir plus que 5 actes non pays, crire un trigger
permettant dimplmenter cette rgle.
2.Ecrire un trigger qui maintient jour les champs Total_d et Total_pay
chaque fois quon met jour la table Paiement (INSERT, UPDATE et
DELETE)
Exercice 3
p. 58
p. 59
Activit dapprentissage 26
Module
TDI-18
Prcision
Code Activit
F003
Activit
Dure
1 heure
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 60
DESCRIPTION DE LACTIVIT
Exercice 1
DCaT1
Vaccin(s)
ge (mois)
Vaccin DCaTPolio-Hib
Vaccin conjugu
contre le
pneumocoque
Vaccin DCaTPolio-Hib
Vaccin conjugu
contre le
pneumocoque
DCaT3
Vaccin DCaTPolio-Hib
Mnin1
Vaccin conjugu
contre le
mningocoque
12
RRO1
Vaccin RRO-Var
12
Pneum1
DCaT2
Pneum2
Crer une autre table NouveauxVaccins ayant la mme structure que la table
Vaccins
Code
ge (mois)
Vaccin(s)
Pneum3
12
Mnin1
15
DCaT4
18
Vaccin DCaT-Polio-Hib
RRO2
18
Vaccin RRO
On veut importer dans la table Vaccins la liste des vaccins partir de la table
Nouveaux Vaccins ,
Excuter la requte :
INSERT INTO VACCINS
SELECT * FROM [Nouveaux Vaccins]
p. 61
p. 62
Activit dapprentissage 27
Module
TDI-18
Prcision
Code Activit
F004
Activit
Dure
1 h 30
Phase dapprentissage
BASE
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 63
DESCRIPTION DE LACTIVIT
Certaines vues peuvent tre lobjet de mise jour par les instructions insert,
update, delete, mais pour cela il faut que Sql Server soit capable de dduire les
modifications faire sur les tables et ce nest pas toujours possible.
A partir de cet extrait dune base de donnes relationnelle, raliser le travail
demand
Fonctionnaire (matricule, nom, dateEmbauche, chelle)
Historique_Echelle (DateEffet, Nouvelle_Echelle, matricule)
Crer la base de donnes
1.Crer une vue renvoyant la liste de tous les fonctionnaires (matricule, nom,
dateEmbauche, chelle actuelle, DateEffet).
2.La vue ainsi cre ne peut tre mise jour directement. Utiliser des
TRIGGER INSTEAD pour coder la mise jour des tables sous-jacentes.
A laide dun trigger INSTEAD OF INSERT programmer les
modifications faire sur les tables de la base de donnes lorsquon insre
un nouveau fonctionnaire en utilisant lordre INSERT sur la vue :
le trigger doit insrer les donnes (matricule, nom, dateEmbauche,
chelle) dans la table Fonctionnaire et DateEffet , chelle
actuelle,matricule dans la table Historique_Echelle
A laide dun trigger INSTEAD OF UPDATE programmer les
modifications faire sur les tables de la base de donnes lorsquon
MODIFIE lchelle du fonctionnaire en utilisant lordre UPDATE sur la
vue :
le trigger doit insrer les donnes DateEffet , chelle actuelle,matricule
dans la table Historique_Echelle
A laide dun trigger INSTEAD OF DELETE programmer les
modifications faire sur les tables de la base de donnes lorsquon
SUPPRIME un fonctionnaire en utilisant lordre DELETE sur la vue :
le trigger doit supprimer les donnes de la table Fonctionnaire et celles de
la table Historique_Echelle
p. 64
Activit dapprentissage 28
Module
TDI-18
Prcision
Code Activit
G001
Activit
Dure
1h30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 65
DESCRIPTION DE LACTIVIT
1. Dmarrer SQL Server Management Studio.
2. Crer deux nouveaux pools de ressources en excutant le script suivant :
USE master
GO
CREATE RESOURCE POOL poolTDI2
WITH
(
MAX_CPU_PERCENT = 100,
MIN_CPU_PERCENT = 20
)
CREATE RESOURCE POOL poolTDI1
WITH
(
MAX_CPU_PERCENT = 20,
MIN_CPU_PERCENT = 0
)
mmoire.
ALTER RESOURCE GOVERNOR with (CLASSIFIER_FUNCTION =
dbo.fnTDIClassifier)
ALTER RESOURCE GOVERNOR RECONFIGURE
12. Excuter la requte suivante pour obtenir des informations sur l'tat et la
configuration actuels des pools de ressources, ainsi que sur leurs
statistiques.
SELECT * FROM sys.dm_resource_governor_resource_pools
p. 67
charges de travail.
Activit dapprentissage 29
Module
Prcision
Code Activit
Activit
TDI-18
Dure
30 mn
Paramtrage
d'une charge
viss par lactivit
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle)
AS tde travail
ORDER BY g.name
.
..
............
p. 68
DESCRIPTION DE LACTIVIT
1. Dmarrer SQL Server Management Studio.
Crer la base de donnes suivante Abonns :
p. 69
p. 70
Activit dapprentissage 30
Module
TDI-18
Prcision
Code Activit
H001
Activit
Dure
2 h 30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 71
DESCRIPTION DE LACTIVIT
Pour raliser ce Tp vous devez installer deux instances Sql Server sur votre
ordinateur. Par exemple linstance par dfaut et une instance nomme TDI.
A laide du Gestionnaire de configuration SQL Server, vrifier et dmarrer les
deux instances SQL Server
declare @i int=1
while (@i<100)
begin
INSERT INTO Produits
VALUES (@i, 'Produit ' + convert(nvarchar(2),@i), 100+@i)
set @i = @i+1;
end
10.
Dans l'instance nomme TDI (serveur miroir), dfinissez l'instance par
dfaut comme partenaire (ce qui en fait l'instance initiale du serveur principal).
ALTER DATABASE TestMiroring
SET PARTNER = 'TCP://NomHote:5022'
(NomHote est le nom de la machine hte)
11.
Dans l'instance par dfaut, dfinissez l'instance nomme TDI comme
partenaire (ce qui en fait l'instance initiale du serveur miroir).
ALTER DATABASE TestMiroring
SET PARTNER = 'TCP://NomHote:5023'
12.
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le dossier
Bases de donnes sous l'instance par dfaut, puis cliquez sur Actualiser.
Dveloppez le dossier Bases de donnes et vrifiez que l'tat de la base de
donnes TestMiroring est Principal, Synchronis.
p. 72
13.
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le dossier
Bases de donnes sous l'instance nomme, puis cliquez sur Actualiser.
Dveloppez le dossier Bases de donnes et vrifiez que l'tat de la base de
donnes TestMiroring est Miroir, Synchronis / Restauration.
Tester la mise en miroir.
14.
Dans le volet de requte connect l'instance SQL Server par dfaut
excuter les requtes suivantes :
USE TestMiroring
GO
SELECT * FROM Produits
GO
UPDATE Produits SET Prix = Prix * 1.1
GO
SELECT * FROM Produits
GO
15.
Basculer manuellement vers le serveur partenaire de mise en miroir de
bases de donnes, en excutant sous linstance par dfaut (serveur principal ) la
requte :
USE master;
ALTER DATABASE TestMiroring SET PARTNER FAILOVER;
16.
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur le dossier
Bases de donnes sous l'instance nomme TDI, puis cliquez sur Actualiser.
Dans le dossier Bases de donnes, vrifiez que l'tat de la base de donnes
TestMiroring est Serveur principal, Dconnect.
17.
Retournez dans le volet de requte connect l'instance nomme SQL
Server excuter les requtes :
USE TestMiroring
GO
SELECT * FROM Produits
GO
GO
UPDATE Produits SET Prix = Prix * 1.1
GO
SELECT * FROM Produits
GO
18.
Basculer manuellement vers linstance par dfaut, et consulter la table
Produits
p. 73
Activit dapprentissage 31
Module
TDI-18
Prcision
Code Activit
H002
Activit
Implmentation de la rplication.
Dure
2 h 30 mn
Phase dapprentissage
ENTRAINEMENT
Cette activit dapprentissage doit vous permettre
de :
.
..
............
p. 74
DESCRIPTION DE LACTIVIT
Pour raliser ce Tp vous devez installer deux instances Sql Server sur votre
ordinateur. Par exemple linstance par dfaut et une instance nomme TDI.
A laide du Gestionnaire de configuration SQL Server, vrifier et dmarrer les
deux instances SQL Server
13. Tapez le nom de votre compte Windows dans la zone de texte Compte de
processus et tapez votre mot de passe Windows dans les zones de texte Mot de
passe et Confirmer le mot de passe.
14. Laissez la case cocher En imitant le compte de processus active et cliquez
sur OK; puis sur Suivant.
15. Dans la page Actions de l'Assistant, activez la case cocher Crer la
publication, puis cliquez sur Suivant.
16. Dans la page Terminer l'Assistant, tapez BDCommercialProduits comme
Nom de la publication, puis cliquez sur Terminer.
Procdure
1. Dans une nouvelle fentre du SQL Server Management Studio; se connecter la 2me
instance nomme TDI.
2. Dans l'Explorateur d'objets, dveloppez Rplication, cliquez avec le bouton
droit sur Abonnements locaux, puis cliquez sur Nouveaux abonnements.
3. Dans la page Assistant Nouvel abonnement, cliquez sur Suivant.
4. Dans la page Publication, dans la liste Serveur de publication, cliquez sur
<Rechercher un serveur de publication SQL>. Dans la bote de dialogue Se
connecter au serveur, connectez-vous linstance par dfaut.
5. Dans la page Publication, cliquez sur la publication BDCommercialProduits,
puis cliquez sur Suivant.
6. Dans la page Emplacement de l'Agent de distribution, slectionnez Excuter
tous les agents sur le serveur de distribution, <Nom Serveur> (abonnements
par envoi de donnes (push)), puis cliquez sur Suivant.
7. Dans la page Abonns, dans la liste Base de donnes d'abonnement, cliquez
sur <Nouvelle base de donnes>.
8. Dans la bote de dialogue Nouvelle base de donnes, tapez BDCommercial2
dans la zone de texte Nom de la base de donnes, puis cliquez sur OK puis sur
Suivant.
9. Dans la page Scurit de l'Agent de distribution, cliquez sur le bouton de
slection ().
10. Dans la bote de dialogue Scurit de l'Agent de distribution, tapez le nom de
votre compte Windows dans la zone de texte Compte de processus et tapez
votre mot de passe Windows dans les zones de texte Mot de passe et
Confirmer le mot de passe, cliquez sur OK, puis sur Suivant.
11. Dans la page Planification de synchronisation, vrifiez que l'option Excuter
en continu est slectionne dans la liste droulante Planification de
l'agent,puis cliquez sur Suivant.
12. Dans la page Initialiser les abonnements, vrifiez que la zone de liste quel
moment a pour valeur Immdiatement, puis cliquez sur Suivant.
13. Dans la page Actions de l'Assistant, cochez loption Crer le ou les
abonnements, puis cliquez sur Suivant.
14. Dans la page Terminer l'Assistant, cliquez sur Terminer.
Vrifier que les donnes sont rpliques correctement
puis vrifiez que les produits dont le prix >= 120 ont t rpliques.
1. Sous linstance par dfaut, excuter la requte :
UPDATE [BDCommercial2].[dbo].[Produits] SET Prix += 10
2.
Attendez 10 secondes pour que la rplication soit ralise. Puis r excuter sous
linstance nomme TDI, la requte
SELECT * FROM [BDCommercial2].[dbo].[Produits]
p. 76