You are on page 1of 21

Notions gnrales

Linstallation du serveur SQL ralise, il convient de dfinir des espaces logiques de stockage afin de regrouper sous un mme nom lensemble des donnes correspondant un mme projet. Cet ensemble est la base de donnes, elle va nous permettre de travailler logiquement avec des objets tels que les tables sans jamais avoir se soucier du stockage physique. SQL Server permet de raliser des associations entre les fichiers physiques et les bases de donnes. Dans ce chapitre, la cration et la gestion des fichiers physiques seront abordes en mme temps que les bases de donnes.

1. Liens entre base de donnes et organisation physique


Lors de la cration dune base de donnes, il est ncessaire de prciser au moins deux fichiers. Le premier servira stocker les donnes, le deuxime sera utilis par le journal afin de stocker les images avant et aprs modification des donnes. Ces deux fichiers sont obligatoires et sont propres chaque base. Dans SQL Server, il nest pas possible de partager un fichier de donnes ou le journal entre plusieurs bases.

Sparation entre les schmas logique et physique

2. La notion de transaction
a. Quest-ce quune transaction ?
Une transaction est un ensemble indivisible dordres Transact SQL. Soit la totalit peut sexcuter, soit aucun ordre ne peut sexcuter. Le moteur SQL doit tre capable, tant que la transaction nest pas termine, de remettre les donnes dans ltat initial. Si la transaction nest pas termine, aucun autre utilisateur ne peut intervenir sur les donnes, tant en lecture quen criture. Il est dangereux de sappuyer sur des donnes, dont on ignore si les modifications en cours vont persister dans le temps ou non. Afin de garantir la cohrence des donnes, toutes les lignes qui sont modifies lintrieur dune transaction sont verrouilles pour quaucun autre utilisateur ne puisse intervenir sur ces lignes. Le verrouillage est effectu automatiquement, et les verrous sont relchs lorsque lutilisateur indique la fin de la transaction, soit en succs, soit en chec. Le verrouillage des donnes est gr de faon optimale par SQL Server de faon minimiser le nombre de lignes de donnes verrouilles (verrouillage au niveau de la ligne possible) ainsi que le nombre de verrous poss (verrous de ligne, de blocs ou de table). Lorsquune donne est verrouille et quune transaction autre que celle qui a pos le verrou la rclame, elle doit attendre la libration du verrou pour accder linformation. Les files dattente pour laccs aux donnes sont gres par des listes FIFO (Premier Entr Premier Sorti). Exemple de transaction : un exemple connu mais reprsentatif de la notion de transaction est celui du retrait dargent auprs dun distributeur automatique. La transaction est alors constitue de deux oprations : le dbit du compte et la distribution dargent. Sil nest pas possible de raliser lune des deux oprations, cest lensemble des oprations qui devra tre annul. Il parat draisonnable de dbiter le compte si la somme correspondante na pas
ENI Editions - All rigths reserved - Kaiss Tag - 1-

47

t distribue lutilisateur.

b. Les ordres Transact SQL


Ils sont au nombre de quatre, BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN, SAVE TRAN qui indiquent respectivement le dbut de la transaction, la fin avec succs, la fin avec chec et la dfinition des points darrt. BEGIN TRAN[SACTION] Cette instruction permet de dmarrer de faon explicite une transaction. En labsence de cette commande, toute instruction SQL est une transaction implicite qui est valide (COMMIT) aussitt la modification effectue sur les donnes. On parle alors de mode autocommit. Lors du dbut de la transaction, il est possible de nommer la transaction, mais aussi de marquer le dbut de la transaction dans le journal de la base de donnes. Cette marque pourra tre exploite lors dun processus de restauration des donnes pour restaurer la transaction. BEGIN { TRAN | TRANSACTION } [nomTransaction] [ WITH MARK [ description ] ] [;] Exemple Dans lexemple suivant, une nouvelle transaction est dmarre.

SAVE TRAN Cette instruction permet de dfinir des points darrt et donc donne la possibilit dannuler une partie de la transaction en cours. Il est possible de dfinir plusieurs points darrt sur une mme transaction. De faon permettre lannulation jusqu un point darrt prcis, ils sont gnralement identifis par un nom. SAVE { TRAN | TRANSACTION } {nomPointArret}[;] Exemple Dans lexemple suivant, le point darrt P1 est dfini, aprs lajout dun nouveau client.

- 2-

ENI Editions - All rigths reserved - Kaiss Tag

48

ROLLBACK TRAN[SACTION] Linstruction ROLLBACK permet dannuler une partie ou la totalit de la transaction, cest--dire des modifications intervenues sur les donnes. Lannulation partielle dune transaction nest possible que si des points darrt ont t dfinis laide de linstruction SAVE TRAN. Il nest pas possible darrter lannulation entre deux points darrt. ROLLBACK { TRAN | TRANSACTION } [nomTransaction|nomPointArret][;] Exemple Dans lexemple ci-dessous, les clients sans commande sont supprims, puis une requte compte le nombre de clients dfinis dans la base. Enfin, la suppression est annule par lintermdiaire de linstruction ROLLBACK qui annule toutes les modifications effectues sur les donnes depuis la dfinition du point darrt P1.

ENI Editions - All rigths reserved - Kaiss Tag

- 3-

49

COMMIT Cette instruction permet de mettre fin avec succs une transaction, cest--dire de conserver lensemble des modifications effectues dans la transaction. Cest simplement lissue de la transaction que les modifications sont visibles par les autres utilisateurs de la base de donnes. COMMIT { TRAN | TRANSACTION } [nomTransaction] [;] Exemple Les modifications sont valides et la transaction prend fin.

Pour SQL Server, si la transaction nest pas commence explicitement par la commande BEGIN TRAN, alors toute instruction SQL constitue une transaction qui est valide automatiquement. Si au cours dune transaction explicite, le client lorigine de la transaction rompt brutalement sa connexion avec le serveur, alors la transaction est annule (ROLLBACK) automatiquement.

- 4-

ENI Editions - All rigths reserved - Kaiss Tag

50

3. Les fichiers journaux


a. Le rle
Les fichiers journaux permettent de stocker les images avant et aprs modification des donnes contenues dans la base. Seules les oprations du DML (Langage de Manipulation de Donnes), soit les ordres SQL INSERT, UPDATE et DELETE, provoquent une journalisation des oprations quelles effectuent sur les donnes de la base. Les oprations de grande envergure, comme la cration dun index, sont mentionnes dans le journal. Le journal sera utilis principalement lors des oprations de restauration automatique suite un arrt brutal du serveur, ou bien lors des oprations de sauvegardes lorsque ces dernires sappuient sur le journal. Il sera galement utilis lorsque la base participe la rplication. Le but du journal est de permettre au serveur de toujours garantir la cohrence des donnes, cest--dire que toutes les transactions valides (COMMIT) persistent mme sil arrive un gros problme causant larrt brutal du serveur. Lors de chaque redmarrage du serveur, SQL Server vrifie que la dernire instruction du journal est un point de synchronisation Si tel nest pas le cas, toutes les transactions valides (COMMIT) sont rejoues tandis que toutes les transactions non valides sont annules (ROLLBACK).

b. Le fonctionnement

Fonctionnement du journal Lorsquun ordre SQL est transmis au serveur SQL, ce dernier va chercher lexcuter le plus rapidement possible. Aprs analyse de lordre et mise en place du plan dexcution, si les donnes concernes par lordre ne sont pas dj prsentes en mmoire, alors le moteur SQL va lire les fichiers sur le disque dur afin dy trouver les informations ncessaires. Une fois prsentes en mmoire, les modifications peuvent tre apportes aux donnes. La modification est toujours enregistre dans le journal avant dtre rellement effectue sur les donnes de la base. Un tel journal est appel journal criture anticipe. Dune faon logique toutes les informations sont enregistres les unes la suite des autres dans le journal. Chaque information est parfaitement identifie par son LSN (Log Sequence Number) ou numro squentiel denregistrement dans le journal. Chaque enregistrement dans le journal contient galement lidentifiant de la transaction lorigine de la modification des donnes. Tous les enregistrements dune mme transaction ne sont donc pas enregistrs de faon contigu.

ENI Editions - All rigths reserved - Kaiss Tag

- 5-

51

Les fichiers journaux sont situs, par dfaut, dans le rpertoire C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Data, et portent lextension *.ldf. Il sagit dune extension recommande qui nest nullement obligatoire. Le journal peut tre constitu dun ou plusieurs fichiers, la taille de ces derniers pouvant tre fixe ou variable automatiquement ou de faon manuelle. La gestion des fichiers sera aborde dans ce chapitre dans la section Crer, grer et supprimer une base de donnes. Le journal des transactions peut tre constitu de plusieurs fichiers physiques. La gestion du journal est faite de faon indpendante de celle des donnes. SQL Server gre un cache dcriture spcifique au journal. En fonction de lutilisation faite des informations prsentes dans le journal, il est possible de tronquer rgulirement le journal de faon toujours utiliser les mmes fichiers physiques, tout en contrlant lespace disque occup.

c. Les points de synchronisation


Rgulirement, SQL Server va dclencher un point de synchronisation. Il consiste faire redescendre sur fichier toutes les donnes stockes en mmoire qui correspondent des donnes valides. Les points de synchronisation sont galement appels CHECKPOINT. Le nombre de donnes touches entre deux points de synchronisation va dterminer le temps de restauration automatique suite un arrt brutal du serveur.

- 6-

ENI Editions - All rigths reserved - Kaiss Tag

52

Principe de fonctionnement dun point de synchronisation SQL Server optimise les points de synchronisation de faon garantir la meilleure gestion des donnes sans dtriorer les temps de rponse du serveur. Il est toutefois possible dintervenir sur cette optimisation par lintermdiaire de linstruction CHECKPOINT. CHECKPOINT [tempsRealisation] tempsRealisation Permet de prciser le temps accord en secondes pour terminer le point de synchronisation. Cest SQL Server qui se charge de dclencher le point de synchronisation de faon avoir termin dans les temps.

ENI Editions - All rigths reserved - Kaiss Tag

- 7-

53

Seul un arrt de linstance par lintermdiaire de linstruction Transact SQL SHUTDOWNWITH NOWAIT permet darrter linstance sans dclenchement dun point de synchronisation.

4. Les fichiers de donnes


a. Leur rle
Chaque base de donnes possde au moins un fichier de donnes. Ce fichier va contenir lensemble des donnes stockes dans la base. Chaque fichier de donnes ne peut contenir que des donnes en provenance dune seule base, il y a donc spcialisation des fichiers par rapport la base de donnes.

b. La structure des fichiers de donnes


Les fichiers de donnes sont structurs pour rpondre de manire optimum toutes les sollicitations de la part du moteur et surtout pour tre capables de stocker plus de donnes en optimisant lespace disque utilis. Pour optimiser lespace dont il dispose, le serveur va formater les fichiers de donnes de faon matriser leur structure. Le travail ralis par SQL Server sur ces fichiers de donnes est semblable au travail fait par le systme dexploitation sur les disques disponibles sur la machine. Il est tout fait admis que le systme dexploitation formate lespace disque dont il dispose afin de le diviser en blocs. Par la suite ce sont ces blocs qui vont tre accords aux fichiers. SQL Server ralise le mme type de travail sur les fichiers de donnes, puis accorde lespace disponible aux diffrentes tables et index. Les pages Avant de pouvoir travailler avec un fichier de donnes, SQL Server va structurer le fichier en le dcoupant en bloc ou page de 8 Ko. La taille de 8 Ko est fixe par SQL Server, de faon rduire les pertes despace tout en simplifiant les oprations dallocation, mais aussi de lecture et dcriture. La page reprsente lunit de travail de SQL Server. Cest toujours une page entire de donnes qui est remonte en mmoire et cest toujours une page qui est crite sur le disque. Il nest pas possible de remonter en mmoire cache, une partie dune page. Bien entendu, une page peut contenir plusieurs lignes dune table ou bien plusieurs entres dindex et toutes les informations sont remontes en une seule lecture disque. Cette taille de 8 Ko permet galement de grer des bases de donnes de plus grande taille avec un nombre de blocs moindre. Enfin, pour viter la fragmentation des lignes de donnes sur plusieurs blocs, une ligne doit toujours tre entirement contenue (hors type text et image) dans un bloc. La taille maximale dune ligne est donc de 8060 octets. Cette valeur de 8060 octets est lgrement infrieure 8 Ko car SQL Server rserve quelques octets pour grer lentte de la page afin den matriser la gestion. Si plusieurs lignes sont stockes dans la mme page, elles le sont de faon squentielle. En cas de changement de taille des lignes, SQL Server gre dynamiquement le dplacement des lignes dans la page ou bien la mise en place dun pointeur vers une autre page afin de lire la fin de la ligne de donnes. tant donn que la page est lunit de travail de SQL Server, chaque page contient un type bien prcis de donnes. Il est possible de distinguer les types de page suivants : donnes : ces pages contiennent des informations au format numrique, texte ou bien date. Texte/image : ces pages contiennent soit des textes volumineux, soit des objets au format binaire. Index : ces pages contiennent les entres des index. GAM/SGAM : ou Global Allocation Map et Shared Global Allocation Map. Ces pages contiennent des informations relatives lallocation des extensions. PFS : ou Page Free Space. Ces pages contiennent les informations relatives lallocation des pages et lespace disponible sur ces pages. IAM : ou Index Allocation Map. Ces pages contiennent les informations relatives lutilisation de pages par les tables et les index.

- 8-

ENI Editions - All rigths reserved - Kaiss Tag

54

BCM : ou Bulk Change Map. Ces pages contiennent la liste des extensions modifies par des oprations de copie en bloc depuis la dernire sauvegarde du journal. DCM : ou Diffrentiel Change Map. Ces pages contiennent la liste de toutes les extensions modifies depuis la dernire sauvegarde de la base.

Le dcoupage en bloc des fichiers de donnes

Les extensions Les extensions sont des regroupements logiques de 8 blocs contigus, elles ont donc une taille de 64 Ko (8 x 8 Ko). Le rle des extensions est dviter une trop grande dispersion des donnes pour un mme objet au sein des fichiers de donnes. Il existe deux types dextension : les extensions mixtes et les extensions propres ou uniformes. Ces deux types dextension permettent de limiter au mieux la consommation despace disque par une table en fonction du volume de donnes stocker.
Les extensions mixtes

Au dpart, les extensions sont communes plusieurs tables ou plusieurs index. Lorsquun des objets dfinis sur lextension demande la place, SQL Server octroie de la place bloc par bloc tant que lobjet nutilise pas 8 blocs. Ds quun objet franchit cette barrire, SQL Server lui octroie de la place extension par extension. Lavantage de cette mthode est dviter de perdre de la place inutilement avec les tables ou index contenant peu de donnes.
Les extensions uniformes

Si un objet occupe plus de 64 Ko dinformation, alors la place lui sera accorde extension par extension. Chacune des extensions tant spcialise pour un objet, les lectures disque seront dautant plus rapides car toutes les donnes sont stockes de faon contigu par paquets de 64 Ko.

ENI Editions - All rigths reserved - Kaiss Tag

- 9-

55

Lallocation des extensions

c. Le fonctionnement
Chaque base possde au moins un fichier de donnes, ce fichier est spcifique une base. Son chemin par dfaut est C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Data. Le premier fichier de donnes dune base porte lextension mdf, tous les suivants portent lextension ndf. Ces extensions sont recommandes mais ne sont pas obligatoires.

- 10 -

ENI Editions - All rigths reserved - Kaiss Tag

56

Crer, grer et supprimer une base de donnes


Une base de donnes gre un ensemble de tables systme et des tables utilisateurs. Les informations contenues dans ces tables systme reprsentent, entre autres, la dfinition des vues, des index, des procdures, des fonctions, des utilisateurs et des privilges. Les tables utilisateurs vont contenir les informations saisies par les utilisateurs. Une instance SQL Server ne peut pas contenir plus de 32767 bases de donnes.

1. Crer une base de donnes


La cration dune base de donnes est une tape ponctuelle, ralise par un administrateur SQL Server. Avant de tenter de crer une base de donnes, il est important de dfinir un certain nombre dlments de faon prcise : le nom de la base de donnes qui doit tre unique sur le serveur SQL, la taille de la base de donnes, les fichiers utiliss pour le stockage des donnes. Pour crer une nouvelle base de donnes, SQL Server sappuie sur la base Model. Cette base Model contient tous les lments qui vont tre dfinis dans les bases utilisateurs. Par dfaut, cette base Model contient les tables systme. Il est cependant tout fait possible dajouter des lments dans cette base. Toutes les bases utilisateurs cres par la suite disposeront de ces lments supplmentaires. Une base peut tre cre de deux faons diffrentes : par lintermdiaire de linstruction Transact SQL CREATE DATABASE ; par lintermdiaire de SQL Server Management Studio. Une base de donnes est toujours compose au minimum dun fichier de donnes principal (extension mdf) et dun fichier journal (extension ldf). Des fichiers de donnes secondaires (ndf) peuvent tre dfinis lors de la cration de la base ou bien ultrieurement. Cette opration de cration de base de donnes affecte la base Master. Une sauvegarde de cette base systme savre donc ncessaire pour tre en mesure de travailler avec la nouvelle base suite une restauration. Les informations concernant les fichiers de donnes sont enregistres dans la base Master ainsi que dans le fichier primaire de la base de donnes.

a. La syntaxe Transact SQL


CREATE DATABASE nomBaseDeDonnes [ ON [PRIMARY] [ <spcificationFichier> [,n]] [LOG ON < spcificationFichier > [,n]] ] [ COLLATE classement ] [;] Avec pour spcificationFichier les lments de syntaxe suivants : (NAME = nomLogique, FILENAME = cheminEtNomFichier [,SIZE = taille [KB|MB|GB|TB]] [,MAXSIZE={tailleMaximum[KB|MB|GB|TB]|UNLIMITED}] [,FILEGROWTH = pasIncrement [KB|MB|GB|TB|%]] ) [,n] PRIMARY

ENI Editions - All rigths reserved - Kaiss Tag

- 1-

57

Permet de prciser le premier groupe de fichiers de la base. Ce groupe est obligatoire, car lensemble des tables systme est obligatoirement cr dans le groupe primary. Si le mot cl PRIMARY est omis, le premier fichier de donnes prcis dans la commande CREATE DATABASE correspond obligatoirement au fichier primaire, il porte normalement lextension mdf. NAME Cet attribut, obligatoire, permet de prciser le nom logique du fichier. Ce nom sera utilis pour faire des manipulations sur le fichier via des commandes Transact SQL ; on pense notamment aux commandes DBCC ou la gestion de la taille des fichiers. FILENAME Spcification du nom et emplacement physique du fichier sur le disque dur. Le fichier de donnes est toujours cr sur un disque local du serveur. SIZE Attribut optionnel qui permet de prciser la taille du fichier de donnes. La taille par dfaut est de 1 Mo et la taille minimale dun fichier est 512 Ko aussi bien pour le journal que pour les fichiers de donnes. La taille peut tre prcise en kilo-octets (Kb) ou en mgaoctets (Mb, par dfaut). La taille du premier fichier de donnes doit tre au moins gale celle de la base Model. MAXSIZE Cet attribut optionnel, permet de prciser la taille maximale en Mgaoctets (par dfaut) ou en kilo-octets que peut prendre le fichier. Si rien nest prcis, le fichier grossira jusqu saturation du disque dur. FILEGROWTH Il sagit de prciser le facteur dextension du fichier. La taille de chacune des extensions peut correspondre un pourcentage (%), une taille en Mgaoctets (par dfaut) ou en Kilo octets. Si on prcise la valeur zro, le facteur dextension automatique du fichier est nul et donc la taille du fichier ne change pas automatiquement. Si le critre FILEGROWTH est omis, la valeur par dfaut est de 1 Mo pour les fichiers de donnes et de 10 % pour les fichier journaux. La taille des extensions est toujours arrondie au multiple de 64 Ko (8 blocs) le plus proche.

Toutes les options de linstruction CREATE DATABASE ne sont pas exposes ici. Seules les options les plus couramment utilises lors de la cration dune nouvelle base le sont.

- 2-

ENI Editions - All rigths reserved - Kaiss Tag

58

b. Utilisation de SQL Server Management Studio


Il est galement possible de crer une base de donnes de faon graphique depuis SQL Server Management Studio. Il faut alors slectionner Nouvelle base de donnes depuis le menu contextuel associ au n ud Bases de donnes depuis lexplorateur dobjets, comme illustr ci-dessous.

SQL Server Management Studio prsente alors la bote de dialogue des proprits de la base en mode cration. Aprs avoir complt les options comme le nom de la base et le nom et lemplacement des fichiers, il est possible de demander la cration de la base.

ENI Editions - All rigths reserved - Kaiss Tag

- 3-

59

Cette bote de dialogue permet un utilisateur averti de crer rapidement et simplement une base de donnes, tout en conservant la matrise de tous les paramtres. Il est possible de crer des fichiers sur des partitions brutes. Cependant, cette technique noffre quun faible gain de performance par rapport la cration de fichiers sur des partitions formates NTFS. De plus, les fichiers crs sur des partitions brutes ne peuvent pas tre manipuls par le systme de fichiers (notamment dans le cadre des sauvegardes base arrte) et il ne peut y avoir, bien sr, quun seul fichier par partition. Les fichiers de base de donnes ne doivent pas tre crs sur des partitions compresses. Dans certains cas extrmes, il est possible de placer les fichiers secondaires sur des partitions compresses. Les fichiers doivent alors tre en lecture seule. Par contre, les fichiers journaux ne doivent en aucun cas tre dfinis sur une partition compresse.

2. Grer une base de donnes


Lors de la gestion dune base de donnes, plusieurs critres sont prendre en compte. Dans cette section, la gestion de lespace utilis par les fichiers physiques qui constituent la base de donnes est aborde. Les points principaux qui concernent la gestion des fichiers sont : laccroissement dynamique ou manuel des fichiers, lajout de nouveaux fichiers, la rduction de la taille des fichiers.

a. Augmenter lespace disque disponible pour une base de donnes


Les fichiers de donnes et les fichiers journaux stockent de linformation. Comme la base contient normalement de plus en plus dinformations, un moment donn ces fichiers seront complets. Il se posera alors le problme de savoir o prendre la place. Les diffrentes mthodes exposes ci-dessous pour augmenter lespace de stockage dont dispose la base sont complmentaires car chaque mthode possde ses avantages et ses inconvnients. Fichier accroissement dynamique Lors de la cration de la base, il est possible de fixer un certain nombre de critres concernant la taille maximale de
- 4 ENI Editions - All rigths reserved - Kaiss Tag

60

fichiers (MAXSIZE) et le taux daccroissement (FILEGROWTH). Si ces options sont omises la taille maximale est infinie et le taux daccroissement est de 10 % pour les journaux et 1 Mo pour les fichiers de donnes. En utilisant des fichiers croissance dynamique, le serveur ne sera jamais bloqu par la taille du fichier sauf saturation du disque ou taille maximale atteinte. Le facteur daccroissement permet de fixer la taille de tous les ajouts. Cette taille doit tre fixe de faon optimale, en prenant en compte le fait quun facteur daccroissement trop petit introduit beaucoup de fragmentations physiques du fichier et les demandes dextension du fichier sont frquentes, tandis quun facteur daccroissement trop grand ncessite une charge de travail importante de la part du serveur lorsque celui-ci met en place la structure de blocs de 8 Ko lintrieur du fichier. Si le taux daccroissement est fix zro, le fichier ne pourra pas grandir dynamiquement.

Laccroissement du fichier possde toujours une taille qui est multiple de 64 Ko (taille dune extension). Si le paramtrage des fichiers permet de grer automatiquement la croissance des fichiers, cette solution prsente tout de mme le dsavantage du fait quil nest pas possible de matriser quand cet accroissement aura lieu. Si cette opration intervient en pleine charge de travail, elle risque de ralentir le serveur. Par contre, si le paramtrage de laccroissement automatique des fichiers est ralis, cela permet en cas de problme, que les fichiers adaptent leur taille en fonction du volume de donnes, sans bloquer les utilisateurs. Fichier accroissement manuel La croissance manuelle des fichiers permet de matriser le moment o le fichier va grossir et donc le moment o le serveur va subir une charge de travail supplmentaire pour mettre en forme le fichier sil sagit dun fichier de donnes. Ajout de fichiers Pour permettre une base de donnes dobtenir plus de place, il est enfin possible de rajouter des fichiers. Cette solution prsente le double avantage de matriser linstant o le serveur va subir une surcharge de travail, ainsi que de ne pas fragmenter physiquement les fichiers surtout si ces derniers sont stocks sur une partition NTFS. Cependant cette solution ncessite que ladministrateur observe de prs lutilisation des fichiers journaux et de donnes afin de toujours intervenir avant que le systme ne se bloque pour un manque despace disque. Le journal des transactions Le journal des transactions est compos de un plusieurs journaux. Afin que le serveur fonctionne correctement, il est indispensable que le journal ne soit jamais satur. Le journal est vid lors des sauvegardes et ventuellement chaque point de synchronisation si la base est configure en mode de restauration simple. Pour assurer une place suffisante au journal, la solution la plus facile consiste positionner le ou les fichiers qui le composent avec une croissance automatique. Modifier un fichier en Transact SQL Cest linstruction ALTER DATABASE qui permet deffectuer toutes les oprations relatives aux manipulations des fichiers de base de donnes, aussi bien pour les fichiers de donnes que les fichiers du journal de transaction. Toutes les caractristiques des fichiers peuvent tre modifies, mais les modifications apportes doivent suivre certaines rgles comme, par exemple, la nouvelle taille du fichier qui doit tre suprieure la taille initiale. ALTER DATABASE nomBaseDeDonnes MODIFY FILE (spcificationFichier)[;] Avec pour spcificationFichier les lments de syntaxe suivants : (NAME = nomLogique, NEWNAME = nouveauNomlogique, FILENAME = cheminEtNomFichier [,SIZE = taille [KB|MB|GB|TB]] [,MAXSIZE={tailleMaximum[KB|MB|GB|TB]|UNLIMITED}] [,FILEGROWTH = pasIncrement [KB|MB|GB|TB|%]] )

ENI Editions - All rigths reserved - Kaiss Tag

- 5-

61

Ajouter un fichier en Transact SQL Cest la commande ALTER DATABASE associe loption ADD FILE qui va permettre de rajouter un fichier de donnes ou un fichier journal. Syntaxe : ALTER DATABASE nomBaseDeDonnes ADD FILE spcificationFichier[;]

Modifier et ajouter des fichiers depuis SQL Server Management Studio

- 6-

ENI Editions - All rigths reserved - Kaiss Tag

62

Cest par lintermdiaire de la bote de dialogue qui indique les proprits de la base de donnes, quil est possible de grer les oprations sur la taille initiale des fichiers ainsi que leur taille maximale.

Les fichiers du journal

ENI Editions - All rigths reserved - Kaiss Tag

- 7-

63

Comme pour les fichiers de donnes, il est possible de redimensionner le fichier journal ainsi que dajouter un fichier au journal des transactions. Si la modification peut seffectuer comme pour les fichiers de donnes par lintermdiaire de la commande ALTER DATABASE nomBaseDonnes MODIFY FILE, lajout quant lui ncessite lutilisation de loption ADD LOG FILE. Bien entendu comme pour les fichiers de donnes, toutes ces oprations peuvent tre effectues depuis SQL Server Management Studio.

b. Librer de lespace disque utilis par des fichiers de donnes vides.


Lorsque les tables sont vides de leurs donnes laide des commandes DELETE ou TRUNCATE TABLE, les extensions occupes par les tables et index sont alors libres. Par contre, la taille des fichiers nest pas rduite. Pour raliser une telle opration il est important de sassurer que la totalit de lespace libre est regroupe en fin de fichier. Une fois cette opration ralise, il est possible de tronquer le fichier sans jamais redescendre en dessous de la taille initiale. La mise en place de la rduction des fichiers se fait au moyen de deux commandes DBCC.
SHRINKDATABASE

Cette instruction permet de compacter lensemble des fichiers constituant la base de donnes (journaux et donnes). Pour les fichiers de donnes toutes les extensions utilises sont stockes de faon contigu en haut du fichier. Pour les fichiers journaux, cette opration de compactage intervient en diffr et SQL Server essaie de rendre aux fichiers journaux une taille aussi proche possible que celle de la taille cible lorsque les journaux sont tronqus. Syntaxe : DBCC SHRINKDATABASE {nom_base_donnes|id_base_donnes|0} [,pourcentage_cible] [,{NOTRUNCATE|TRUNCATEONLY}]) nom_base_donnes Nom de la base de donnes sur laquelle va porter lexcution de la commande id_base_donnes Identifiant de la base de donnes. Cet identifiant peut tre connu en excutant la fonction db_id() ou bien en interrogeant la vue sys.databases depuis la base master.

- 8-

ENI Editions - All rigths reserved - Kaiss Tag

64

0 Permet de prciser que lexcution portera sur la base courante. pourcentage_cible Permet de prciser en pourcentage lespace libre souhait dans le fichier aprs compactage. NOTRUNCATE Permet de ne pas rendre au systme dexploitation lespace libre obtenu aprs compactage. Par dfaut, lespace ainsi obtenu est libr. TRUNCATEONLY Permet de librer lespace inutilis dans les fichiers de donnes et compacte le fichier la dernire extension alloue. Aucune rorganisation physique des donnes nest envisage : dplacement des lignes de donnes afin de complter au mieux les extensions utilises par lobjet. Dans un tel cas, le paramtre pourcentage_cible est ignor.

SHRINKFILE

Cette instruction, semblable DBCC SHRINKDATABASE permet de raliser les oprations de compactage et rduction de fichier de donnes par fichier. Syntaxe : DBCC SHRINKFILE ([nom_fichier|id_fichier] {[[,taille_cible] [,{NOTRUNCATE|TRUNCATEONLY}]]|EMPTYFILE} taille_cible Permet de prciser la taille finale souhaite exprime en mgaoctets sous forme de nombre entier. Si aucune taille nest spcifie, la taille du fichier est rduite son maximum. EMPTYFILE Cette commande permet de raliser la migration de toutes les donnes contenues dans le fichier vers les autres fichiers du mme groupe. De plus, SQL Server nutilise plus ce fichier. Il est alors possible de le supprimer de la base de donnes laide dune commande ALTER DATABASE. NOTRUNCATE Permet de ne pas rendre au systme dexploitation lespace libre obtenu aprs compactage. Par dfaut, lespace ainsi obtenu est libr. TRUNCATEONLY Permet de librer lespace inutilis dans les fichiers de donnes et compacte le fichier la dernire extension alloue. Aucune rorganisation physique des donnes nest envisage : dplacement des lignes de donnes afin de complter au mieux les extensions utilises par lobjet. Dans un tel cas le paramtre taille_cible est ignor. Exemple :

ENI Editions - All rigths reserved - Kaiss Tag

- 9-

65

La taille finale doit tre suprieure la taille de la base Model plus la taille des donnes. Avant de raliser une opration de compactage, il est prudent de raliser une sauvegarde complte de la base de donnes compacter ainsi que de la base Master. Les instructions DBCC SHRINKDATABASE et DBCC SHRINKFILE sexcutent en mode diffr, il est donc possible que la taille des fichiers ne diminue pas de faon instantane. Seule linstruction DBCC SHRINKFILE permet de rduire la taille dun fichier une taille infrieure celle prcise lors de la cration du fichier. videmment, il nest pas possible de descendre en dessous de la taille occupe par les donnes.

c. Configuration de la base de donnes


Il est possible de paramtrer de nombreuses options au niveau de la base de donnes. Ce paramtrage est possible soit avec linstruction ALTER DATABASE en Transact SQL, soit depuis la fentre des proprits de la base dans SQL Server Management Studio. Tous les paramtres lists ci-dessous sont fixer pour chaque base de donnes. Il nest donc pas possible de fixer des options sur plusieurs bases de donnes en une seule commande, tandis quil est possible de prciser plusieurs options dune base en une commande. Si certains choix doivent tre adopts par toutes les bases utilisateur, il est prfrable de changer les options de la base Model, ainsi toute nouvelle base utilisateur, fonctionnera avec les paramtres dfinis dans Model. ALTER DATABASE nomBaseDeDonnees SET option [;] Parmi toutes les options disponibles, il est possible den isoler quelques-unes : Option AUTO_SHRINK {ON|OFF} Descriptif Si cette option est active les fichiers sont rduits ds quils disposent de plus de 25 % despace libre. Permet de positionner la base de donnes en mode lecture seule. La base de donnes est positionne en mode lecture/criture. Seul un utilisateur peut travailler sur la base de donnes.

READ_ONLY READ_WRITE SINGLE_USER

- 10 -

ENI Editions - All rigths reserved - Kaiss Tag

66

RESTRICTED_USER

Seuls les utilisateurs membres des rles db_owner, db creator et sysadmin peuvent se connecter la base de donnes. Cest le mode de fonctionnement standard dune base, en autorisant plusieurs utilisateurs travailler simultanment. Lorsque cette option est positionne ON les statistiques manquantes lors de loptimisation de la requte, sont calcules de faon automatique. Lorsque cette option est positionne ON, les statistiques obsoltes sont calcules de faon automatique.

MULTI_USER

AUTO_CREATE_STATISTICS { ON | OFF } AUTO_UPDATE_STATISTICS { ON | OFF}

Les options AUTO_CREATE_STATISTICS et AUTO_UPDATE_STATISTICS ne concernent pas les tables systme ou bien usage interne SQL Server comme par exemple les index XML, les index de texte intgral, les files dattentes Service Broker. Pour toutes ces tables, les statistiques sont cres et mises jour quelle que soit la valeur des options AUTO_CREATE_STATISTICS et AUTO_UPDATE_STATISTICS.

La fonction DATABASEPROPERTYEX permet de connatre la valeur actuelle de loption qui lui est passe en paramtre. Pour rgler les paramtres de la base il est possible de passer par : SQL Server Management Studio Pour connatre et ventuellement modifier les paramtres dune base de donnes, il faut afficher la fentre prsentant les proprits de la base. Cette fentre est affiche en slectionnant Proprits depuis le menu contextuel associ la base de donnes.

ENI Editions - All rigths reserved - Kaiss Tag

- 11 -

67

You might also like