You are on page 1of 412

Ce livre sur SQL Server 2008 sadresse toute personne dsireuse dadministrer une base de donnes (administrateur de base

e de donnes,
dveloppeur...).
Il prsente les diffrents lments ncessaires cette administration ainsi que lensemble des manipulations raliser par ladministrateur,
depuis linstallation jusquaux oprations de sauvegarde et de restauration, en passant par la gestion de lespace disque, la gestion des
utilisateurs, la gestion de la rplication.
Les diffrents outils permettant une optimisation du serveur sont prsents ainsi que ceux permettant la mise en place dune solution de haute
disponibilit.
Les nouveaux concepts lis la version de SQL Server 2008 sont galement traits, tels ladministration par les rgles, lintgration avec le
Power Shell, la compression et le cryptage des donnes.
Les diffrentes oprations sont ralises depuis SQL Server Management Studio et en Transact SQL.
Des lments sont en tlchargement sur cette page.
Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars
1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines
une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale,
ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par
quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI
SQLServer2008
Administration

JrmeGABILLAUD
Rsum
L'auteur
Ingnieur en Informatique pour l'Industrie, consultant, Jrme Gabillaud est galement responsable pdagogique dans un grand centre de
formation informatique. Spcialiste des systmes d'accs aux donnes Microsoft ou Oracle, il est dj auteur de nombreux ouvrages sur ce
sujet, reconnus pour leurs qualits techniques et pdagogiques.
- 1 - ENI Editions - All rigths reserved
Introduction
La version 2008 de SQL Server apporte de nombreuses nouveauts que ce soit pour ladministrateur de bases de
donnesoubienpourledveloppeurdapplications.Lagestiondesdonnesdanslecadredelanalysedcisionnelle
(BusinessIntelligence)nestpasabordedanscetouvragemaisSQLServer2008proposegalementsurcedomaine
denombreusesamliorations.
SQLServerestdisponiblepourlesplatesformesWindowsServerenversion32et64bits,monooumultiprocesseur,
etilexploitelesdiffrentscursdefaonnative.Lemoteurdebasededonnesestrobusteetpossdedescapacits
remarquablesdegestiondesdonneslorsdesmontesencharge.
ParmilesnombreuxapportsdeSQLServer2008,ilestpossibledeciterlintgrationauPowerShell,lecryptagedes
donnes,lacompressiondesdonnesetdessauvegardes,lesdclencheursdeconnexion,laudit.
SQLServer2008intgredefaonnativedenombreuxoutilsquifontqueSQLServerestplusquunsimpleserveurde
basesdedonnesrelationnelles.
Aussiladministrateurdebasesdedonnesdoitilpossderunebonnevuedensembledespossibilitsoffertesparles
diffrentscomposantsdeSQLServerafindefairelesbonschoixentermedvolution.Ceslmentscomplmentaires
sontrarementinstallspardfautetdoiventltrelademande.Eneffet,ilnesertriendinstallerdesprogrammes
et/ouservicessurleserveursicesderniersnesontpasutiliss.Demmelacquisition et lutilisationdun outil tiers
pour effectuer une tche qui peut tre ralis par lun des composants de SQL Server peut savrer ne pas tre
judicieuxtantauniveaudesperformancesquedelinvestissement.
SQL Server Management Studio reste loutil principal de travail que ce soit pour ladministrateur ou bien pour le
dveloppeurdapplications.Ilestpossibledefaireladministrationdefaongraphique,maistouteslestchespeuvent
galementltreenutilisantdesscriptsTransactSQL.Chaquesolutionpossdesesavantagesetsesinconvnients.
Cestpourquoilesdeuxsolutionssontexposesdefaonquasisystmatiquedanscelivre.PourlessyntaxesTransact
SQL,seuleslesoptionslespluscourantesserontprcises.Lobjectif nestpasderefaireladocumentationmaisde
prsenteraumieuxlesdiffrentesinstructions.
SQLServerutilisesaproprestructuredebasededonnespourstockertouteslesinformationsrelativessapropre
gestion.Cesinformationssontconservesdanslestablesditessystme.Toutefoiscommelastructuredecestables
estamenetremodifielorsdunchangementdeversion,ilestrecommanddenepasinterrogerdirectementces
tablesmaisdutiliserlesvuesdisponiblesdansleschmasysoubienINFORMATION_SCHEMA.Lutilisationdecesvues
dansdesrequtesdextractionpermettradelirelesinformationsconservesdansledictionnairedesdonnes.
- 1 - ENI Editions - All rigths reserved
PrsentationdeSQLServer
LebutdecechapitreestdeprsenterSQLServerdanssaglobalitetdacqurirunaperudeSQLServerdansson
ensemble,savoir:
G comprendrelanotiondeSGBDRetlemodedefonctionnementclient/serveur,
G prsenterlescomposantsdeSQLServeretlesplatesformesdexcution,
G prsenterlarchitecturedadministrationetdeprogrammation,
G prsenterlanotiondebasededonnesetlesbasesinstallessurleserveurSQL.
SQLServerestunSGBDR(SystmedeGestiondeBasededonnesRelationnelle)entirementintgrWindows,ce
quiautorisedenombreusessimplificationsauniveaudeladministration,toutenoffrantunmaximumdepossibilits.
1.QuestcequunSGBDR?
SQLServerestunSystmedeGestiondeBasedeDonnesRelationnelle(SGBDR),cequiluiconfreunetrsgrande
capacitgrerlesdonnestoutenconservantleurintgritetleurcohrence.
SQLServerestchargde:
G stockerlesdonnes,
G vrifierlescontraintesdintgritdfinies,
G garantirlacohrencedesdonnesquilstocke,mmeencasdepanne(arrtbrutal)dusystme,
G assurerlesrelationsentrelesdonnesdfiniesparlesutilisateurs.
CeproduitestcompltementintgrWindowsetceplusieursniveaux:
G Observateurdesvnements:lejournaldesapplicationsestutilispourconsignerleserreursgnrespar
SQLServer.LagestiondeserreursestcentraliseparWindows,cequifacilitelediagnostic.
G Analyseur de performances : par lajout de nouveaux compteurs, il est facile de dtecter les goulots
dtranglementetdemieuxragir,pourvitercesproblmes.Onutilisetoutelapuissancedelanalyseurde
performances, et il est possible au sein du mme outil de poser des compteurs sur SQL Server et sur
Windowsetainsidtremmededtecterlevraiproblme.
G Traitements parallles : SQL Server est capable de tirer profit des architectures mutiprocesseurs. Chaque
instanceSQLServerdisposedesonpropreprocessusdexcutionetdesthreadsWindowsoubiendesfibres
(si loption est active) sont excuts afin dexploiter au mieux larchitecture matrielle disponible. Chaque
instance SQL Server excute toujours plusieurs threads Windows. Pour prendre en charge tous les
processeurs prsents sur le systme, le paramtre de configuration max degree of parallelism doit
conserver la valeur 0. Il sagit de la valeur par dfaut. Pour empcher la gnration de plan dexcution
parallle,ilsuffitdaffecterlavaleur1ceparamtre.Enfinenluiaffectantunevaleurcompriseentre1etle
nombredeprocesseurs,ilestpossibledelimiterledegrdeparalllisme.Lavaleurmaximalesupportepar
ceparamtreest64.
G Scurit : SQL Server est capable de sappuyer intgralement sur la scurit gre par Windows, afin de
permettreauxutilisateursfinauxdenepossderquunnomdutilisateuretunseulmotdepasse.Nanmoins
SQLServergresonpropresystmedescuritpourtouslesclientsnonMicrosoft.
G Les services Windows sont mis contribution pour excuter les composants logiciels correspondant au
serveur.Lagestionduserveur(arrt,dmarrageetsuspension)estfaciliteetilestpossibledeprofiterde
toutes les fonctionnalits associes aux services de Windows (dmarrage automatique, excution dans le
contexteduncomptedutilisateurdudomaine...).
- 1 - ENI Editions - All rigths reserved
G ActiveDirectory:lesserveursSQL2008etleurspropritssontautomatiquementenregistrsdansleservice
dannuaireActiveDirectory.IlestainsipossibledeffectuerdesrecherchesdansActiveDirectorypourlocaliser
lesinstancesSQLServerquifonctionnent.
SQLServerpeutgrerdeuxtypesdebasesdedonnesdiffrentes:
G les bases OLTP (OnLine Transactional Processing) qui correspondent des bases dans lesquelles les
informationssontstockesdefaondirecteafinderutiliserplustardcesinformationstellesquellesontt
stockes.
G lesbasesOLAP(OnLineAnalyticalProcessing)quicontiennentdesinformationsstatistiquesafindtrecapable
dextraire les informations sous forme de cube multidimensionnel dans un but daide la dcision par
exemple.LesstatistiquescontenuesdansdesbasesOLAPsappuientsurdesinformationscontenuesdans
unebaseOLTP.
2.ModedefonctionnementClient/Serveur
Toutes les applications qui utilisent SQL Server pour grer les donnes, sappuient sur une architecture
client/serveur. Lapplication cliente est charge de la mise en place de linterface utilisateur. Cette application
sexcutegnralementsurplusieurspostesclientssimultanment.Leserveur,quantlui,estchargdelagestion
desdonnes,etrpartitlesressourcesduserveurentrelesdiffrentesdemandes(requtes)desclients.Lesrgles
degestiondelentrepriseserpartissententreleclientetleserveur.
ModedefonctionnementClient/Serveur
Onpeutdistinguertroiscas:
G les rgles sont entirement implmentes sur le client, appel alorsclient lourd. Cette solution permet de
librer des ressources au niveau du serveur, mais les problmes de mise jour des clients et de
dveloppementdautresapplicationsseposent.
G lesrglessontentirementdfiniessurleserveur,leclientestalorsunclientlger.Cettesolutionpermet
dobtenirdesclientsquipossdentpeuderessourcesmatrielles,etautoriseunecentralisationdesrgles
ce qui rend plus souples les mises jour. Cependant de nombreuses ressources sont consommes sur le
serveur et linteraction avec lutilisateur risque dtre faible, puisque lensemble des contraintes est vrifi
lorsquelutilisateursoumetsademande(requte)auserveur.
G les rgles dentreprises sont dfinies sur une tierce machine, appele Middle Ware, afin de soulager les
ressourcesduclientetduserveur,toutenconservantlacentralisationdesrgles.
- 2 - ENI Editions - All rigths reserved

Larchitectureclient/serveurpermetundploiementoptimumdesapplicationsclientessurdenombreuxpostestout
en conservant une gestion centralise des donnes (le serveur), ce qui rend possible le partage dinformations
lintrieurdelentreprise.
Il est bien sr possible davoir plusieurs applications clientes sur le mme serveur de base de donnes. Cette
possibilitoffredenombreusesfonctionnalits,maisilfauttoutefoisveillercequelachargedetravailsurleserveur
nesoitpastropimportanteauregarddescapacitsdelamachine.Cettearchitectureclient/serveurestrespecte
par tous les outils permettant daccder des informations contenues par le serveur SQL, donc les outils
dadministration,mmesilssontinstallssurleserveur.
Touteslesdemandesenprovenancedesclientsversleserveur,doiventtrecritesenTransactSQL.Celangagede
requtedebasededonnesrespectelanormeANSISQL92.LeSQLfournitunensembledecommandespourgrer
lesobjetsetmanipulerlesdonnesdanslesbases.LeTransactSQLestenrichidenombreusesfonctionnalits,non
normalises,afindtendrelespossibilitsduserveur.Ilestainsipossiblededfinirdesprocduresstockessurle
serveur.
3.Lesplatesformespossibles
Ilestimportantdedistinguerdeuxcas:dunctlesplatesformespossiblespourleclientetdelautrelesplates
formespourleserveur.
LesplatesformesclientesprsentesicisontlespostessurlesquelslesoutilsdadministrationSQLServerpeuvent
treinstalls.IlnesagitpasdespostesquihbergentuneapplicationquiseconnecteuneinstanceSQLServer
pourgrerlesdonnes.
Dune faon synthtique, les outils clients dadministrations peuvent tre installs sur tous systmes dexploitation
Windows2003,WindowsXPProoutoutsystmeplusrcent.
Parcontre,pourlapartieserveur,lesdisponibilitsentermesdeplatesformessontfonctionsdelditionSQLServer
choisie.Nanmoinspourhbergeruneinstancedebasededonnesenproduction,ilestncessairededisposerdun
serveur performant et fiable. Une plateforme Windows 2003 est donc recommande. Ldition de Windows 2003
sera choisie en fonction des contraintes imposes par ldition SQL Server slectionne et des contraintes lies
lenvironnementtechnique.LinstallationduneinstancesousWindowsXPserarservedespostesnomades.
- 3 - ENI Editions - All rigths reserved

Danslecasoleclienthbergeuneapplicationspcifique,lagammedesplatesformesestconsidrablementlargie
grce,enparticulier,aupilotejdbcquipermetdaccderuneinstanceSQLServerdepuisuneapplicationcriteen
java.LagammeestencorelargiedanslescasduneapplicationASPXquiproposeuneinterfaceInternet.Unsimple
navigateurInternetpermetalorsdelancerlapplication.
4.LescomposantsdeSQLServer
Le moteur de base de donnes de SQL Server ou Database Engine est compos de plusieurs logiciels. Certains
sexcutentsousformedeservicesalorsquedautrespossdentuneinterfaceutilisateurgraphiqueouenlignede
commande.
SQLServersexcutesousformedeservicesWindows.Suivantlesoptionsdinstallationchoisies,ilpeutyavoirplus
deservices.Lesprincipauxservicessont:
G SQLServer:cestleserveurdebasededonnesproprementparl.Siceservicenestpasdmarr,ilnest
pas possible daccder aux informations. Cest par lintermdiaire de ce service que SQL Server assure la
gestion des requtes utilisateurs. Ce service est rfrenc sous le nom MSSQLSERVER pour linstance par
dfautetMSSQLSERVER$nomInstancedanslecasduneinstancenomme.
G SQLServerAgent:ceserviceprendenchargelexcutiondetchesplanifies,lasurveillancedeSQLServer
et le suivi des alertes. Il est directement li une instance de SQL Server. Il est rfrenc dans le
gestionnaire de service sous le nom SQL Server Agent(MSSQLSERVER) pour linstance par dfaut et SQL
ServerAgent(nomInstance)danslecasduneinstancenomme.
G Microsoft Full Text Search : ce service propose de grer lindexation des documents de type texte stocks
dansSQLServeretgregalementlesrecherchesparrapportauxmotscls.
ComposantsServeur
- 4 - ENI Editions - All rigths reserved

IlestpossibledinstallerplusieursinstancesdeSQLServersurlemmeposte.
Linstallation des composants de connectivit sur les postes clients permet de prendre en charge la gestion du
rseau,laDBLibrarypourlesprogrammesenaccsnatif,lesupportOLEDBetODBC.
Les ralisations des tches dadministration sont possibles par lutilisation doutils. Ces outils possdent pour la
plupartuneinterfacegraphiqueconvivialeetdutilisationintuitive.Cependant,lestchesadministrativesdoiventtre
rflchiesavantleurralisation.Lutilisationdecertainsoutilssupposequelecomposantserveurcorrespondantest
install.
Cesoutilssont:
G SQL Server Management Studio pour raliser toutes les oprations au niveau du serveur de base de
donnes.
G SQLServerConfigurationManagerpourgrerlesserviceslisSQLServer.
G SQLServerProfilerpoursuivreetanalyserlachargedetravailduneinstanceSQLServer.
G DatabaseEngineTuningAdvisorpourpermettreuneoptimisationdufonctionnementduserveurdebasede
donnes.
En plus de ces outils, SQL Server propose Business Intelligence Development Studio pour la programmation de
travauxquivontsinscriredansuncadredanalysemultidimensionnelledesdonnes.
Enfin,touslesoutilsetlefonctionnementdeSQLServersontrichementdocuments.
LesdiffrentesbriqueslogiciellesfourniesparSQLServersarticulenttoujoursautourdumoteurdebasededonnes
relationnellesquitraitedefaonperformantelesinformationsstockesauformatrelationneletauformatxml.
G SQLServerAnalysisServicepermetuneanalysepoussedescubesdedonnesdfinisparlintermdiairedu
BusinessIntelligenceDevelopmentStudio.
G SQLServerIntegrationService(SSIS)estunoutildimportationetdexportationdedonnesfacilemettre
enplacetoutentantfortementparamtrable.
G ReportingServicespermetdemettreenplacedesrapportsdanalysedesdonnes.
G La rplication des donnes sur diffrentes instances permet de positionner les donnes au plus prs des
utilisateursetderduirelestempsdetraitement.
G ServiceBrokerpermetuntravailenmodeasynchroneetfaciliteainsilagestiondespicsdeforteactiviten
stockantlesdemandesdetravailavantdelestraiter.
G LintgrationduCLRdansSQLServerpermetdedvelopperprocduresetfonctionsenutilisantleslangages
ConnectivitClient
Outilsdegestion
Lescomposants
- 5 - ENI Editions - All rigths reserved
VB.NetetC#.LintgrationduCLRnevientpassesubstituerauTransactSQLmaisseprsentecommeun
complmentafindepouvoirraliseruncodagesimpleetperformantpourlensembledesfonctionnalitsqui
doiventtreprsentessurleserveur.
G LespointsdeterminaisonhttppermettentSQLServerdhbergersespropresservicesetdefaciliterainsi
lintgrationduserveurdansuncontextehtrogne.
UnemeilleuregestiondelammoireestproposeaveclamiseenplacedelAPIAWEquipermetdegrer,surdes
systmes32bits,plusde4Godemmoire.Lditionentrepriseestainsicapabledegrerjusqu64Godemmoire.
LapriseenchargedeAWEestpossibleenactivantloptiondeconfigurationaweenabledavecsp_configure.
aweenabledestuneoptiondeconfigurationavance.

Dans le cas o la gestion de la mmoire AWE est active, SQL Server peut, par lintermdiaire de Windows 2003,
prendreenchargeunajoutdemmoirechaud.Ceciestpossibleuniquementsilaplateformematriellepermetde
raliserunetelleopration.
Dans le cas o SQL Server sexcute sur une plateforme Windows Server 2003 ou 2008 la gestion de la
mmoire AWE est dynamique. Par contre, dans le cas dune excution sous Windows 2000 la gestion de
cettemmoireeststatique.
Reporting Services permet la cration de rapports pour prsenter au mieux les informations contenues dans SQL
Server.Cesrapports,hbergssurunserveurIIS,peuventtreconusparlintermdiairedugnrateurderapport
duBusinessIntelligenceDevelopmentStudio.
LesrapportssontdisponiblesauformatHTMLmaisilspeuventexisterauformatpdf.Lagestiondecesrapportsau
niveauscurit,planificationdesrgnrations...estassureparReportingServices.
Analysis Services est un outil permettant la construction des cubes multidimensionnels danalyse des donnes.
Quelques fonctionnalits OLAP taient dj prsentes dans les versions prcdentes de SQL Server mais avec
Analysis Services, SQL Server permet de raliser des analyses compltes des cubes danalyses qui peuvent tre
dfinis.
Pour amliorer les performances de traitement des cubes il est possible dinstaller plusieurs instances du moteur
AnalysisServicesurlemmeserveur.
AnalysisServicesappuieintgralementsurlinterfaceBusinessIntelligenceDevelopmentStudio.
LesterminaisonshttppermettentSQLServerderpondredefaondirectedesrequteshttp,cestdiresans
passer par lintermdiaire dun serveur IIS. SQL Server offre ainsi la possibilit dexposer des procdures et des
fonctionsautraversdeservicesWeb.
Les points de terminaisons http ne sont disponibles que si SQL Server sexcute sur une plateforme
Windows2003ouWindows2008.
Service Broker permet une gestion asynchrone des requtes. Plus exactement, Service Broker permet une
application cliente denvoyer de nombreuses demandes de services et SQL Server peut traiter ces demandes
(message)lesunesaprslesautres.Lamiseenattentedesmessagespermetdergulerlachargedetravailsurle
serveuretdabsorbercertainespointesdactivitsponctuelles.
Service Broker dispose dun mcanisme scuris qui lui permet de garantir le traitement des messages. Service
BrokerutiliseSQLServerpourconserverlafiledattentedesmessagesnonencoretraits.
Lintgration du CLR (Common Language Runtime) SQL Server, permet daugmenter considrablement les
possibilitsoffertesentermedeprogrammation.LaprsenceduCLRneremetpasencauseleTransactSQL.Chacun
MmoireAWE
ReportingServices
AnalysisServices
Terminaisonshttp
ServiceBroker
CLR
- 6 - ENI Editions - All rigths reserved
est complmentaire. Le Transact SQL est parfait pour crire des procdures ou fonctions pour lesquelles il y a un
traitementintensifdesdonnes.Aucontraire,danslecasolevolumedesdonnesmanipulesestfaible,leCLR
permetdcriresimplementdestraitementscomplexes,carilbnficiedetoutelarichesseduCLR.
Le CLR permet galement de dfinir ses propres types de donnes ou bien de nouvelles fonctions de calcul
dagrgat.
Enfin,leCLRpermetauxdveloppeursdapplicationsdedvelopperdesprocduresetfonctionssurSQLServertout
enconservantleurslangagesfavoris(VB.NetouC#parexemple),etdoncsansavoirbesoindemaitriserleTransact
SQL.
Dans le cas o le code est crit depuis Visual Studio, lintgration de la version compile dans SQL Server et le
mappageCLRTransactSQLestralisdefaonautomatique.Ilestpossiblederaliserledveloppementendehors
duVisualStudiomaislintgrationSQLServerserafaitedefaonmanuelle,cequiestunetchefastidieuse.
- 7 - ENI Editions - All rigths reserved
Architecture
1.Administration
LelangagenatureldeSQLServerestleTransactSQL.Ilestdoncncessairedeluitransmettrelesinstructionsdans
celangage.Commecelangagenestpasforcmentnaturelpourlutilisateur,ilestpossibledecomposerlinstruction
defaongraphiqueparSQLServerManagementStudio,puisdeprovoquersonexcutionsurleserveurlaidedes
boutonsOK,Appliquer...LesoutilsgraphiquesutilisentlabibliothqueSMO(SQLServerManagementObject)pour
tablirundialogueefficaceavecleserveur.
SQLSMOenglobeettendSQLDMO.LabibliothqueSMOestdonccompatibleavecSQLServer7,SQLServer2000,
2005et2008.
Il est donc possible dcrire des scripts Transact SQL pour excuter des oprations administratives sous forme de
traitementbatch.
AdministrationdeSQLServer
2.Programmation
Ledveloppementdapplicationsclientespourvisualiserlesdonnescontenuesdansleserveurpeutsappuyersur
diffrentestechnologies.

La DLL SQL Native Client est une mthode daccs aux donnes qui est disponible aussi bien en utilisant la
- 1 - ENI Editions - All rigths reserved
technologie OLEDB ou bien ODBC pour accder aux donnes. Avec cette nouvelle API, il est possible dutiliser
lensembledesfonctionnalitsdeSQLServercommelestypespersonnalissdfinisaveclesCLR(UDT:UserDefined
Type),MARSoubienencoreletypexml.
SQLNativeClientestuneAPIquipermetdetirerpleinementprofitdesfonctionnalitsdeSQLServeretdepossder
unprogrammequiaccdedefaonoptimumauserveur.
Il est toujours possible dutiliser les objets ADO pour accder linformation. Ce choix est plus standard car un
programmeaccdantunesourcededonnesADOpeuttravailleraussibienavecunebaseOraclequeSQLServer,
maisnepermetpaslammegestiondetouteslesfonctionnalitsoffertesparSQLServer.LAPISQLNativeClient
permetlcrituredeprogrammesclientsoptimissmaisuniquementcapablesdaccderdesdonneshbergespar
unserveurSQLServer.
SQLNativeClientseraadoptcommemodledaccsauxdonnesdanslesnouveauxprogrammescritsenVB.Net
ou C# qui souhaitent travailler avec SQL Server mais aussi dans les programmes existants lorsque ces derniers
souhaitenttravailleravecdeslmentsspcifiquesSQLServer,commeletypeXML,parexemple.
Ce modle de programmation correspond une application client qui souhaite grer les donnes. Dans le cas o
lapplication souhaite tre capable de faire des oprations dadministration, il est alors ncessaire dutiliser la
bibliothqueSMO.
- 2 - ENI Editions - All rigths reserved
BasededonnesSQLServer
1.Objetsdebasededonnes
Lesbasesdedonnescontiennentuncertainnombredobjetslogiques.Ilestpossiblederegroupercesobjetsen
troisgrandescatgories:
G Gestionetstockagedesdonnes:tables,typededonnes,contraintesdintgrit,valeurpardfaut,rgles
etindex.
G Accsauxdonnes:vuesetprocduresstockes.
G Gestion de lintgrit complexe : dclencheur (procdure stocke sexcutant automatiquement lors de
lexcutiondunordreSQLmodifiantlecontenudunetable:INSERT,UPDATEetDELETE).Ledclencheurest
toujours associ une table et une instruction SQL. Il permet de mettre en place des rgles dintgrit
complexeschevalsurplusieurstablesoudemaintenirdesdonnesnonnormalises.
Objetdebasededonnes
Nomcompletdesobjets
Largleappliquepournommerlesobjetspermetuneparfaiteidentification.Lenomcompletestcomposcomme
suit:serveur.nomBase.propritaire.objet.Pardfaut,seullenomdelobjetestprcis.Cettenotionseradtailleau
coursduchapitreGestiondelabasededonnes.
2.Basesdedonnessystmeettablessystme
Pour grer lensemble des donnes stockes, SQL Server sutiliseluimme. Il existe donc des bases de donnes
systmeetsurchaquebaseutilisateur,quelquestablessystme.Linsertionetlamisejourdedonnesdansces
tablesneseffectuentjamaisdirectement,maisviadescommandesTransactSQLoudesprocduresstockes.
- 1 - ENI Editions - All rigths reserved
Organigrammedesbasesdedonnes
LesnomsdesbasesdedonnesetdestablessystmessontfixsetconnusparSQLServer.Ilnefautdonc
pasrenommerunetableouunebasesystme.
Cest la base de donnes principale de SQL Server. Lensemble des donnes stratgiques pour le bon
fonctionnementduserveuryeststock(comptesdeconnexion,optionsdeconfiguration,lexistencedesbasesde
donnesutilisateursetlesrfrencesverslesfichiersquicomposentcesbases...).
Cettebasecontientlensembledeslmentsinscritsdanstoutenouvellebaseutilisateur.Pardfaut,ilnyaqueles
tablessystme,maisilestpossiblederajouterdeslments.
LabaseTempdbestunespacetemporairedestockagepartag.Ilpermetdegrerlestablestemporaireslocalesou
globales, les tables de travail intermdiaires pour faire des tris par exemple, mais aussi les jeux de rsultats des
curseurs.LabaseTempdbestrecre,avecsatailleinitiale,lorsdechaquedmarragedelinstance.Ainsi,aucune
information ne peut tre conserve de faon persistante lintrieur de la base Tempdb. Les objets temporaires
sont,quanteux,supprimslorsdeladconnexiondeleurpropritaire.
Elle contient les informations utilises par le service SQL Server Agent pour dclencher une alerte, prvenir un
oprateurouexcuterunetcheplanifie.Msdbcontientgalementlhistoriquedelexcutiondestches.
CettebaseenlectureseulecontientladfinitiondetouslesnouveauxlmentsdfinispartirdeSQLServer2005.
Lesobjetssystmesysontdfinisbienquelogiquementilsapparaissentdansleschmadelutilisateur sys.Avec
cettebase,lamigrationdeSQLServer2000versSQLServer200xestfacilite,carlajoutsimpledelabaseressource
permetdobtenirlensembledesobjetsdfinisdansSQLServer2005sansquilsoitncessairedetoucherlabase
Master
Model
Tempdb
Msdb
Ressource
- 2 - ENI Editions - All rigths reserved
master.
Lesbasesdedonnesutilisateursvonthbergerlesdonnesfourniesparlesutilisateurs.Lesbasesprsentessur
le schma prcdent (AdventureWorks et Gescom) sont les bases dexemples utilises dans la documentation
officielledeSQLServeretdanscetouvrage.
3.Lestablessystme
Les tables systme sont toujours prsentes dans SQL Server. Cependant, il est recommand de ne pas travailler
directement avec ces tables. Pour rechercher linformation, il faut passer par le schma dinformation et plus
exactementlesvuesdfiniessousleschmadelutilisateursyslorsquecelaestpossible.
Dansletableaucidessous,quelquestablessystmesontrfrences.
LestablessystmesontutilisesdirectementparlemoteurdeSQLServer.LesapplicationsquiutilisentSQLServer
ne doivent en aucun cas accder directement ces tables, mme en lecture. En effet, comme la structure de ces
tables volue avec les versions de SQL Server, si certaines applications accdent de faon directe aux tables
systme, on peut se trouver dans limpossibilit de migrer vers une nouvelle version de SQL Server tant que
lapplicationnapastrcrite.
SQLServerneprendpasencomptelesdclencheursquipourraienttredfinissurlestablessystmecarils
peuventgnerlebondroulementdecertainesoprations.
4.Extractiondemtadonnes
Pour interroger les donnes contenues dans les tables systme, il est dconseill de le faire directement par une
requtedetypeSELECT.Ilestprfrabledepasserparlutilisationdeprocduresstockes,defonctionssystmeet
devuesduschmadinformation.
En tant quadministrateur,ilestpossibledemodifierlecontenudestablessystme.Cetteoprationest
proscrirecarellepeutavoirdesconsquencesirrversiblesetdramatiques.Leseulmoyenderemdierun
telproblmeseraalorsderestaurerunesauvegarde.
Les procdures stockes systme sont maintenues, pour la plupart, pour des raisons de compatibilit ascendante.
Leurutilisationestdoncdconseiller.
Pourinterrogerlestablessystme,ilexistedenombreusesprocduresstockes.Ellescommencenttoutesparsp_.
Basesdedonnesutilisateur
Cataloguesystme(prsentuniquementdanslabaseMaster)
Tablesystme Fonction
syslogins UnelignepourchaqueutilisateurougroupeWindowsautoris
seconnecterauserveurSQL.
sysmessages Unelignepourchaquemessagederreurdfinietpourchaque
langue.
sysdatabases Uneligneparbasededonnesutilisateur.
sysconfigures Unelignepourchaqueoptiondeconfigurationduserveur.
sysusers Unelignepourchaqueutilisateurdfinidanslabase.
syscolumns Unelignepourchaquecolonnedestables,vuesetpourchaque
paramtredesprocduresstockes.
sysobjects Unelignepourchaqueobjetdelabasededonnes.
Procduresstockessystme
- 3 - ENI Editions - All rigths reserved
Parmitouteslesprocduresstockes,citons:

SQL Server propose des vues systme qui permettent dobtenir des informations systme. Toutes ces vues sont
prsentesdansleschmasys.
Afindenavigueraumieuxdanscesvues,ellessontregroupesparthmes:
G Objets,typesetindex
G Serveurslis
G CLR
G Miseenmiroir
G ServiceBroker
G Scurit
G Transactions
Procdurestocke Description
sp_help[nom_objet] Informationssurlobjetindiqu.
sp_helpdb[nom_base_donnes] Informationssurlabasededonnesindique.
sp_helpindex[nom_table] Informationssurlesindexdelatableindique.
sp_helplogins[nom_connexion] Informationssurlaconnexionindique.
sp_who Listedesutilisateursactuellementconnects.
Lecatalogue
- 4 - ENI Editions - All rigths reserved
G Configurationduserveur
G Informationsurleserveur
G Environnementdexcution
G Stockage
G Pointdeterminaisons
G Partitionnement
G Tracesetvnements
Les fonctions systme sont utilisables avec des commandes Transact SQL. Il est ainsi possible de rcuprer des
valeursconcernantlabasededonnessurlaquelleontravaille,surleserveurousurlesutilisateurs.
Citonsenquelquesunes:

Fonctionssystme
Fonctionssystme Paramtre Description
DB_ID Nom Retrouvelidentificateurdelabasededonnes.
USER_NAME ID Retrouvelenomdelutilisateurpartirdeson
identifiant.
COL_LENGTH Colonne Longueurdelacolonne.
STATS_DATE Index Datedederniremisejourdesstatistiques.
DATALENGTH Typededonnes Longueurdelexpression.
Schmadinformation
- 5 - ENI Editions - All rigths reserved
Ilsagit dunensembledevuesquiproposentunevisualisationdesparamtresdefaonindpendantedestables
systme.Ennefaisantpasdirectementrfrenceauxtablessystme,onseprservedesmodificationsquipeuvent
intervenir sur leurs structures lors des prochaines versions. De plus, ces vues sont conformes la dfinition du
standard ANSI SQL pour les schmas dinformation. Chaque vue prsente des mtadonnes pour lensemble des
objetscontenusdanslabasededonnes.
Lesvuesduschmadinformation:
CHECK_CONSTRAINTS
VisualiselensembledescontraintesdetypeCHECKdfiniesdanslabasededonnes.
COLUMN_DOMAIN_USAGE
Visualiselensembledescolonnesdfiniessuruntypededonnesutilisateur.
COLUMN_PRIVILEGE
Visualiselensembledesprivilgesaccords,auniveaucolonne,pourlutilisateurcourantoupourunutilisateurdela
basededonnes.
COLUMNS
Visualise la dfinition de lensemble des colonnes accessibles, dans la base de donnes courante, lutilisateur
actuel.
CONSTRAINT_COLUMN_USAGE
Visualiselensembledescolonnespourlesquellesilexisteunecontrainte.
CONSTRAINT_TABLE_USAGE
Visualiselensembledestablespourlesquellesaumoinsunecontrainteestdfinie.
DOMAIN_CONSTRAINTS
Visualiselensembledestypesdedonnesutilisateurs,quisontaccessiblesparlutilisateurcourantetquisontlis
unergle.
DOMAINS
Visualiselensembledestypesdedonnesutilisateurs,quisontaccessiblesparlutilisateurcourant.
KEY_COLUMN_USAGE
Visualiselensembledescolonnespourlesquellesunecontraintedeclestdfinie.
PARAMETERS
Visualiselespropritsdesparamtresdesfonctionsdfiniesparlutilisateuretdesprocduresstockesaccessibles
lutilisateurcourant.Pourlesfonctions,lesinformationsrelativeslavaleurderetoursontgalementvisualises.
REFERENTIAL_CONSTRAINTS
Visualiselensembledescontraintesdeclstrangresdfiniesdanslabasededonnescourante.
ROUTINES
Visualiselensembledesprocduresstockesetdesfonctionsaccessibleslutilisateurcourant.
ROUTINE_COLUMNS
Visualiselespropritsdechaquecolonnerenvoyesparlesfonctionsaccessibleslutilisateurcourant.
SCHEMATA
- 6 - ENI Editions - All rigths reserved
Visualiselesbasesdedonnespourlesquelleslutilisateurcourantpossdedesautorisations.
TABLE_CONSTRAINTS
Visualiselescontraintesdeniveautable,posesdanslabasededonnescourante.
TABLE_PRIVILEGES
Visualiselensembledesprivilgesaccordslutilisateuractueldanslabasededonnescouranteetlensembledes
privilgesaccordsparlutilisateuractueldautresutilisateursdelabasededonnescourante.
TABLES
Visualiselensembledestablesdelabasededonnescourantepourlesquelleslutilisateuractueldisposededroits.
VIEW_COLUMN_USAGE
Visualiselensembledescolonnesdetablesquisontutilisesdansladfinitionduneouplusieursvues.
VIEW_TABLE_USAGE
Visualiselensembledestablesdelabasededonnescourantequisontutiliseslorsdeladfinitiondevues.
VIEWS
Visualiselensembledesvuesaccessibleslutilisateuractueldanslabasededonnescourante.

5.Lestchesdeladministrateur
Ladministrateurdebasesdedonnesapourobjectifprincipaldamliorerlefonctionnementdelabasededonnes.
BienqueSQLServerpossdedenombreuxoutilsetalgorithmesdautooptimisation,ilrestedenombreusestches
ladministrateur.
Lesprincipalestchesdeladministrateursont:
G GrerlesservicesSQLServer
- 7 - ENI Editions - All rigths reserved
G GrerlesinstancesSQLServer
G Mettreenplaceleprocessusdesauvegardeetderestauration
G Configurerunedisponibilitdesdonnesenaccordaveclapolitiquedentreprise
G Grerlesconfigurationsrseaux
G Importeretexporterdesdonnes.
Enplusdescomptencessystmequedoitpossderladministrateurpourtrecapabledegreraumieuxlinstance
SQL Server, il est important pour lui de connatre les possibilits offertes par SQL Server pour lautomatisationdes
tchesavecSQLAgent.
Pourmesurerlersultatdesontravailetcomparerlesdiffrentschoixdeconfigurationquilpeuttreamenfaire,
ladministrateurdoittreenmesuredutiliserlesoutilsetmthodeslisSQLServer.
Enfinetcestsansdouteunpointcrucial,ladministrationdelabasedoittreinscritedansunprocessusplusglobal
qui intgre ladministrateur ds la conception de la base, de faon effectuer les meilleurs choix en terme
darchitecturedslaconception.Ladministrateurpourraainsiintervenirsurlacrationdelabaseetleschoixfaits
comme,parexemple,lenombredegroupedefichiersutiliser,lesindex,lesvues,lesprocduresstockesdfinir
de faon optimiser le trafic rseau mais aussi pour simplifier la gestion des droits daccs. Cest galement
ladministrateurquivapouvoirconseillersurlepartitionnementounondunetable.
- 8 - ENI Editions - All rigths reserved
InstallerSQLServer
LinstallationdeSQLServerpermetdeprsenterlesdiffrentesditionsdeSQLServerainsiquededtaillerlesoptions
dinstallationpossibles.UnpointtoutparticulierseramisenplacepourdtaillerlexcutiondesservicesassocisSQL
Server(logicielsserveur).Unefoisleserveurinstall,ilfautsassurerquelinstallationsestdroulecorrectementpuis
ilfautconfigurerleserveuretcertainsoutilsclientspourraliserlesdiffrentestapesdadministration.
Bienquefacileraliser,linstallationdeSQLServerdoittreuneoprationrflchie.Eneffet,denombreusesoptions
dinstallationexistentetleurchoixdoitcorrespondreunrelbesoin,oupermettredecouvrirunevolutionfuturedu
systme.
1.LesditionsdeSQLServer
SQL Server est disponible sous la forme de plusieurs ditions. Chaque dition se distingue par des caractristiques
spcifiques.Enfonctiondespossibilitssouhaites,lechoixseporterasuruneditionoubienuneautre.
Certainesditions(standardetentreprise)sontplusdestineslagestiondesdonnesduneentreprisetandisque
certainesditions(developer,workgroup,web,express)ontpourobjectifdesatisfairedesbesoinsbienparticuliers.
ToutescesditionsdeSQLServersontdisponiblespourdesplatesformes32et64bits.Enfin,lditioncompactest
quantelledestineauxpriphriquesmobiles.
Ldition Entreprise est la plus complte. Elle propose lensemble des fonctionnalits disponibles avec SQL Server.
Cette dition est conue pour tre capable de grer des volumes trs importants en termes de donnes et de
transactionsavecdenombreuxutilisateursconnects.
Cetteditionestdisponiblepourlesplatesformes32et64bits(x86,x64etIA64).
Cette dition dispose galement des fonctionnalits avances en ce qui concerne les oprations de business
intelligence.
Lditionentreprisesedistinguedesautresditionssurlespointssuivants:
G Supportejusqu50instancesdeSQLServer
G Priseenchargedupartitionnementetdelaparalllisation
G Supportelacompressiondesdonnes
G Disposedugouverneurderessources
G Proposelamiseenmiroirdebasesdedonnesetunercuprationautomatiquepartirdumiroir
G Permetdegrerdesclusters
G Autoriselacrationdindexenligne
G Permetlarestaurationenlignedesfichiersetdespagesaltrs
G Autoriselacrationdesauvegardescompresses
G Proposeunhautniveaudescurit(chiffrementtransparentdesdonnes)etdaudit
G PrendenchargelesdiffrentstypesderplicationycomprisversdesclientsOracle.
Cette dition, plus simple que ldition entreprise, a pour objectif de rpondre aux besoins dune entreprise qui
chercheunmoteurdebasededonnesperformantetquinapasbesoindesfonctionnalitsspcifiquesdeldition
entreprise.
Cest galement une dition standard qui est mise disposition dans SBS (Small Business Server) afin de travailler
Entreprise
Standard
- 1 - ENI Editions - All rigths reserved
dansunenvironnementdemoinsde75postes.
Lesprincipauxpointsfortsdecetteditionsont:
G Lapossibilitdavoir16instancesmaximum
G Laprisedecomptedesbasesdedonnesmiroir
G Lapossibilitdedfinirdesrplications
G Lagestionparlesstratgies
G ImportationdedonnesviaSSIS(SQLServerIntegrationServices).
LditionExpressdeSQLServer2008possdelaparticularitdtreutilisableenproductionsansquilsoitncessaire
desacquitterdunelicencedeSQLServer.CetteversionnestpasuneversiondgradedeSQLServer,maisilsagit
biendumoteurSQLServerpleinementfonctionnel.Ilnexistepasdelimitequantaunombredutilisateursconnects.
Les seules limitations qui existent concernent le volume de donnes : 4 Go et le fait que le moteur ne puisse pas
exploiterplusdungigaoctetsdemmoire.Ilesttoutefoisraisonnabledepenserquelorsquuneapplicationatteintces
limites,lentreprisepossdelesmoyensncessairespouracquriruneversioncompltedeSQLServer.
Cetteditionexpressestconseillersansmodrationauprsdesdveloppeursdapplicationscarilserapossiblede
migrertrssimplementversuneditionsuprieuredeSQLServer.
Ce type ddition est galement bien adapt pour les applications autonomes. En effet, ldition express peut tre
installe sur une plateforme Windows utilisateur, comme par exemple lordinateur portable dun commercial qui
emmne avec lui la base de tous les articles de lentreprise. Cette base peut tre mise jour par le processus de
rplicationdeSQLServerquipermetdesynchroniserlesdonnesauniveauducatalogueetdelesinjecterdansle
SystmedInformationdelentreprise.
Cette dition est galement utile dans la cadre dune application monoposte qui ncessite une gestion robuste et
fiabledesdonnes.ChoisirdutiliserSQLServerpourcetypedapplicationpermetdelaisserouvertlepassagevers
unegestionmultiutilisateur.
SQL Server 2008 propose galement une dition Express Advanced qui propose les mmes fonctionnalits que
lditionexpressenrichiedelapossibilitdeffectuerdesrapports.
En plus de toutes ces ditions de production, SQL Server propose galement une dition Developer. Cette dition
Developer comprend lensemble des fonctionnalits proposes par ldition Entreprise. Toutefois, avec une dition
Developer,lamiseenproductionnestpaslgale.Commesonnomlindique,laversionDeveloperpermetlquipede
dveloppement dapplication de faire ses tests sur une base pleinement fonctionnelle sans pour autant tre dans
lobligationdacqurirunelicencedeproduction.
IlsagitdelditiondeSQLServerdestinetreinstallesurdesterminauxmobiles.Ilsagitdunebasededonnes
gratuiteetparfaitementadaptepourledveloppementdapplicationsautonomes.Ilestpossibledefaireparticiper
cetteditionunprocessusderplicationafindesynchroniserefficacementlesdonnesdelentreprise avec celles
prsentessurleterminal.
Cette dition est destine la gestion des donnes destination dun groupe de travail ou bien dun service de
lentreprise. Les processus relatifs lanalyse dcisionnelle ne sont pas prsents, toutefois cette dition permet de
dfinirdesrapports.Aveccettedition,ilnestpaspossibledexploiterplusde4Godemmoirevive.
Centresurlagestiondedonnes,cetteditionpermetdoffrirunmoteurdebasededonnesdestinationdessites
web faible cot. Les possibilits en termes dadministration sont rduites. Les fonctionnalits dcisionnelles et la
cration de rapports ne sont pas disponibles sur cette dition. Cette dition peut participer un processus de
rplication,uniquemententantquabonn.
2.Droulementdelinstallation
Express
Developer
Compact3.5
Workgroup
Web
- 2 - ENI Editions - All rigths reserved
Commepourdenombreuxproduitsleprocessusdinstallationsedrouleentroistempsbiendistincts:
G Lanalyse de lenvironnement et linstallationdecomposantsncessaireslabonneexcutionduprocessus
dinstallation.
G Leparamtragedesdiffrentscomposantsinstaller.
G Linstallationdescomposantsslectionnsaupralable.
Le processus dinstallation commence par sassurer que la version 3.5 du Framework .Net est bien prsente sur le
systmeetlancesoninstallationsicenestpaslecas.
Par la suite, le premier cran permet de planifier au mieux linstallation de SQL Server 2008 en consultant la
documentationrelativeauxdiffrentscaspossiblesdinstallation/migrationdedonnesetensassurantquelaplate
formechoisieestprtepouruneinstallationdeSQLServer2008.Cedernierpointestassurparloutildanalysede
configurationsystme.LorsduprocessusdinstallationdunenouvelleinstancedeSQLServer2008,loutildanalyse
deconfigurationsystmeestgalementexcut.Aprssaisiedelaclduproduitetacceptationducontratdelicence,
lesfichiersdesupportduprogrammedinstallationdeSQLServersontinstalls.
LeprocessusdinstallationdeSQLServer2008commenceparexcuteruncertainnombrederglesafindevaliderla
configurationdelaplateforme.

Si ces rgles ne sont pas parfaitement respectes il en ressort soit des avertissements, soit des erreurs. Un
avertissementpermetdeprciserquebienquilsoitpossibledinstalleruneinstanceSQLServer,certainscomposants
nepourrontpastreinstalls.
a.Choixdescomposants
Avantdeprocderauparamtragedelinstallation,SQLServerdemandedeslectionnerlescomposantsquivont
tre installs sur le poste local. Cest ce niveau quil est possible de dfinir que seuls les outils doivent tre
installs,oubienlemoteurdebasededonnes.
Ilsagitdeslectionnerfinementlescomposantsinstaller.Ilnesagitpasdecochertouteslesoptions,maisbien
de slectionner les composants (client ou serveur) qui vont tre effectivement utiliss. En limitant le nombre de
composantinstalls,lasurfacedattaquedusystmeestrduiteetlonvitegalementunesurchargedusystme
pardescomposantsnonutiliss.Bienentendu,sicertainscomposantsnontpastslectionnlorsdelinstallation
initialeetquelebesoinsenfaitsentirparlasuite,ilestpossibledelesajouter.
- 3 - ENI Editions - All rigths reserved

Pourchacundescomposants,ilestpossiblededfinirsonemplacementphysiquesurledisquedur.Pouraccder
cetcrandeconfiguration,ilfautslectionnerlebouton .

b.Nomdelinstance
MSSQLServeroffrelapossibilitdinstalleruneouplusieursinstancesdumoteurdebasededonnessurlemme
serveur.Chaqueinstanceestcompltementindpendantedesautresinstallessurlemmeserveuretellessont
gres de faon autonome. Lorsque plusieurs instances sont prsentes sur le mme serveur, il est ncessaire
dutiliser le nom de chacune dentreelles pour les distinguer. La premire instance installe est gnralement
linstancepardfautetelleportelemmenomqueleserveursurlequelelleestinstalle.
- 4 - ENI Editions - All rigths reserved

Les autres instances porteront alors un nom. Aprs le choix du nom de linstance installer, le processus
dinstallationvrifielescapacitsdisquedusystme.
Unmmeserveurnepeuthbergerquuneseuleinstancepardfaut.

Chaqueinstanceestparfaitementidentifieparsonnom.Lenomdelinstancerespectelesrglessuivantes:
G lenomdelinstanceestlimit16caractres
G lesmajusculesetlesminusculesnesontpasdiffrencies
G le nom de linstance ne peut pas contenir les mots DEFAULT et MSSQLSERVER, ainsi que tout autre mot
rserv
G lepremiercaractredunomdelinstancedoittreunelettre(AZ)oubienletraitdesoulignement(_)
G lesautrescaractrespeuventtredeslettres,deschiffresoubienletraitdesoulignement(_)
G lescaractresspciauxtelsquelespace,lantislash(\),lavirgule,lesdeuxpoints,lepointvirgule,lasimple
cote,le"et"commercial(&)etlarobase(@)nesontpasautorissdanslenomduneinstance.
c.LesservicesSQLServer
Enfonctiondeschoixfaitslorsdelinstallation,ilpeutyavoirjusqu10servicesdecrs:
G SQLServerDatabaseServices
G AgentSQLServer
G AnalysisServices
G ReportingServices
- 5 - ENI Editions - All rigths reserved
G IntegrationServices
G Recherchedetexteintgral
G NavigateurSQLServer
G SQLServerActiveDirectoryHelper
G SQLWriter.
Certains de ces services sont lis linstance SQL Server installe. Cest par exemple le cas pour SQL Server
Database Services et lAgent SQL Server. Certains services comme Reporting Services sont directement lis des
utilisationsparticuliresdeSQLServer,icicestlecasdelaBusinessIntelligence.
Dans le cadre de cet ouvrage, ce sont principalement les services SQL Server Database Services et lAgent SQL
Serverquivonttretudis.
Leslogicielsctserveursexcutentsousformedeservices.Commetouslesservices,pouraccderauxressources
delamachine,ilsutilisentlecontexteduncomptedutilisateurdudomaine.Pardfautlesservicessexcutentdans
lecontexteducompteLocalSystem.Cecomptepermetdobtenirtouteslesressourcesdelamachinelocale,maisil
nepermetpasdaccderdesressourcesdudomaine.
Lesdeuxservices,quesontMSSQLServeretSQLServerAgentdoiventtrecapablesdaccderdesressourcesdu
domaine,afindepouvoirutilisertouteslesfonctionnalitsproposesparSQLServer(gestiondestchesplanifies,
rplication...).Lorsdelinstallationilestpossibledeprciserlecomptedutilisateurdudomainequiserautilispour
lesdeuxservices.
Pour simplifier les oprations de gestion, il est recommand dutiliser le mme compte Windows pour les deux
services.
LemmecomptepourragalementtreutilispourleservicedeRecherchedetexteintgral.

SilentreprisecomporteplusieursserveursSQLdansplusieursdomaines,ilestprfrablequetouslesservicesSQL
Server sexcutent en utilisant un compte dutilisateur de domaine portant le mme nom et avec le mme mot de
passe.
Service Nompourlinstancepardfaut Nompouruneinstancenomme
MicrosoftSQLServer MSSQLSERVER MSSQL$NomInstance
AgentSQLServer SQLSERVERAGENT SQLAgent$NomInstance
CompteLocalSystmeetcomptedutilisateur
- 6 - ENI Editions - All rigths reserved
Comptedouverturedesession
Il est possible de paramtrer les services de SQL Server de faon ce quils dmarrent automatiquement lors du
dmarragedeWindows.Lavantagedecetteoptionestquilnestpasncessairedouvrirunesessionsurleposte
en tant quadministrateur, pour lancer les services du SGBDR. Lors de chaque dmarrage de Windows, les bases
gresparleSGBDRsontimmdiatementaccessibles.
Ces deux options : Comptes de services et Dmarrage automatique de service peuvent tre fixes lors de
linstallationdeSQLServeroubienunefoisqueSQLServerestinstallautraversdesoutilsdadministration.
Dmarrageautomatiquedesservices
- 7 - ENI Editions - All rigths reserved

d.Paramtresdeclassement
LalanguepardfautdelinstancedeSQLServervaavoiruneincidencedirectesurleclassementslectionn.
IlestpossibledinstallerSQLServerquellequesoitlalanguedfinieauniveaudusystmedexploitation.
Ilfautveillernepasconfondrelapagedecodeetleclassement.
La page de code est le systme de codage des caractres retenus. La page de code permet didentifier 256
caractres diffrents. Compte tenu de la diversit des caractres utiliss dune langue lautre, il existe de
nombreusespagesdecode.Pourpouvoirprendreencomptedesdonnesexprimesdansdiffrenteslangues,ilest
possible dutiliser le systme UNICODE. Ce systme de codage des caractres permet dutiliser deux octets pour
coderchaquecaractre.LesystmeUnicodepermetdoncdecoder65536caractresdiffrentscequiestsuffisant
pourcoderlatotalitdescaractresutilissparlesdiffrenteslanguesoccidentales.
Cettesolutionaveclespagesdecodesnestacceptablequesilonstockedanslabasededonnesuniquementdes
donnes en provenance dune seule langue. Or, avec la monte en puissance des applications de commerce
lectronique,lesbasesdedonnesvontdeplusenplussouventcontenirdesinformations(commelesnom,prnom
etadressedesclients)enprovenancedediffrenteslangues.Pourpouvoirsupporterlescaractresspcifiques
chaquelangue,ilfaututiliserletypededonnesUnicode.LesdonnesdetypeUnicodesontconservesdansles
types ncharet nvarchar. Au niveau de lapplication cliente, qui permet la saisie et laffichage des informations, le
typededonnesUnicodedoitgalementtresupport.
LespacerclamparletypededonnesUnicodeestdeuxfoisplusimportantquepourlesdonnesnon
Unicode. Mais, ce lger dsavantage est largement compens par le temps gagn lors de laffichage des
donnes sur le poste client. En effet, avec le type de donnes Unicode, il nest plus ncessaire de raliser un
mappageentrelapagedecodeutilisedanslabasededonnespourstockerlinformation,etlapagedecode
utilisesurleposteclientpourafficherlinformation.
Leclassementcorrespondunmodlebinairedereprsentationdesdonnesetquipermetdedfinirdesrglesde
comparaisons ainsi que des rgles de tris. Par exemple, le classement permet de dfinir sur la langue franaise
commentlescaractresaccentusdoiventtreprisencomptelorsdoprationdecomparaisonetdetris.
Ilexistepardfauttroistypesdeclassements:
G les classements Windows qui sappuient sur les paramtres de langues dfinies au niveau Windows. En
sappuyantsurcetypedeclassement,lesordresdetris,decomparaisonssadaptentautomatiquementla
langueduserveur.
- 8 - ENI Editions - All rigths reserved
G Les classements binaires sont rputs pour leur rapidit de traitement. Ils sont bass sur le code binaire
utilispourenregistrerchaquecaractredinformationauformatunicodeounon.
G Les classements SQL Server sont prsents pour assurer une compatibilit ascendante avec les versions
prcdentes de SQL Server. Il est donc prfrable de ne pas faire ce choix dans le cadre dune nouvelle
installation.
Un classement doit ncessairement tre prcis lors de la cration de linstance, il deviendra le classement par
dfautdelinstanceetserautilisparlesbasesdedonnesmaster,msdb,tempdb,modeletdistribution.
Lors de la cration des bases de donnes utilisateurs, il sera possible de prciser un autre classement par
lintermdiairedelaclauseCOLLATE.
CommelesclassementscontrlentlordredetridesdonnesUnicodeetnonUnicode,ilnestpaspossible
dedfinirdesordresdeclassementincompatibles.
Fixerlesparamtresdeclassement
Il est possible de connatre le classement adopt au niveau du serveur par lintermdiaire de la fonction
SERVERPROPERTY,commeillustrdanslexemplecidessous:
- 9 - ENI Editions - All rigths reserved

Ilestgalementpossibledeconnatrelensembledesclassementsdisponiblessurleserveurenutilisantlafonction:
fn_helpcollations().

ATTENTION:lerespectdelacassesappliqueaussibienauxidentificateursquauxdonnes.Silonchoisit
lordredetribinaireaveclerespectdelacasse,alorstouteslesrfrencesauxobjetsdoiventtreralises
enutilisantlammecassequecellespcifielorsdelacrationdecesobjets.
e.Modedauthentification
LagestiondescomptesdutilisateurpeutsappuyerintgralementsurlescomptesdesutilisateursWindowsmaisil
estaussipossiblededfinirdescomptesdutilisateuretdelesgrerintgralementauseindeSQLServer.Dansce
cas, il est ncessaire de spcifier le mot de passe de lutilisateur SQL Server qui possdera les privilges
dadministrateurSQLServer.Lorsquecelaestpossible,ilestprfrabledesappuyersurlascuritWindows.
- 10 - ENI Editions - All rigths reserved
f.Configurationdumoteurdebasededonnes
La configuration du moteur de base de donnes permet de spcifier le mode scurit choisi, lemplacement des
fichiersdedonnes,ainsiquelactivationounondeloptionFILESTREAM.

DepuislongletFILESTREAM,ilestpossibledactivercettefonctionnalit.

Cesdiffrentschoixpeuventtremodifis/outrepasssparlasuitelorsdelaconfigurationduserveuroubienlors
delagestiondesfichiersrelatifsunebasededonnes.
- 11 - ENI Editions - All rigths reserved
Pourunescuritplusleveauniveaudesutilisateurs,ilestrecommanddesappuyersurlecontextedescurit
Windows et dinterdirelascuritSQLServer.Celavitera,parexemple,quedesdveloppeurscodentendurun
nometunmotdepassedansuneapplicationoubiendansunfichierdeconfiguration.
g.Synthseduprocessusdinstallation
Le processus dinstallation propose ensuite la cration de rapport derreur qui est automatiquement envoy
Microsoft.

Lesrglesdinstallationsontvrifiesafindesassurerquerienneviendrabloquerleprocessusdinstallation.
- 12 - ENI Editions - All rigths reserved

3.Gestiondurseau
SQLServerutilisedesbibliothquesrseauafindassurerlagestiondelatransmissiondespaquetsentreleserveur
et le client. Ces bibliothques rseau, existant sous forme de DLL (Dynamic Link Library), procurent toutes les
oprationsncessairespourtablirledialogueentreleserveuretleclientmmesicesdeuxprocessussetrouvent
surlemmeposte.
CesbibliothquesrseausontutilisesparlapplicationvialemcanismeIPCouCommunicationInterProcessus.
Unserveurpeuttrelcoute,simultanment,deplusieursbibliothquesetacceptedoncdesdemandesprovenant
declientsdialoguantavecdesprotocolesrseaudiffrents.Laseuleobligationpourqueleserveurpuisserpondre
auclientestquelabibliothquerseaucorrespondantcelleduclientdoittreinstallesurleserveur.
Unfoisquelesbibliothquesrseausontinstallessurleserveur,ilfautencoreconfigurerlesnetlibraryafinquele
serveurpuisselesprendreencompte.
LagestiondurseauentreleposteclientetleserveurpasseprincipalementparTCP/IP.Cestpourquoilagestionde
ceprotocoleestinclusepardfautlorsdelinstallationduserveuroubiendesutilitairesclients.

- 13 - ENI Editions - All rigths reserved


Bibliothquesdisponibles:
Canauxnomms
Les canaux nomms sont dsactivs pour toutes les ditions de SQL Server. Leur utilisation se limite au dialogue
entrelesoutilsgraphiquesetleserviceSQLServersurleposteserveur.
SocketsTCP/IP(pardfaut)
CettenetlibrarypermetdutiliserlessocketsWindowstraditionnels.
Pour pouvoir utiliser correctement la net library TCP/IP, il est important de prciser le numro de port auquel SQL
Server rpond. Par dfaut, il sagit du port 1433, numro officiel attribu par lIANA (Internet Assigned Number
Authority) Microsoft. Il est galement possible dutiliser un proxy. Dans ce cas cest ladresse du proxy qui sera
prciselorsdelaconfigurationdelanetlibraryTCP/IP.
Le port 1433 est utilisable par SQL Server si aucune autre application ou processus ne tente de lutiliser
simultanment.
Danscertainscas,commelaccsauserveurautraversdunparefeu,ilestconseilldutiliserunportlibreportantun
numroinfrieur1024.
DanslecasoSQLServerestconfigurpourutiliserunportdynamique,lenumroduportestsusceptiblede
changerchaquedmarragedeSQLServer.
4.Modedelicence
Avec lapparition des nouveaux outils de communication et des possibilits nouvelles en termes de virtualisation de
serveur ainsi que les processeurs multicurs, la gestion des licences a d voluer pour sadapter cette nouvelle
rpartition.
Ilexistetroismodesdegestiondeslicences:
G Parutilisateur
G Parposteutilispourtablirlaconnexion(PC,Agendalectronique...)
G Parprocesseur.
LutilisationdesmodesdelicenceparposteoubienparutilisateurncessiteunelicencedutilisationdumoteurSQL
Server.
Le mode de gestion de licence expos ici sapplique aux ditions Standard, Entreprise, Web et Workgroup de SQL
Server,cestdireauxditionsdeSQLServerdestinesunemiseenproduction.
La gestion des licences est un lment sensible, et il convient de sassurer que la solution retenue est
conformeauxrglesdictesparMicrosoft.Seuleunesynthsedecesrglesestprsentecidessous.
Pour des raisons de scurit, il est recommand davoir un serveur de secours. Ce serveur de secours peut tre
synchronis avec le serveur actif soit par lintermdiaire des journaux de transaction, soit parce quil fait partie du
processusdemiseenmiroir,soitcestunmembrenonactifducluster.partirdumomentoleserveurdesecours
est non actif, cestdirequaucune connexion utilisateur nestfaitedessus(mmedesfinsddition de rapport),
alorsceserveurdesecoursnencessitepasdelicenceSQLServer.Sileserveurprincipaltombeenpanne,leserveur
desecourspeutdeveniractifpendanttrentejoursentoutelgalit.
Aveccemodedegestiondeslicences,cestchaqueprocesseurduserveurquisevoitattribuunelicencedutilisation
deSQLServer.Ainsi,unnombreillimitdutilisateurspeuventseconnecterauserveursansquilsoitncessairepour
eux de possder une licence SQL Server. Mis au point au dpart pour les applications de type Internet/intranet, ce
mode de licence est galement utilisable avec nimportequeltypedapplication. Son principal avantage rside dans
unegestionsimplifiedesdroitsdutilisation.
Exemple:UneentreprisedisposedunserveurSQLet10stationsdetravaildoiventaccderceserveur.Lesstations
detravailserpartissenten2groupesde5postes:travaildejourettravaildenuit.Lespostesdecesgroupesne
peuvent se connecter au server que pendant les horaires prciss et il ne peut pas y avoir de chevauchement.
CombiendelicencesdaccsSQLServersontncessairesenmodedelicenceparprocesseur?
Rponse:unelicencedaccsestncessaire.Elleestgreparleserveuretautoriselesstationsdetravailvenirse
Licenceparprocesseur
- 14 - ENI Editions - All rigths reserved
connectersimultanmentsurleserveurSQL.
Modedelicenceparprocesseur
Danslecasdunprocesseurmulticurs,SQLServernencessitequuneseulelicenceparprocesseurquelquesoitle
nombredecursduprocesseur.
Aveccemodedegestiondeslicences,chaqueutilisateurdoitdisposerdunelicencepourtravailleravecSQLServer.
CemodedegestionvatreintressantsilesutilisateurspeuventseconnecterSQLServerparlintermdiairede
diffrentsoutils.
Lutilisation dun serveur dapplication qui gre ventuellement un pool de connexions ne rduit pas le nombre de
licencesncessaires.Cestchaqueutilisateurphysiquequiancessitunelicencedaccs.
UnemmelicencedaccsclientouCAL(ClientAccessLicense)permetdaccderdemultiplesserveurs.Leniveaude
licenceduclientdoitcorrespondreauserveurleplusexigeant.
Danslemodedegestiondeslicencesparutilisateur,ilest,enplus,ncessairedacqurirunelicencedetypeserveur
pourlamachinesurlaquellelinstanceSQLServerestinstalle.
Les utilisateurs exprims ici sont des utilisateurs physiques. Ils peuvent, mme si cela nest pas
recommandable,utilisertouslemmeutilisateurdebasededonnes.
Exemple
Danslexemplesuivant,troisutilisateursdiffrentsseconnectentauserveur.Cettesolutionncessitedonctroislicences
daccsclient.
Licenceparutilisateur
- 15 - ENI Editions - All rigths reserved

Attention,pourlditionWorkgroup,ilestpossibledacqurirdeslicencesdaccsquinautorisentquelaconnexion
desditionsWorkgroupdeSQLServer.
Aveclalicenceparposte(ouparsige),cestchaquepriphriquequitablituneconnexionunserveurSQLServer
qui possde une licence. Cette licence nest pas lie au nombre dutilisateurs qui peuvent tre amens utiliser le
poste. Ainsi, si plusieurs utilisateurs se partagent le mme poste de travail, ils peuvent utiliser la mme licence
daccs.
Muni de cette licence, un poste peut se connecter plusieurs instances SQL Server. La licence doit tre compatible
aveclinstanceSQLServerlaplusexigeante.
Danslemodedegestiondeslicencesparposte,ilest,enplus,ncessairedacqurirunelicencedetypeserveurpour
lamachinesurlaquellelinstanceSQLServerestinstalle.
Exemple
Dans lexemple suivant, deux utilisateurs se partagent le mme priphrique. Il est donc ncessaire de disposer de trois
licencesdaccsparposte.
Licenceparposte
- 16 - ENI Editions - All rigths reserved

5.Excuterleprogrammedinstallation
Le programme dinstallation situ sur le CDRom de SQL Server sexcute automatiquement ds que le CDRom est
insr dans la machine. Si la procdure dinstallation ne dmarre pas automatiquement, il convient de demander
lexcutionduprogrammeSETUP.EXEsitularacineduCDRom.
Il est possible de raliser une installation automatique. Lavantage de cette procdure est de saisir les options
installeruneseulefoisenmodeinteractifpuisdepouvoirexcutercetteinstallationsurplusieursautrespostessans
avoirressaisirlesoptionschoisies.
Toutes les options relatives linstallation sont enregistres dans un fichier qui porte lextension ini. Ce fichier est
composuniquementdelasection[Options].
Pour dfinir son propre fichier dinstallation, il faut prendre comme modle le fichier template.ini fourni sur le disque
dinstallationdeSQLServer.
Pourexcuteruneinstallationautomatique,ilfautexcuterleprogrammesetup.exeenluipassantenparamtrele
nomcompletdufichieriniutiliser.
setup.exe /settings nomCompletFichier.ini [/qn] [/qb]
nomCompletFichier.ini
Cheminabsoluetnomdufichierdeparamtrage.
/qn
Commutateurutiliserpourfaireuneinstallationcompltementsilencieuse(sansaucunebotededialogue).
/qb
Commutateurutiliserpoureffectueruneinstallationenaffichantuniquementlesbotesdedialoguequipermettent
desuivrelaprogressiondelinstallation.
Mme si cette solution est hautement performante dans le cas o des installations multiples sont prvoir, la
dfinition du fichier de configuration nest pas intuitive et il est donc ncessaire dinvestir un peu de temps pour
Installationautomatique
Syntaxe
- 17 - ENI Editions - All rigths reserved
optimisersonutilisation.
Toutes les installations automatiques sont composes de deux fichiers : un fichier de commande et un fichier
dinitialisationetdinstallation.
6.Lesbasesdexemples
Lorsdelinstallationdumoteurdebasededonnes,aucunebasedexemplenestmiseenplacepardfaut.Eneffet,
surunserveurdeproduction,lesbasesdexemplesnesontpasncessairesetnepeuventquintroduiredesfaillesde
scurit.Toutefoissurunserveurdetestoubiendeformation,cesmmesexemplesprennenttoutleursens.
La documentation en ligne sappuie sur la base AdventureWorks et ses diverses dclinaisons pour proposer des
exemples illustrant les diffrentes instructions Transact SQL. Tous les exemples de code et de bases de donns
fournisparMicrosoftsontdisponiblessurcodeplex(http://codeplex.com/SqlServerSamples).Cesexemplespermettent
dillustrerdefaonprciselesdiffrentesfonctionnalitsoffertesparSQLServer.
LabasededonnesNorthwindprsentedanslesversionsprcdentesdeSQLServeresttoujoursdisponibleetpeut
ainsitremiseenplacesurSQLServer2008.
En fait, SQL Server 2008 ne propose pas une seule base dexemple mais plusieurs en fonction de lusage que lon
souhaite en faire. La base AdventureWorks2008 correspond une base OLTP (OnLine Transactional Processing)
classique et cette base illustre les utilisations classiques dune base de donnes. La base AdventureWorksDW2008
est quant elle une base qui illustre le datawarehouse (lentreprot de donnes) et sera utile lors de tests sur la
ralisation,lagestionetlamaintenancedunentrepotdedonnesdanslecadreduneanalysedcisionnelle.Labase
AdventureWorksAS2008estquantelleaxesurAnalysisServices.Enfin,uneversionallgedelabaseOLTPest
disponiblesurlabaseAdventureWorkLT2008.
Lorsdutlchargementdelabasedexemplesouhaite,cenestpasunscriptTransactSQLquiestenregistrsurle
disque mais un fichier msi (SQL2008.AdventureWorks_OLTP_DB_v2008.x86.msi pour une plateforme 32 bits).
Lexcutiondefichierpermetunemiseenplaceaisedelabasedexemple.
Pardfaut,etpourpermettreunniveaudescuritlepluslevpossible,lecompteinvit(guest)nestpasdfini,
ceci afin dempcher les connexions anonymes. Dans le cadre dun serveur de test, il peut parfois tre intressant
dautorisercesconnexionsanonymesafindepermettreauxutilisateursdaccderlibrementcettebasedexemple.
- 18 - ENI Editions - All rigths reserved
Vrifierlinstallationetconfigurer
1.Vrifierlinstallation
Comme pour tout produit, il est important de sassurer que linstallation sest correctement excute et que le
serveurestmaintenantoprationnel.
a.Vrifierleslmentsinstalls
Par lintermdiaire de lexplorateur de fichier, il est possible de vrifier que larborescence qui regroupe tous les
fichiers ncessaires au bon fonctionnement du moteur de base de donnes est bien dfinie. Si linstallation est
excuteaveclesparamtrespardfaut,alorscettearborescenceestc:\ProgramFiles\MicrosoftSQLServer\100.
Les fichiers de donnes se trouvent quant eux dans le dossier c:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATAsaufsiuncheminautreatdfinilorsdelinstallation.

Au niveau des fichiers, il est possible de consulter le journal dinstallation (summary.txt) qui est prsent dans le
dossier c:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\LOG. La lecture de document savre
principalementutilelorsqueleprocessusdexcutionsetermineenchecpourmieuxcernerlorigineduproblme.
Ce fichier summary est gnr par chaque excution du programme dinstallation. Une nouvelle excution du
programmedinstallationvarenommer(avechorodatage)lefichiersummaryexistantafindeconserverlatracede
touteslesinstallations.
- 1 - ENI Editions - All rigths reserved

Danslecasocefichiersummary.txtnevousfournitpassuffisammentdinformation,ilestpossibledeconsulterle
fichierSQLSetupxxx.cabsitudanslemmedossier.
b.Vrifierledmarragedesservices
Pourunusageclassiquedelabase,lesdeuxservicesMSSQLServeretSQLServerAgentdoiventtredmarrset
positionnsendmarrageautomatique.LeserviceMSSQLServerreprsentelemoteurdelabasededonneset
tantqueceservicenestpasdmarrilestimpossibledeseconnecterauserveuretdetravailleraveclesdonnes
quilhberge.LeserviceSQLServerAgentprendsacharge,entreautres,lexcutionetlagestiondetoutesles
tchesplanifies.Pourgrerlesservices,ilestbiensrpossibledelefaireaveclesoutilspropossenstandard
parWindows,maisSQLServerproposegalementsespropresoutils.
- 2 - ENI Editions - All rigths reserved
Lesoutils
SQLServerdisposedenombreuxoutils.Cesoutilssontcomplmentairesetchacundentreeuxestadaptuntype
deproblmeoudaction.Ilestimportantdepossderunevuedensemblesurlobjectifvisparchacundecesoutils
afindesavoirlequelemployerpourrsoudreunproblmebienprcis.Ilestpossibledefaireiciuneanalogieavecle
bricolage, si vous ne possdez quun tournevis vous allez essayer de tout faire avec, alors quau contraire, si votre
caisseoutilsestbiengarnieilyadefortechancedytrouverloutilquirpondexactementauproblmerencontr.
PourSQLServerlapprocheestsimilaire.IlestbienentendupossibledefairequasimenttoutenTransactSQL,mais
SQLServerproposedesoutilsgraphiquesautrespourpermettredesolutionnerdesproblmesbienprcis.Lutilisation
delaplupartdentreseuxvatredtailletoutaulongdecetouvrage.Unregardglobalpermetcependantdavoir
unemeilleurevisiondelintrtprsentparchacun.
Loutil de configuration de la surface dexposition prsent dans SQL Server 2005 disparat avec SQL Server
2008maislesrglesgresparcetoutilseretrouventdanslesrglesproposesparSQLServer2008.En
effet, SQL Server 2008 propose une administration base sur les rgles. Ce point est dtaill plus loin dans cet
ouvrage.
IlsagitdeloutilprincipaldeSQLServeretilestdestinaussibienauxdveloppeursquauxadministrateurs.
SQL Server Management Studio (SSMS) est la console graphique dadministration des instances SQL Server. Il est
possibledadministrerplusieursinstanceslocaleset/oudistantesdepuiscetoutil.SQLServerManagementStudioest
galementloutilprincipaldesdveloppeursdebasesdedonnesquivontlutiliserpourdfinirlesscriptsdecration
destables,desvues,desprocdures,desfonctions,desdclencheursdebasededonnes

Cetutilitairepeuttredmarrdepuislalignedecommandeparlintermdiairedelapplicationssms.

Avec SQL Server 2008, SSMS intgre son lot de nouveauts dont la trs attendue autocompltion qui permet le
complment automatique des mots cls lors de lcriture de requte. Cette autocompltion est active avec le
traditionnelappuisurlestouches[Ctrl][Espace].Enplusdesmotscls,lesrfrencesauxtables,colonnes,nomde
procdures,fonctionssontdisponiblesautraversdelautocompltion.Cettefonctionnalitpermetdegagneruntemps
prcieuxlorsdelcrituredesscriptsenlimitantleserreursdesaisie.
Afin de faciliter la bonne gestion des bases de donnes, SQL Server Management Studio propose la gnration de
rapports.Cesrapportspermettentdavoirunevueglobaleetsynthtiquedunoudeplusieurslmentsdelabaseou
du serveur. SQL Server 2008 propose un certain nombre de rapports prdfinis mais il est possible de dfinir ses
propresrapportsencomplment.
SQLServerManagementStudio
GestionnairedeConfigurationSQLServer
- 1 - ENI Editions - All rigths reserved
LegestionnairedeconfigurationdeSQLServerpermetdegrerlensembledeslmentsrelatifslaconfigurationdes
servicesetdurseauctclientetctserver.

Les diffrents services relatifs SQL Server peuvent tre administrs directement depuis cet outil. En plus des
oprations classiques darrt et de dmarrage, il est possible de configurer le type de dmarrage (automatique,
manuel,dsactiv)ainsiquelecomptedescuritauseinduquelleservicedoitsexcuter.

Le gestionnaire de configuration permet galement de grer quels sont les protocoles pris en charge au niveau du
serveur. Il est galement possible ce niveau de modifier les proprits spcifiques chaque protocole comme le
numroduportdcouteduprotocoleTCP/IP.
Laconfigurationdesservices
ConfigurationderseauSQLServer
- 2 - ENI Editions - All rigths reserved

Cettefoiscilaconfigurationportesurlesoutilsclientinstallslocalementetplusexactementdedfinirprcismentles
protocoles leur disposition pour entrer en contact avec le serveur, mais aussi, lorsque cela savre ncessaire, la
possibilit de dfinir des alias. Cette fonctionnalit est particulirement intressante lorsque le nom du serveur est
enregistrdansuneapplicationetquilnestpaspossibleoubienfaciledemodifiercetenregistrement.Ladfinition
dunaliaspermetderedirigertouteslesdemandesversunserveurdistinct.

La capture de trace au niveau du moteur de base de donnes permet de tirer au clair de nombreux problmes de
fonctionnementencomprenantmieuxcommentlesapplicatifsclienttravaillentaveclabase.
Cet assistant permet, entre autres, partir dune charge de travail capture avec SQL Profiler de valider ou non la
structuredelabasededonnes.Enfindanalyse,lassistantvaconseillerlacration/suppressiondindexoubienle
partitionnementdetablesafindobtenirdesgainsdeperformances.
SQLCmd est un utilitaire en ligne de commande qui permet dexcuter des scripts SQL. Cet outil va tre mis
contributionlorsdelademandedexcutiondetchesadministrativesconcernantSQLServerpartirdeWindows.
CetoutilpermetdeseconnecteruneinstancelocaleounondeSQLServer.Lauthentificationcetteinstancepeut
treeffectueensappuyantsurlemodedescuritWindowsoubienSQLserver.
SQLCmdpermetdexcuterdesscriptsSQLquecesoitdesinstructionsduDML(DataManipulationLanguage)ouduDDL
(DataDefinitionLanguage).
ConfigurationdeSQLNativeClient10.0
SQLServerProfiler
AssistantParamtragedebasededonnes
SQLCmd
osql
- 3 - ENI Editions - All rigths reserved
Autreoutilenlignedecommandepourexcuterdesscripts.Cetoutilestmaintenupourdesraisonsdecompatibilit
maistantdonnquilsappuiesurlatechnologieodbc,ilestamendisparatre.
Il sagit dun utilitaire en ligne de commande qui permet dextraire facilement et rapidement des donnes depuis la
baseversunfichieroubiendefaireloprationinverse.
PermetdexcuterlenvironnementPowerShellspcifiqueSQLserver.
Cetutilitairedediagnosticpeuttreexcutafindefournirdesinformationsauservicesupport.
Cette application permet de prparer un fichier journal par sauvegarde ou copie avant de lenvoyer vers une autre
instanceSQLserver.
Commesonnomlindique,cetutilitairepermetdecomparerlecontenudedeuxtables.Ilsavreparticulirementutile
pourrsoudrelesproblmesdesynchronisationquipeuventapparatredanslecadredunerplicationdefusion.
Pour tablir la premire connexion au serveur, plusieurs outils sont disponibles. En mode graphique, il convient de
lancerSQLServerManagementStudio.Aulancementdeloutil,lafentresuivantedeconnexionestprsente.

Ilestpossibledtablirlaconnexiondepuisunoutilenlignedecommandecommesqlcmd.Lcransuivantpermetdese
connecterauserveurenutilisantlemodedescuritWindows.
bcp
sqlps
sqldiag
sqllogship
Tablediff
UtiliserunoutilclientpourseconnecterSQLServer
- 4 - ENI Editions - All rigths reserved

- 5 - ENI Editions - All rigths reserved


Laconfiguration
AvantdemettreenserviceleserveurSQL,enlerendantaccessiblepartouslesutilisateurs,ilestimportantderaliser
un certain nombre doprations de configuration du serveur et des outils dadministration client afin de se prmunir
contretouteoprationsensible.
1.Lesservices
Lesdiffrentscomposantsserveursexcutentsousformedeservice.Ilestdoncncessairequecesservicessoient
dmarrs afin de pouvoir travailler avec le serveur. Ces services peuvent tre grs avec le gestionnaire de
configurationdeSQLServermaisilspeuventgalementtregrscommetouslesservicesWindows.
Depuislegestionnairedeconfiguration,ilestsimpledevisualiserltatduserviceainsiquedemodifiersesproprits.

CommetouslesservicesWindows,ilspeuventtregrsdefaoncentraleauniveauduserveurWindows.

Enfin,ilestpossibledagirsurcesservicesdirectementenlignedecommandesparlintermdiairedescommandesnet
startetnetstop.Lorsdundmarrageenlignedecommande,ilestpossibledoutrepasserlaconfigurationpardfaut
du service en spcifiant la configuration utiliser sous forme de paramtres. Par exemple, loption m (net start
mssqlserverm)permetdedmarrerleserveurenmodemonoutilisateur.
Encasdeproblmededmarrage,ilestpossiblededmarrerleserveurSQLServerentantquapplicationlaidede
lexcutable sqlservr.exe. Lutilisation de cet excutable permet de dmarrer linstance en ne tenant pas compte de
touteslesoptionsdeconfigurationdfinies.
Dmarr
Lorsque le service MSSQL Server est dmarr, les utilisateurs peuvent tablir de nouvelles connexions et travailler
avec les donnes hberges en base. Lorsque le service SQL Server Agent est dmarr, lensemble des tches
planifies,desalertesetdelarplicationestactif.
Suspendu
Lesdiffrentstatsdesservices
- 1 - ENI Editions - All rigths reserved
Si le service MSSQL Server est suspendu, alors plus aucun nouvel utilisateur ne peut tablir une connexion avec le
serveur.Lesutilisateursencoursnesontpasconcernsparunetellemesure.LasuspensionduserviceSQLServer
Agentdsactivelaplanificationdetouteslestchesainsiquelesalertes.
Arrt
Larrt du service MSSQL Server dsactive toutes les connexions utilisateur et dclenche un processus de
CHECKPOINT(lensembledesdonnesvalidesprsentesenmmoiresontredescenduessurledisqueduretlepoint
de synchronisation est inscrit dans le journal). Un tel mcanisme permet dassurer que le prochain dmarrage du
serveur sera optimal. Cependant le service attend que toutes les instructions en cours soient termines avant
darrterleserveur.LarrtduserviceSQLServerAgentdsactivelexcutionplanifiedetouteslestchesainsique
lagestiondesalertes.
2.SQLServerManagementStudio
SQL Server Management Studio est loutil de gestion graphique de SQL Server qui permet de raliser les tches
administrativesettouteslesoprationsdedveloppement.Lutilisationdummeoutilpermetderduireladistinction
entrelesdeuxgroupesdutilisateursquesontlesadministrateursetlesdveloppeurs.Enpartageantlemmeoutil,il
estplusfaciledeconnatrecequilestpossibledefaireduneautrefaon.
Pour pouvoir naviguer dune instance lautre de SQL Server, ventuellement sur des serveurs diffrents, il est
ncessairedenregistrerchaqueserveurdanslaconsoledadministration.Cetteinscriptionnestpasncessairepour
linstancelocaledeSQLServer,carlorsdelacrationdelinstance,lesinformationsrelativescetteinstanceontt
ajoutesdansSQLServerManagementStudio.
LafentreServeursInscritspermetdeconnatrelalistedesserveursinscritsdansSQLServerManagementStudio.
Sicettefentrenestpasvisible,ilestpossiblededemandersonaffichageparlemenuAffichageServeursinscrits
ouparleraccourciclavier[Ctrl][Alt]G.
Lesserveurssontregroupspartype.Pourchaquetypeilestpossiblededfinirdesgroupesdeserveursafindeles
regroupersurunautrecritre,parexemplelemplacementphysique.Lesgroupesdeserveursnontaucuneinfluence
surlinscriptionduserveur.IlestpossiblededplacerunserveurversungroupeenslectionnantloptionTches
Dplacerversdepuislemenucontextuelassociauserveur.Paranalogie,ilestpossibledecomparerlesgroupesde
serveursdesdossiersetlesserveursinscritsdesfichiers.Lesfichiersnesontpasaffectslorsquilssontdplacs
dundossierunautre.Ilenestdemmepourlesinscriptionsdeserveur.Lesdossierssontdfinispourregrouper
lesfichierssuivantunecertainelogique,cestexactementlerlequejouentlesgroupesdeserveurs.

Pour inscrire un nouveau serveur depuis SQL Server Management Studio, il faut slectionner loption Nouvelle
inscription de serveurdepuislemenucontextuelassociaunud Local Server GroupsdanslafentreServeurs
inscrits.
Inscrireunserveur
- 2 - ENI Editions - All rigths reserved

Labotededialoguequipermetderaliserlinscriptionestcomposededeuxonglets.Lepremierongletpermetde
complter toutes les informations gnrales de linscription comme le nom du serveur, mais galement le type
dauthentificationutilispourtablirlaconnexionsurleserveur.
DepuisSSMSilestpossibledinscriredesserveursSQLServer,AnalysisServices,SQLServerCompactEdition,
ReportingServicesetIntegrationServices.

- 3 - ENI Editions - All rigths reserved


LeboutonTesterpermetdesassurerquelaconnexionchoisiepermetbiendetravaillersurleserveurslectionn.
Ilestpossibledenregistrerunserveuravecunnomdiffrentdeceluiduserveur.

Lesecondongletpermet,quantlui,defixerdesoptionsplusavancescommelabasededonnespardfautou
bienletypedeprotocolerseauutilispourtablirlaconnexionavecleserveur.
Pourdesraisonsdescurit,ilestprfrabledechoisirlorsquecelaestpossiblelemodedauthentification
Windows.
Lors de linscription du serveur, il possible de slectionner certaines options comme le dlai dexpiration de la
connexion.

Pourfaciliterletravaildeladministrateur,lesbasesdedonnessystmesontregroupesdansundossier.Ainsi,ce
sont les bases de donnes des utilisateurs qui sont visibles au premier plan. Cette sparation permet de ne pas
encombrerlaconsoleparlesbasessystmequinontdimportancequepourSQLServer.
- 4 - ENI Editions - All rigths reserved

Le mme type de sparation est effectu sur les bases entre les tables systme et les tables cres par les
utilisateurs.Cesontcesderniresquicontiennentlesinformationsetsurlesquellestousleseffortsdadministration
vontporter.
3.Configurationduserveur
Avant douvrir plus librement laccs au serveur et de permettre aux utilisateurs de venir travailler sur le serveur, il
convientdesurveillerattentivementlesdeuxpointssuivants:
Cetteproccupationconcerneuniquementlesserveursquisontconfigursenmodedescuritmixte.Sicechoixa
t fait au cours de linstallation, il faut sassurer que le mot de passe de ladministrateur SQL Server (sa) est
suffisammentfort.Sicenestpaslecas,ilestalorsncessairedelemodifier.
Lors de linstallation de SQL Server deux utilisateurs sont prdfinis. Le premier est le groupe local des
administrateurs(utilisaveclascuritWindows),lesecondestlutilisateursa.Cesdeuxutilisateursprsententdes
droitsdadministrateurduserveurSQL.LutilisateursasappuiesurlescuritSQLServeretsonmotdepasseat
demanddurantlaprocduredinstallation.
Si lors de linstallation, seul le mode de scurit Windows a t activ, alors la connexion sa est non active. Il est
ncessaire de dfinir un mot de passe fort avant dactiver la connexion. Cependant la connexion ne pourra tre
utilisequesileserveurestconfigurenmodedescuritmixte.
Deuxpossibilitsseprsentent.
Motdepassedeladministrateur
ParSQLServerManagementStudio
- 5 - ENI Editions - All rigths reserved

Lesressourcesdelamachinesontgresdynamiquement.Cettegestionautomatiquedesressourcespermetdoffrir
lesmeilleuresfonctionnalitspossiblesduserveurtoutenralisantunminimumdetchesadministratives.Toutefois,il
ParletransactSQL
Gestiondesressources
- 6 - ENI Editions - All rigths reserved
peut parfois tre intressant de grer manuellement certaines ressources afin de raliser une optimisation de
lutilisationdesressourcesduserveur.QuelquesunsdecesrglagespeuventtreralissaumoyendeSQLServer
ManagementStudio.

Pouraccderlatotalitdesparamtresduserveur,ilfaututiliserlaprocdurestockesp_configure.

Si une option est modifie laide de la procdure sp_configure, elle ne prendra effet que lors du prochain
- 7 - ENI Editions - All rigths reserved
redmarrageduserveurSQL.Ilestpossibledappliquerlamodificationdefaonimmdiateenexcutantlacommande
RECONFIGUREWITHOVERRIDE.
4.LagestionduprocessusSQLServer
Pourlesystmedexploitation,chaqueapplicationsexcutesousformedeprocessus.Chaqueprocessusdisposede
ces propres threads qui correspondent aux units de travail que le systme dexploitation doit soumettre au
processeur.Aunprocessuscorrespondtoujoursaumoinsunthread.
Chaque instance SQL Server gre ellemme ses propres threads et gre leur synchronisation sans passer par le
noyauWindows.LobjectifdeSQLServerestderpondreefficacementetrapidementdesdemandesdemontesen
charge brusque et soudaine. Afin dtre toujours disponible, SQL Server gre son propre pool de threads dont le
nombre maximal est contrl par le paramtre max worker threads. Avec la valeur par dfaut (0) SQL Server se
charge de grer luimme ce nombre de threads mais il est galement possible de fixer le nombre maximum de
threads.Cesthreadsvontavoirpourobjectifdetraiterlesrequtesdesutilisateurs.Etantdonnquunutilisateurne
travaille pas 100 % de son temps sur le serveur, il doit lire ou bien modifier les donnes avant de soumettre une
nouvellerequte,ilestprfrablepourSQLServerdepartagerunmmethreadentreplusieursutilisateurs.
Lavaleurmaximaledeceparamtretaitde255avecSQLServer2000.Aussidanslecadredunemigration
deserveurestilrecommanddepositionnercettevaleur0.
Windowsproposegalementdegrerdesfibresquireprsententuneunitdetravailpluslgrequunthread.Ilest
possible de demander SQL Server de travailler avec ces fibres en lieu et place des threads. Ce paramtrage
seffectueavecloptiondeconfigurationlightweightpooling.Cependant,lactivationdecetteoptionrendimpossible
lutilisationdecodeCLRdansSQLServer.Dautre part, lactivationdecetteoptionsetraduiraparungainsignificatif
de performance uniquement sur des serveurs massivement multiprocesseurs avec un taux dutilisation des
processeursimportant.
Dans le cadre dune architecture multiprocesseurs et souvent multiinstance, il est possible laide de loption de
configuration affinity de spcifier les processeurs utiliser pour chaque instance. Cette option contient une valeur
binaireouchaquebitreprsentelautorisation(1)ounon(0)dutiliserunprocesseur.
Enfinpourordonnancerlexcutiondesdiffrentsthreads,Windowsaffectechaqueprocessusuneprioritvariantde
1(lemoinsprioritaire)31(leplusprioritaire).Cettegestiondeprioritneconcernepaslesprocessussystme.Par
dfaut,leprocessusSQLServerreoitunniveaudeprioritgal7,cestdireunprocessusnormal.Ilestpossible
de donner une priorit suprieure par lintermdiaire de loption de configuration priority boost. Cette option peut
savrerparticulirementintressantelorsqueplusieursinstancesSQLServersexcutentsurlemmeposteetque
lonsouhaiteenfavoriserune.

5.Lagestiondelammoire
- 8 - ENI Editions - All rigths reserved
Pardfaut,SQLServergredynamiquementlaquantitdemmoiredontilabesoin.Ilestdailleursrecommandde
conserver une gestion dynamique de la mmoire qui permet une rpartition optimale de la mmoire entre les
diffrentsprocessussexcutantsurleserveur.
Sur plateforme 32 bits, SQL Server est capable dexploiter les extensions AWE (Address Windowing Extensions) afin
dadresserjusqu64GodeRAM.
Ilestimportantqueleserveurdisposedunequantitdemmoiresuffisantecarcelapermetdeminimiserlenombre
de lectures physique et de favoriser les lectures logiques. Plus ces dernires sont nombreuses, meilleurs sont les
tempsderponseduserveur.Leratioentrecesdeuxtypesdelecturespeuttreobtenuautraversdelanalyseurde
performances.CepointestabordauchapitreOptimisationAnalyseurdeperformances(MoniteurSystme).
Pour permettre la gestion dynamique de la quantit de mmoire utilise, SQL Server sappuie sur lAPI (Application
ProgrammingInterface)degestiondelammoiredeWindowsafindacqurirlemaximumdemmoiresanspourautant
privlesystmedelaquantitdemmoirequiluiestncessaire.
Cettegestiondynamiquepeuttrelimiteenutilisantlesparamtres minservermemoryet maxservermemory.
Linstance SQL Server, mme si elle est peu utilise, conservera toujours la quantit de mmoire spcifie par min
servermemory.Encasdechargedetravail,ilestpossibledacqurirdelammoire,sansjamaisdpasserlavaleur
spcifieparmaxservermemory.

LapriseenchargedelammoireAWEestpossibleenconfigurantleparamtreaweenableddelafaonsuivante:
- 9 - ENI Editions - All rigths reserved

- 10 - ENI Editions - All rigths reserved


Leservicedetexteintgral
Leservicederecherchedetexteintgralapourobjectifdamliorerlapertinenceetlavitessedesrequtesmenessur
les champs qui contiennent des textes de grandes dimensions, cestdire sur des colonnes de type char, nchar,
varchar, nvarchar, varbinary et xml. Dans le cas o la table possde de nombreuses lignes, une requte avec
loprateurlikepeutprendreplusieursminutespoursexcuter.Silacolonnedisposedunindexdetexteintgral,alors
lextractiondeslignesdemandequelquesinstants.
La mise en place dun tel service, utilis pour lindexation, linterrogation et la synchronisation ncessite la prsence
dune cl unique (ou cl primaire) sur toutes les tables qui sont inscrites en vue dune recherche de texte intgral.
Lindexdetexteintgralconserveunetracedetouslesmotssignificatifsquisontemploysainsiqueleuremplacement.
Pourquelarecherchesoitpertinenteetrapide,seulslesmotschargsdesensdoiventtreindexs.Pouridentifierles
mots dnus de sens, SQL Server va utiliser une liste des mots vides. Cette liste est conserve directement dans la
basededonnes.Toutefois,commecetteincorporationdelalisteestunespcificitdeSQLServer2008,danslecas
dunemigrationdepuisSQLServer2005,cettelisteestconservesouslaformedefichierexterne.
Cettelistedesmotsvidespeuttremodifielibrementafindyajouterlesmotsvidesspcifiquesuneentrepriseou
bienuncontextedetravail.Parexemple,lenomdelasocitpeuttreconsidrcommeunmotvidecarilyadefortes
chancesquilapparaissetrsfrquemment.
Leservicederecherchedetexteintgralsappuiesurquelquestermesbienprcispourdcriresamiseenplaceetson
fonctionnement:
G Index de texte intgral : stocke les informations relatives aux mots significatifs. Cest partir de ces
informationsquelesrecherchessonteffectues.
G Cataloguedetexteintgral:associuneinstancedeSQLServer,lecataloguepeutcontenirde0nindex.
G Analyseurlexical:enfonctiondelalangueetdessesrgleslexicales,lanalyseurlexicalvadfinirlesjetons.
G Jeton:ilsagitdunechanedecaractres(biensouventdesmots)reprparlanalyseurlexical.
G Gnrateurdeformesdrives:enfonctiondelalangue,legnrateurdeformesdrivespermetdegrerles
diffrentesformesquepeutprendreunterme,commeparexemplesaconjugaisonpourunverbeoubienson
accordpourunnomouunadjectif.
G Filtre:cetlmentpermetdextraireletextepartirdunfichierspcifique(.docparexemple)etdenregistrer
cetextedansunecolonnedetypevarbinary(max)parexemple.
G AnalyseouAlimentation:ilsagitduprocessusquipermetdinitialiseretdemaintenirjourlindex.
G Motsvides:ilsagitdunelistedemotsquinesontpasporteursdesenspourlesrecherchesenmodetexte.
Cette liste de mots est spcifique chaque langue. Lobjectif recherch est de rduire le nombre de mots
traiterenliminanttouslesmotsdeliaison,lesarticlesoudestermesdnusdesensparrapportaucontexte,
parexemplelenomdelentrepriseoubienunacronymecourammentutilis.
AvecSQLServer2008,leservicederecherchedetexteintgralestentirementsupportparleserviceMSSQLServer.
Ceserviceestgalementdisponiblepourtouteslesbaseshbergessurleserveur.
LactivationdelapriseenchargedeserviceauniveaudelabasenestplusdactualitavecSQLServer2008.

Larecherchelinguistiquesurdesdonnestexte,nestpossiblequesurlestablesactivespourlarecherchedetexte
intgral. La recherche linguistique, contrairement loprateur LIKE qui agit sur les caractres, effectue une
comparaisonsurlesmotsetsurlesexpressions.
La mise en place dune recherche de texte intgral dans une base de donnes impose deffectuer les oprations
suivantes:
G prciserlestablesetlescolonnesquidoiventtreinscritesdanslarecherchedetexteintgral.
G raliser lindexation des donnes des colonnes inscrites et remplir les index de texte intgral avec les mots
Implmentation
- 1 - ENI Editions - All rigths reserved
porteursdesens.
G excuterlesrequtessurlescolonnesinscritespourlarecherchedetexteintgral.
G sassurerquetouteslesmodificationseffectuessurcescolonnesonttpropagesjusquauxindex.
Cesindexnesontpasremplisentempsrelmaispluttdefaonasynchronecar:
G letempsdindexationestgnralementbeaucouppluslong.
G lesrecherchesdetexteintgralsont,enrglegnrale,beaucoupmoinsprcisesquelesrecherchesenmode
standard.
LamiseenplacesurservicedetexteintgralpeuttreeffectuedepuisSQLServerManagementStudiosousformede
scriptsTransactSQL.
Lestapesdetravailralisersont:
G creruncatalogue
G crerunouplusieursindexquiutilisentcecatalogue
G dfinirlalistedesmotsvides.
LamiseenplaceduservicedetexteintgralpeuttreralisesoitenmodegraphiquedepuisSQLServerManagement
Studio, soit par lintermdiaire de scripts Transact SQL, soit par lintermdiaire de lassistant Indexation de texte
intgral.Comptetenudufaitquelacrationdecetypedindexestuneoprationponctuelle,lutilisationdelassistant
peutsavrerfortutile.Cetassistantestaccessibledepuislemenucontextuelassocilatablesurlaquellelindexva
tredfini.

CettemiseenplacepeutgalementtreralisetapepartapeparlintermdiairedecommandesTransactSQL.
Miseenplace
- 2 - ENI Editions - All rigths reserved
1.Lecatalogue
Lors de sa cration initiale lindex de texte intgral va tre un consommateur important au niveau des lectures et
crituressurledisquedur.Ilestdoncncessairequelindexsoitdfinisurunsystmedefichierperformant.Lindex
detexteintgralvadonctredfinisuruncataloguequiluiestpropre.Lecatalogueestobligatoirementdfinisurla
mmebasequelindex.Siunindexesttoujoursdfinisuruncatalogue,uncataloguepeutcontenirunouplusieurs
index.Lorsquelatableindexecontientdetrsnombreuseslignes,ilestsouhaitablequelindexdetexteintgralsoit
dfini sur son propre catalogue. Par contre, si les tables possdent un nombre raisonnable de lignes, alors il est
possiblededfinirunnombreraisonnabledindexsurunmmecatalogue.Afinquelecataloguesoitoptimis,ilest
souhaitablederegroupersurunmmecataloguedesindexquipossdentunefrquencedemisejoursemblable.
LecataloguevatregraveclesinstructionsTransactSQLCREATEFULLTEXTCATALOG,ALTERFULLTEXTCATALOGet
DROPFULLTEXTCATALOG.SeulelacrationduncatalogueaveclinstructionCREATEFULLTEXTCATALOGestdtaille
ici.
Ilnestpaspossiblededfinirdescataloguessurlesbasesmaster,modelettempdb.

CREATE FULLTEXT CATALOG nomCatalogue


WITH ACCENT_SENSITIVITY = {ON|OFF}]
[AS DEFAULT]
[AUTHORIZATION nomPropritaire ]
nomCatalogue
Nomducatalogue.Chaquecatalogueporteunnomunique.Lenomestlimit120caractresetrespectelesrgles
denommagedesidentifiantsdansSQLServer.Lenomducatalogueserautilispournommerlefichier.Lenomdu
fichierdoitgalementtreunique.
groupeDeFichiers
Nomdugroupedefichiersauquellecataloguevaappartenir.
racineChemin
Permetdeprciserledossierquivacontenirlefichiersysft_nomCatalogueassociaucatalogue.
ACCENT_SENSITIVITY
Permetdeprcisersilecataloguedoitdistinguerounonlescaractresaccentus.
AS DEFAULT
Lecataloguedevientlecataloguepardfautpourlesindexdetexteintgralquipeuventtredfinisparlasuite.
nomPropritaire
Danslecasolecrateurducataloguenestpaslepropritaire,ilestpossiblededevinerlenomdupropritaire.
Exemple
Danslexemplesuivant,uncataloguedetexteintgralestdfinisurlabaseGescomaveccommerpertoireracineledossier
C:\ProgramFiles\MicrosoftSQLServer\MSSQLIO.MSSQLCSERVER\MSSQL\FTData.
- 3 - ENI Editions - All rigths reserved

LesoptionsONFILEGROUPetINPATHsontencoreprsentesauniveaudelinstruction,maissontsanseffet
lorsquelontravaillesuruneinstanceSQLServer2008.
Pour effectuer les oprations de modification et de suppression, il faut utiliser les instructions ALTER FULLTEXT
CATALOGetDROPFULLTEXTCATALOG.
Il est galement possible de raliser ces oprations depuis la console SQL Server Management Studio en
slectionnantloptionNouveaucataloguedetexteintgraldepuislemenucontextuelassociaunudStockage
Cataloguedetexteintgraldanslexplorateurdobjets.

Lindexuniqueutilisparlindexdetexteintgralpourrfrencerleslignesdinformationsdevratrelepluscompact
possibleafindelimiterlachargedetravail.Unedonnedetypeentire(int)convientparfaitement.
LindexdetexteintgralvapouvoirtredfiniaveclinstructionCREATEFULLTEXTINDEX.
Cetypedindexpeutbiensrtredfinisurdescolonnesquicontiennentdesdonnesdetypetextemaisgalement
descolonnesdetypevarbinary(max)quistockentdestextesdirectementdansunformatdedonnesspcifique(par
exemple.doc).Cetypedindexpeutgalementtredfinisurdescolonnesdetypexml.
CREATE FULLTEXT INDEX ON nomTable
[(nomColonne [TYPE COLUMN typeDocument]
Lindexdetexteintgral
- 4 - ENI Editions - All rigths reserved
[LANGUAGE indicateurDelangue] [,...])]
KEY INDEX nomIndex
[ON nomCatalogue]
[WITH CHANGE_TRACKING
{MANUAL | AUTO | OFF [, NO POPULATION]}]
[,STOPLIST={OFF|SYSTEM|nomListeMotsVides}]
nomTable
Ilsagitdunomdelatablesurlaquellelindexdetexteintgralestdfini.
nomColonne
Nomdelacolonneoudescolonnesquiparticipentlindex.
typeDocument
Lorsquelacolonneindexecontientundocument,cettecolonnepermetdeconnatreletypedudocument.
indicateurDelangue
Permetdespcifierlalanguedanslaquellelesinformationssontenregistresdanslacolonneindexe.Cetindicateur
nestutilequedanslecasolalangueutilisepourstockerlesinformationsestdiffrentedelalanguepardfaut
dfinieauniveaudeSQLServer.Parexemple,pourindexerunecolonnequicontientdestextesenanglaisalorsque
SQLServerestconfiguraveclefranaiscommelanguepardfaut.
nomIndex
Nomdelindexuniquequiserautilispourrfrencerleslignesdinformationsdanslatable.
nomCatalogue
Nomducatalogueutilisparlindex.Siaucunnomdecataloguenestspcifi,alorscestlecataloguepardfautqui
estutilis(celuicraveclaclauseASDEFAULT).
WITH CHANGE_TRACKING
Cette clause permet de spcifier comment les modifications apportes aux colonnes indexes sont reportes dans
lindex.
STOPLIST
Cette option permet de prciser la liste de mots vides associs lindex, soit aucune (OFF), soit la liste par dfaut
(SYSTEM),soitunelistepersonnalisedontilfautdonnerlenom.
Exemple
Danslexempleprsentcidessouslacolonnedsignationdelatabledesarticlesestindexe.Cetindexutiliselecatalogue
catalogueLivreetsuitlesmodificationsdefaonautomatique.
- 5 - ENI Editions - All rigths reserved

Depuis SQL Server Management Studio, il est possible dafficher les dtails de cet index par lintermdiaire des
propritsducatalogue.
Les proprits du catalogue sont accessibles en slectionnant Proprits depuis le menu contextuel associ au
catalogue.

2.Lalistedemotsvides
- 6 - ENI Editions - All rigths reserved
Cette liste permet de dfinir quels sont les mots vides de sens et donc ne pas prendre en compte au niveau de
lindex.
CettelistedemotsvidesestdisponibleuniquementpartirdeSQLServer2008.Donclabasededonnesdoittre
enniveaudecompatibilit100pourtreenmesuredelutiliser.
CREATE FULLTEXT STOPLIST nomListeMotsVides
[FROM {nomListeMotsVidesSource|SYSTEM STOPLIST}]
[AUTHORIZATION propritaire];
nomListeMotsVides
Ilsagitdunomaffectlalistedemotsvidesencoursdecration.
nomListeMotsVidesSources
Il sagit de lidentifiantdune liste de mots vides dont le contenu va tre copie dans la liste de mots en cours de
cration.
SYSTEM STOPLIST
Aveccetteoption,lalistedesmotsvidesestdfiniepartirdelalistesituedanslabaseresource.
propritaire
Ilsagitcettefoisdespcifierexplicitementquivatrelepropritairedecetteliste.Cetteoptionnestncessaireque
danslecasolexcutantdelacommandenestpaslepropritairedelindex.
Exemple:
LexemplesuivantmontrelacrationdunelistedemotsvidesdepuisunscriptTransactSQL.

CettelistepeutgalementtregredepuisSQLServerManagementStudiopartirdunudStockageListedes
motsvidesdetexteintgral.
Exemple
LemotLivreestajoutlaliste.
Syntaxe
- 7 - ENI Editions - All rigths reserved

Une fois dfinie, cette liste de mots vides peut tre modifie laide de linstruction ALTER FULLTEST STOPLIST et
supprime avec DROP FULLTEXT STOPLIST. La commande ALTER permet de modifier la liste aussi bien en ajoutant
quensupprimantdesmotsdnusdesens.
ALTER FULLTEXT STOPLIST listeMotsVides
ADD nouveauMot LANGUAGE langue;
listeMotsVides
Reprsentelidentifiantdelalistemodifier.
nouveauMot
Correspond au nouveau terme dnu de sens. Les termes ajouts ainsi reprsentent des mots spcifiques un
vocabulairemtierquiestprsenttropsouventpourrendresontindexationefficace.
langue
Reprsentelalanguepourlaquellecemotestdfini.LecodagedesdiffrenteslanguesenregistresdansSQLServer
estdisponibleeninterrogeantlatablesys.syslanguages.
Exemple
Danslexemplesuivantlemotlivreestconsidrcommednudesenspourlalanguefranaise.
Syntaxe
- 8 - ENI Editions - All rigths reserved

Aprslacrationdelindex,ilestncessairedeplanifierlavalorisationdelindexaveclesdonnes.Cetteopration
nestpasfaitedefaoninstantane,carellepeutncessiterunefortechargedetravailpourleserveur.Ilestdonc
prfrabledeplanifierleremplissagedelindexunepriodedemoindreactivit.
Il existe trois faons diffrentes dinitialiser et de tenir jour lindex complet, bas sur les modifications ou sur une
basedetempsrgulire.
Linitialisation complte de lindex est sans doute la faon la plus naturelle de travailler avec les index car tous les
termessontindexsdefaonglobale,soitlorsdelacrationdelindex,soitbassurlhorodatageincrmentiel.
Aveclemodederemplissagebassurlesmodifications,SQLServergardeunetracedetouteslesdonnesajoutes
oubienmodifies.Lereportdecesmodificationsverslindexdetexteintgralpeuttreeffectudefaonmanuelle,
souslaformedescriptavecuneexcutionplanifie,oubiendefaoncontinue.
Enfin,leremplissagebassurlhorodatageincrmentiel,sappuiequantluisurunevaleurdetypetimestamp.Lors
de lajout dinformation dans la table, la colonne de type timestamp est valorise. Si la table ne possde pas de
colonnedetypetimestamp,ilnestpaspossibledemettreenactioncetypederemplissage.lafinduprocessusde
remplissagelavaleurtimestampcouranteestconservedanslesmtadonnesainsilorsduprochainprocessusde
remplissage,ilserapossibledeprendreencompteuniquementlesdonneslesplusrcentes.
Ilestpossiblededfinircetteoprationpartirdelafentredespropritsducataloguecommeillustraveclcran
suivant.
Initialiserlindex
- 9 - ENI Editions - All rigths reserved

Cette opration peut galement tre faite en Transact SQL avec linstruction ALTER FULLTEXT INDEX ON nomTable
START FULL POPULATIONpouruneinitialisationcomplte.Cetteinstructionpossdediffrentesoptionsquipermettent,
parexemple,dactiveroudedsactiverlindex.
Lutilisationdesindexdetexteintgralseffectueaumoyendedeuxprdicats:CONTAINSetFREETEXTquipeuvent
treutilissdansnimportequelleclauseWHERE.IlexistegalementdeuxfonctionsTransactSQLquiramnentun
ensembledelignesetpeuventtreutilisesdansuneclauseFROMdunerequteSELECT,savoir,CONTAINSTABLE
etFREETEXTTABLE.

3.Retrouverlesinformationsrelativesauxindexdetexteintgral
Toutes les informations relatives ces index peuvent tre retrouves en interrogeant les diffrentes vues du
Utilisationauseindesrequtes
- 10 - ENI Editions - All rigths reserved
cataloguesystme.
Parmitoutescesvues,lestroisprsentescidessoussontfrquemmentutilises.
sys.fulltext_index_catalog_usages
permetdobtenirlalistedescataloguesdfinis.
sys.fulltext_index_column
permetdidentifierlescolonnesquiparticipentunindexdetexteintgral.
sys_dm_fts_index_population
permetderecueillirlesinformationsderemplissagesurlesindexactifsdetypetexteintgral.
- 11 - ENI Editions - All rigths reserved
Installeruncomposant
IlestpossibledemodifierleschoixinitiauxralisslorsdelinstallationdeSQLServerpourdemanderlinstallationde
nouveauxcomposantsnonslectionnsinitialement.
La procdure consiste passer par le Panneau de configuration Ajout/Suppression de programmes, puis
slectionnerlinstanceSQLServermodifier.

Lassistantdinstallationestalorsrelanc.

- 1 - ENI Editions - All rigths reserved


Notionsgnrales
LinstallationduserveurSQLralise,ilconvientdedfinirdesespaceslogiquesdestockageafinderegroupersousun
mme nom lensembledesdonnescorrespondantunmmeprojet.Cetensembleestlabase de donnes, elle va
nouspermettredetravaillerlogiquementavecdesobjetstelsquelestablessansjamaisavoirsesoucierdustockage
physique.SQLServerpermetderaliserdesassociationsentrelesfichiersphysiquesetlesbasesdedonnes.Dansce
chapitre,lacrationetlagestiondesfichiersphysiquesserontabordesenmmetempsquelesbasesdedonnes.
1.Liensentrebasededonnesetorganisationphysique
Lorsdelacrationdunebasededonnes,ilestncessairedeprciseraumoinsdeuxfichiers.Lepremierservira
stockerlesdonnes,ledeuximeserautilisparlejournalafindestockerlesimagesavantetaprsmodificationdes
donnes.
Cesdeuxfichierssontobligatoiresetsontpropreschaquebase.DansSQLServer,ilnestpaspossibledepartager
unfichierdedonnesoulejournalentreplusieursbases.
Sparationentrelesschmaslogiqueetphysique
2.Lanotiondetransaction
a.Questcequunetransaction?
UnetransactionestunensembleindivisibledordresTransactSQL.Soitlatotalitpeutsexcuter,soitaucunordre
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
modificationsencoursvontpersisterdansletempsounon.Afindegarantirlacohrencedesdonnes,toutesles
lignes qui sont modifies lintrieurdune transaction sont verrouilles pour quaucun autre utilisateur ne puisse
intervenir sur ces lignes. Le verrouillage est effectu automatiquement, et les verrous sont relchs lorsque
lutilisateurindiquelafindelatransaction,soitensuccs,soitenchec.Leverrouillagedesdonnesestgrde
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
grespardeslistesFIFO(PremierEntrPremierSorti).
Exemple de transaction : Un exemple connu mais reprsentatif de la notion de transaction est celui du retrait
dargentauprsdundistributeurautomatique.Latransactionestalorsconstituededeuxoprations:ledbitdu
compteetladistributiondargent.Silnestpaspossiblederaliserlunedesdeuxoprations,cestlensembledes
oprationsquidevratreannul.Ilparatdraisonnablededbiterlecomptesilasommecorrespondantenapas
- 1 - ENI Editions - All rigths reserved
tdistribuelutilisateur.
b.LesordresTransactSQL
Ilssontaunombredequatre,BEGINTRAN,COMMITTRAN,ROLLBACKTRAN,SAVETRANquiindiquentrespectivement
ledbutdelatransaction,lafinavecsuccs,lafinavecchecetladfinitiondespointsdarrt.
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,maisaussidemarquerledbutdelatransactiondanslejournaldelabasededonnes.Cettemarque
pourratreexploitelorsdunprocessusderestaurationdesdonnespourrestaurerlatransaction.
BEGIN { TRAN | TRANSACTION } [nomTransaction]
[ WITH MARK [ description ] ]
[;]
Exemple
Danslexemplesuivant,unenouvelletransactionestdmarre.

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
permettrelannulationjusquunpointdarrtprcis,ilssontgnralementidentifisparunnom.
SAVE { TRAN | TRANSACTION } {nomPointArret}[;]
Exemple
Danslexemplesuivant,lepointdarrtP1estdfini,aprslajoutdunnouveauclient.
BEGINTRAN[SACTION]
SAVETRAN
- 2 - ENI Editions - All rigths reserved

Linstruction ROLLBACK permet dannuler une partie ou la totalit de la transaction, cestdire des modifications
intervenuessurlesdonnes.Lannulationpartielledunetransactionnestpossiblequesidespointsdarrtontt
dfinislaidedelinstructionSAVETRAN.Ilnestpaspossibledarrterlannulationentredeuxpointsdarrt.
ROLLBACK { TRAN | TRANSACTION }
[nomTransaction|nomPointArret][;]
Exemple
Dans lexemple cidessous, les clients sans commande sont supprims, puis une requte compte le nombre de clients
dfinisdanslabase.Enfin,lasuppressionestannuleparlintermdiairedelinstructionROLLBACKquiannuletoutesles
modificationseffectuessurlesdonnesdepuisladfinitiondupointdarrtP1.
ROLLBACKTRAN[SACTION]
- 3 - ENI Editions - All rigths reserved

Cette instruction permet de mettre fin avec succs une transaction, cestdire de conserver lensemble des
modificationseffectuesdanslatransaction.Cestsimplementlissuedelatransactionquelesmodificationssont
visiblesparlesautresutilisateursdelabasededonnes.
COMMIT { TRAN | TRANSACTION } [nomTransaction] [;]
Exemple
Lesmodificationssontvalidesetlatransactionprendfin.

COMMIT
- 4 - ENI Editions - All rigths reserved
Pour SQL Server, si la transaction nest pas commence explicitement par la commande BEGIN TRAN, alors toute
instructionSQLconstitueunetransactionquiestcomite(valide)automatiquement.
Siaucoursdunetransactionexplicite,leclientloriginedelatransactionromptbrutalementsaconnexion
avecleserveur,alorslatransactionestannule(ROLLBACK)automatiquement.
3.Lesfichiersjournaux
a.Lerle
Lesfichiersjournauxpermettentdestockerlesimagesavantetaprsmodificationdesdonnescontenuesdansla
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
oprationsdegrandeenvergure,commelacrationdunindex,sontmentionnesdanslejournal.Lejournalsera
utilis principalement lors des oprations de restauration automatique suite un arrt brutal du serveur, ou bien
lorsdesoprationsdesauvegardeslorsquecesderniressappuientsurlejournal.Ilseragalementutilislorsque
labaseparticipelarplication.
Le but du journal est de permettre au serveur de toujours garantir la cohrence des donnes, cestdire 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
synchronisationSitelnestpaslecas,touteslestransactionsvalides(COMMIT)sontrejouestandisquetoutesles
transactionsnonvalidessontannules(ROLLBACK).
b.Lefonctionnement
Fonctionnementdujournal
LorsquunordreSQLesttransmisauserveurSQL,cederniervachercherlexcuterleplusrapidementpossible.
Aprs analyse de lordre et mise en place du plan dexcution, si les donnes concernes par lordre ne sont pas
djprsentesenmmoire,alorslemoteurSQLvalirelesfichierssurledisquedurafindytrouverlesinformations
ncessaires.Unefoisprsentesenmmoire,lesmodificationspeuventtreapportesauxdonnes.Lamodification
esttoujoursenregistredanslejournalavantdtrerellementeffectuesurlesdonnesdelabase.Unteljournal
estappeljournalcritureanticipe.
- 5 - ENI Editions - All rigths reserved
Dunefaonlogiquetouteslesinformationssontenregistreslesuneslasuitedesautresdanslejournal.Chaque
informationestparfaitementidentifieparsonLSN(LogSequenceNumber)ounumrosquentieldenregistrement
danslejournal.Chaqueenregistrementdanslejournalcontientgalementlidentifiantdelatransactionlorigine
delamodificationdesdonnes.Touslesenregistrementsdunemmetransactionnesontdoncpasenregistrsde
faoncontigu.
Les fichiers journaux sont situs, par dfaut, dans le rpertoire C:\Program Files\ Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\Data, et portent lextension *.ldf. Il sagit dune extension
recommandequinestnullementobligatoire.Lejournalpeuttreconstitudunouplusieursfichiers,lataillede
ces derniers pouvant tre fixe ou variable automatiquement ou de faon manuelle. La gestion des fichiers sera
abordedanscechapitredanslapartieBCrer,greretsupprimerunebasededonnes.
Le journal des transactions peut tre constitu de plusieurs fichiers physiques. La gestion du journal est faite de
faonindpendantedecelledesdonnes.SQLServergreuncachedcriturespcifiqueaujournal.
Enfonctiondelutilisationfaitedesinformationsprsentesdanslejournal,ilestpossibledetronquerrgulirement
lejournaldefaontoujoursutiliserlesmmesfichiersphysiques,toutencontrlantlespacedisqueoccup.

c.Lespointsdesynchronisation
Rgulirement, SQL Server va dclencher un point de synchronisation. Il consiste faire redescendre sur fichier
touteslesdonnesstockesenmmoirequicorrespondentdesdonnesvalides.Lespointsdesynchronisation
sont galement appels CHECKPOINT. Le nombre de donnes touches entre deux points de synchronisation va
dterminerletempsderestaurationautomatiquesuiteunarrtbrutalduserveur.
- 6 - ENI Editions - All rigths reserved
Principedefonctionnementdunpointdesynchronisation
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
lintermdiairedelinstructionCHECKPOINT.
CHECKPOINT [tempsRealisation]
tempsRealisation
Permetdeprciserletempsaccordensecondepourterminerlepointdesynchronisation.CestSQLServerquise
chargededclencherlepointdesynchronisationdefaonavoirtermindanslestemps.

- 7 - ENI Editions - All rigths reserved


SeulunarrtdelinstanceparlintermdiairedelinstructionTransactSQLSHUTDOWNWITHNOWAITpermet
darrterlinstancesansdclenchementdunpointdesynchronisation.
4.Lesfichiersdedonnes
a.Leurrle
Chaquebasededonnespossdeaumoinsunfichierdedonnes.Cefichiervacontenirlensemble des donnes
stockes dans la base. Chaque fichier de donnes ne peut contenir que des donnes en provenance duneseule
base,ilyadoncspcialisationdesfichiersparrapportlabasededonnes.
b.Lastructuredesfichiersdedonnes
Lesfichiersdedonnessontstructurspourrpondredemanireoptimumtouteslessollicitationsdelapartdu
moteuretsurtoutpourtrecapablesdestockerplusdedonnesenoptimisantlespacedisqueutilis.
Pour optimiser lespace dont il dispose, le serveur va formater les fichiers de donnes de faon maitriser 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
accordsauxfichiers.SQLServerraliselemmetypedetravailsurlesfichiersdedonnes,puisaccordelespace
disponibleauxdiffrentestablesetindex.
Avantdepouvoirtravailleravecunfichierdedonnes,SQLServervastructurerlefichierenledcoupantenblocou
pagede8Ko.Lataillede8KoestfixeparSQLServer,defaonrduirelespertesdespacetoutensimplifiantles
oprationsdallocation,maisaussidelectureetdcriture.LapagereprsentelunitdetravaildeSQLServer.Cest
toujoursunepageentirededonnesquiestremonteenmmoireetcesttoujoursunepagequiestcritesurle
disque. Il nestpaspossiblederemonterenmmoirecache,unepartiedunepage.Bienentendu,unepagepeut
contenirplusieurslignesdunetableoubienplusieursentresdindexettouteslesinformationssontremontesen
uneseulelecturedisque.
Cettetaillede8Kopermetgalementdegrerdesbasesdedonnesdeplusgrandetailleavecunnombredeblocs
moindre.
Enfin, pour viter la fragmentation des lignes de donnes sur plusieurs blocs, une ligne doit toujours tre
entirementcontenue(horstypetextetimage)dansunbloc.Lataillemaximaleduneligneestdoncde8060octets.
Cettevaleurde8060octetsestlgrementinfrieure8KocarSQLServerrservequelquesoctetspourgrerlen
ttedelapageafindenmaitriserlagestion.
Siplusieurslignessontstockesdanslammepage,elleslesontdefaonsquentielle.Encasdechangementde
tailledeslignes,SQLServergredynamiquementledplacementdeslignesdanslapageoubienlamiseenplace
dunpointeurversuneautrepageafindelirelafindelalignededonnes.
tantdonnquelapageestlunitdetravaildeSQLServer,chaquepagecontientuntypebienprcisdedonnes.
Ilestpossiblededistinguerlestypesdepagesuivants:
G donnes:cespagescontiennentdesinformationsauformatnumrique,texteoubiendate.
G Texte/image:cespagescontiennentsoitdestextesvolumineux,soitdesobjetsauformatbinaire.
G Index:cespagescontiennentlesentresdesindex.
G GAM/SGAM:ouGlobalAllocationMapetSharedGlobalAllocationMap.Cespagescontiennentdesinformations
relativeslallocationdesextensions.
G PFS : ou Page Free Space. Ces pages contiennent les informations relatives lallocation des pages et
lespacedisponiblesurcespages.
G IAM:ouIndexAllocationMap.Cespagescontiennentlesinformationsrelativeslutilisationdepagesparles
tablesetlesindex.
Lespages
- 8 - ENI Editions - All rigths reserved
G BCM:ou BulkChangeMap.Cespagescontiennentlalistedesextensionsmodifiespardesoprationsde
copieenblocdepuisladerniresauvegardedujournal.
G DCM:ouDiffrentielChangeMap.Cespagescontiennentlalistedetouteslesextensionsmodifiesdepuisla
derniresauvegardedelabase.
Ledcoupageenblocdesfichiersdedonnes
Lesextensionssontdesregroupementslogiquesde8blocscontigus,ellesontdoncunetaillede64Ko(8x8Ko).
Lerledesextensionsestdviterunetropgrandedispersiondesdonnespourunmmeobjetauseindesfichiers
dedonnes.
Il existe deux types dextension : les extensions mixtes et les extensions propres ou uniformes. Ces deux types
dextensionpermettentdelimiteraumieuxlaconsommationdespacedisqueparunetableenfonctionduvolumede
donnesstocker.
Au dpart, les extensions sont communes plusieurs tables ou plusieurs index. Lorsquun des objets dfinis sur
lextensiondemandelaplace,SQLServeroctroiedelaplaceblocparbloctantquelobjetnutilisepas8blocs.Ds
quunobjetfranchitcettebarrire,SQLServerluioctroiedelaplaceextensionparextension.Lavantage de cette
mthodeestdviterdeperdredelaplaceinutilementaveclestablesouindexcontenantpeudedonnes.
Siunobjetoccupeplusde64Kodinformation,alorslaplaceluiseraaccordeextensionparextension.Chacunedes
extensionstantspcialisepourunobjet,leslecturesdisqueserontdautantplusrapidescartouteslesdonnes
sontstockesdefaoncontiguparpaquetsde64Ko.
Lesextensions
Lesextensionsmixtes
Lesextensionsuniformes
- 9 - ENI Editions - All rigths reserved
Lallocationdesextensions
c.Lefonctionnement
Chaquebasepossdeaumoinsunfichierdedonnes,cefichierestspcifiqueunebase.Soncheminpardfaut
est C:\Program Files\Microsoft SQL Server\MSSQL10. MSSQLSERVER\MSSQL\Data. Le premier fichier de donnes
dunebaseportelextensionmdf,touslessuivantsportentlextensionndf.Cesextensionssontrecommandesmais
nesontpasobligatoires.

- 10 - ENI Editions - All rigths reserved


Crer,greretsupprimerunebasededonnes
Unebasededonnesgreunensembledetablessystmeetdestablesutilisateurs.Lesinformationscontenuesdans
cestablessystmereprsentent,entreautres,ladfinitiondesvues,desindex,desprocdures,desfonctions,des
utilisateursetdesprivilges.Lestablesutilisateursvontcontenirlesinformationssaisiesparlesutilisateurs.
UneinstanceSQLServernepeutpascontenirplusde32767basesdedonnes.

1.Crerunebasededonnes
La cration dunebasededonnesestunetapeponctuelle,raliseparunadministrateurSQLServer.Avantde
tenterdecrerunebasededonnes,ilestimportantdedfiniruncertainnombredlmentsdefaonprcise:
G lenomdelabasededonnesquidoittreuniquesurleserveurSQL,
G latailledelabasededonnes,
G lesfichiersutilisspourlestockagedesdonnes.
Pourcrerunenouvellebasededonnes,SQLServersappuiesurlabaseModel.CettebaseModelcontienttousles
lmentsquivonttredfinisdanslesbasesutilisateurs.Pardfaut,cettebaseModelcontientlestablessystme.Il
estcependanttoutfaitpossibledajouterdeslmentsdanscettebase.Touteslesbasesutilisateurscresparla
suitedisposerontdeceslmentssupplmentaires.
Unebasepeuttrecrededeuxfaonsdiffrentes:
G parlintermdiairedelinstructionTransactSQLCREATEDATABASE
G parlintermdiairedeSQLServerManagementStudio.
Unebasededonnesesttoujourscomposeauminimumdunfichierdedonnesprincipal(extensionmdf)etdun
fichierjournal(extensionldf).Desfichiersdedonnessecondaires(ndf)peuventtredfinislorsdelacrationdela
baseoubienultrieurement.
Cette opration de cration de base de donnes affecte la base Master. Une sauvegarde de cette base systme
savredoncncessairepourtreenmesuredetravailleraveclanouvellebasesuiteunerestauration.
LesinformationsconcernantlesfichiersdedonnessontenregistresdanslabaseMasterainsiquedanslefichier
primairedelabasededonnes.
a.LasyntaxeTransactSQL
CREATE DATABASE nomBaseDeDonnes
[ ON
[PRIMARY] [ <spcificationFichier> [,n]]
[LOG ON < spcificationFichier > [,n]]
]
[ COLLATE classement ]
[;]
AvecpourspcificationFichierleslmentsdesyntaxesuivants:
(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
- 1 - ENI Editions - All rigths reserved
Permetdeprciserlepremiergroupedefichiersdelabase.Cegroupeestobligatoire,carlensemble 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
normalementlextensionmdf.
NAME
Cet attribut, obligatoire, permet de prciser le nom logique du fichier. Ce nom sera utilis pour faire des
manipulationssurlefichierviadescommandesTransactSQLonpensenotammentauxcommandesDBCCoula
gestiondelatailledesfichiers.
FILENAME
Spcificationdunometemplacementphysiquedufichiersurledisquedur.Lefichierdedonnesesttoujourscr
surundisquelocalduserveur.
SIZE
Attributoptionnelquipermetdeprciserlatailledufichierdedonnes.Lataillepardfautestde1Moetlataille
minimale dun fichier est 512 Ko aussi bien pour le journal que pour les fichiers de donnes. La taille peut tre
prciseenkilooctets(Kb)ouenmgaoctets(Mb,pardfaut).Latailledupremierfichierdedonnesdoittreau
moinsgalecelledelabaseModel.
MAXSIZE
Cetattributoptionnel,permetdeprciserlataillemaximaleenMgaoctets(pardfaut)ouenkilooctetsquepeut
prendrelefichier.Siriennestprcis,lefichiergrossirajusqusaturationdudisquedur.
FILEGROWTH
Il sagitdeprciserlefacteurdextension du fichier. La taille de chacunedes extensions peut correspondre un
pourcentage(%),unetailleenMgaoctets(pardfaut)ouenKilooctets.Sionprciselavaleurzro,lefacteur
dextensionautomatiquedufichierestnuletdonclatailledufichiernechangepasautomatiquement.Silecritre
FILEGROWTH est omis, la valeur par dfaut est de 1 Mo pour les fichiers de donnes et de 10 % pour les fichier
journaux.Latailledesextensionsesttoujoursarrondieaumultiplede64Ko(8blocs)leplusproche.

TouteslesoptionsdelinstructionCREATEDATABASEnesontpasexposesici.Seuleslesoptionslesplus
courammentutiliseslorsdelacrationdunenouvellebaselesont.
- 2 - ENI Editions - All rigths reserved
b.UtilisationdeSQLServerManagementStudio
Il est galement possible de crer une base de donnes de faon graphique depuis SQL Server Management
Studio.IlfautalorsslectionnerNouvellebasededonnesdepuislemenucontextuelassociaunudBasesde
donnesdepuislexplorateurdobjets,commeillustrcidessous.

SQL Server Management Studio prsente alors la bote de dialogue des proprits de la base en mode cration.
Aprsavoircompltlesoptionscommelenomdelabaseetlenometlemplacementdesfichiers,ilestpossiblede
demanderlacrationdelabase.
- 3 - ENI Editions - All rigths reserved

Cette bote de dialogue permet un utilisateur averti de crer rapidement et simplement une base de donnes,
toutenconservantlamatrisedetouslesparamtres.
Ilestpossibledecrerdesfichierssurdespartitionsbrutes.Cependant,cettetechniquenoffrequunfaiblegainde
performanceparrapportlacrationdefichierssurdespartitionsformatesNTFS.Deplus,lesfichierscrssur
des partitions brutes ne peuvent pas tre manipuls par le systme de fichiers (notamment dans le cadre des
sauvegardesbasearrte)etilnepeutyavoir,biensr,quunseulfichierparpartition.
Les fichiers de base de donnes ne doivent pas tre crs sur des partitions compresses. Dans certains cas
extrmes,ilestpossibledeplacerlesfichierssecondairessurdespartitionscompresses.Lesfichiersdoiventalors
tre en lecture seule. Par contre, les fichiers journaux ne doivent en aucun cas tre dfinis sur une partition
compresse.
2.Grerunebasededonnes
Lorsdelagestiondunebasededonnes,plusieurscritressontprendreencompte.Danscettesection,lagestion
delespaceutilisparlesfichiersphysiquesquiconstituentlabasededonnesestaborde.Lespointsprincipaux
quiconcernentlagestiondesfichierssont:laccroissementdynamiqueoumanueldesfichiers,lajoutdenouveaux
fichiers,larductiondelatailledesfichiers.
a.Augmenterlespacedisquedisponiblepourunebasededonnes
Lesfichiersdedonnesetlesfichiersjournauxstockentdelinformation.Commelabasecontientnormalementde
plus en plus dinformations, un moment donn ces fichiers seront complets. Il se posera alors le problme de
savoiroprendrelaplace.
Les diffrentes mthodes exposes cidessous pour augmenter lespace de stockage dont dispose la base sont
complmentairescarchaquemthodepossdesesavantagesetsesinconvnients.
Lorsdelacrationdelabase,ilestpossibledefixeruncertainnombredecritresconcernantlataillemaximalede
Fichieraccroissementdynamique
- 4 - ENI Editions - All rigths reserved
fichiers(MAXSIZE)etletauxdaccroissement(FILEGROWTH).Sicesoptionssontomiseslataillemaximaleestinfinie
etletauxdaccroissementestde10%pourlesjournauxet1Mopourlesfichiersdedonnes.
En utilisant des fichiers croissance dynamique, le serveur ne sera jamais bloqu par la taille du fichier sauf
saturationdudisqueoutaillemaximaleatteinte.
Lefacteurdaccroissementpermetdefixerlatailledetouslesajouts.Cettetailledoittrefixedefaonoptimale,
en prenant en compte le fait quun facteur daccroissement trop petit introduit beaucoup de fragmentations
physiquesdufichieretlesdemandesdextensiondufichiersontfrquentes,tandisquun facteur daccroissement
trop grand ncessite une charge de travail importante de la part du serveur lorsque celuici met en place la
structuredeblocsde8Kolintrieurdufichier.
Siletauxdaccroissementestfixzro,lefichiernepourrapasgrandirdynamiquement.

Laccroissementdufichierpossdetoujoursunetaillequiestmultiplede64Ko(tailleduneextension).

Sileparamtragedesfichierspermetdegrerautomatiquementlacroissancedesfichiers,cettesolutionprsente
toutdemmeledsavantagedufaitquilnestpaspossibledematriserquandcetaccroissementauralieu.Sicette
oprationintervientenpleinechargedetravail,ellerisquederalentirleserveur.
Par contre, si le paramtrage de laccroissement automatique des fichiers est ralis, cela permet en cas de
problme,quelesfichiersadaptentleurtailleenfonctionduvolumededonnes,sansbloquerlesutilisateurs.
Lacroissancemanuelledesfichierspermetdematriserlemomentolefichiervagrossiretdonclemomentole
serveur va subir une charge de travail supplmentaire pour mettre en forme le fichier sil sagit dun fichier de
donnes.
Pourpermettreunebasededonnesdobtenirplusdeplace,ilestenfinpossiblederajouterdesfichiers.Cette
solutionprsenteledoubleavantagedematriserlinstantoleserveurvasubirunesurchargedetravail,ainsique
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
donnesafindetoujoursinterveniravantquelesystmenesebloquepourunmanquedespacedisque.
Lejournaldestransactionsestcomposdeunplusieursjournaux.Afinqueleserveurfonctionnecorrectement,il
estindispensablequelejournalnesoitjamaissatur.Lejournalestvidlorsdessauvegardesetventuellement
chaquepointdesynchronisationsilabaseestconfigureenmodederestaurationsimple.
Pourassureruneplacesuffisanteaujournal,lasolutionlaplusfacileconsistepositionnerleoulesfichiersquile
composentavecunecroissanceautomatique.
Cest linstruction ALTER DATABASE qui permet deffectuer toutes les oprations relatives aux manipulations des
fichiersdebasededonnes,aussibienpourlesfichiersdedonnesquelesfichiersdujournaldetransaction.
Toutes les caractristiques des fichiers peuvent tre modifies, mais les modifications apportes doivent suivre
certainesrglescomme,parexemple,lanouvelletailledufichierquidoittresuprieurelatailleinitiale.
ALTER DATABASE nomBaseDeDonnes
MODIFY FILE (spcificationFichier)[;]
AvecpourspcificationFichierleslmentsdesyntaxesuivants:
(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|%]]
)
Fichieraccroissementmanuel
Ajoutdefichiers
Lejournaldestransactions
ModifierunfichierenTransactSQL
- 5 - ENI Editions - All rigths reserved

CestlacommandeALTERDATABASEassocieloptionADDFILEquivapermettrederajouterunfichierdedonnes
ouunfichierjournal.
Syntaxe:
ALTER DATABASE nomBaseDeDonnes
ADD FILE spcificationFichier[;]

AjouterunfichierenTransactSQL
ModifieretajouterdesfichiersdepuisSQLServerManagementStudio
- 6 - ENI Editions - All rigths reserved
Cestparlintermdiairedelabotededialoguequiindiquelespropritsdelabasededonnes,quilestpossible
degrerlesoprationssurlatailledesfichiersetsurleurtaille.

- 7 - ENI Editions - All rigths reserved

Commepourlesfichiersdedonnes,ilestpossiblederedimensionnerlefichierjournalainsiquedajouterunfichier
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
peuventtreeffectuesdepuisSQLServerManagementStudio.
Lesfichiersdujournal
- 8 - ENI Editions - All rigths reserved

b.Librerdelespacedisqueutilispardesfichiersdedonnesvides.
Lorsque les tables sont vides de leurs donnes laide des commandes DELETE ou TRUNCATE TABLE, les
extensionsoccupesparlestablesetindexsontalorslibres.Parcontre,latailledesfichiersnestpasrduite.
Pourraliserunetelleoprationilestimportantdesassurerquelatotalitdelespacelibreestregroupeenfin
de fichier. Une fois cette opration ralise, il est possible de tronquer le fichier sans jamais redescendre en
dessousdelatailleinitiale.
LamiseenplacedelarductiondesfichierssefaitaumoyendedeuxcommandesDBCC.
Cette instruction permet de compacter lensemble des fichiers constituant la base de donnes (journaux et
donnes).Pourlesfichiersdedonnestouteslesextensionsutilisessontstockesdefaoncontiguenhautdu
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
Nomdelabasededonnessurlaquellevaporterlexcutiondelacommande
id_base_donnes
Identifiant de la base de donnes. Cet identifiant peut tre connu en excutant la fonction db_id() ou bien en
interrogeantlavuesys.databasesdepuislabasemaster.
0
Permetdeprciserquelexcutionporterasurlabasecourante.
SHRINKDATABASE
- 9 - ENI Editions - All rigths reserved
pourcentage_cible
Permetdeprciserenpourcentagelespacelibresouhaitdanslefichieraprscompactage.
NOTRUNCATE
Permet de ne pas rendre au systme dexploitationlespace libre obtenu aprs compactage. Par dfaut, lespace
ainsiobtenuestlibr.
TRUNCATEONLY
Permet de librer lespace inutilis dans les fichiers de donnes et compacte le fichier la dernire extension
alloue.Aucunerorganisationphysiquedesdonnesnestenvisage:dplacementdeslignesdedonnesafinde
complteraumieuxlesextensionsutilisesparlobjet.Dansuntelcas,leparamtrepourcentage_cible estignor.
Cette instruction, semblable DBCC SHRINKDATABASE permet de raliser les oprations de compactage et
rductiondefichierdedonnesparfichier.
Syntaxe:
DBCC SHRINKFILE ([nom_fichier|id_fichier]
{[[,taille_cible]
[,{NOTRUNCATE|TRUNCATEONLY}]]|EMPTYFILE}
taille_cible
Permetdeprciserlataillefinalesouhaiteexprimeenmgaoctetssousformedenombreentier.Siaucunetaille
nestspcifie,latailledufichierestrduitesonmaximum.
EMPTYFILE
Cettecommandepermetderaliserlamigrationdetouteslesdonnescontenuesdanslefichierverslesautres
fichiersdummegroupe.Deplus,SQLServernutilisepluscefichier.Ilestalorspossibledelesupprimerdelabase
dedonneslaidedunecommandeALTERDATABASE.
NOTRUNCATE
Permet de ne pas rendre au systme dexploitationlespace libre obtenu aprs compactage. Par dfaut, lespace
ainsiobtenuestlibr.
TRUNCATEONLY
Permet de librer lespace inutilis dans les fichiers de donnes et compacte le fichier la dernire extension
alloue.Aucunerorganisationphysiquedesdonnesnestenvisage:dplacementdeslignesdedonnesafinde
complteraumieuxlesextensionsutilisesparlobjet.Dansuntelcasleparamtretaille_cibleestignor.
Exemple:
SHRINKFILE
- 10 - ENI Editions - All rigths reserved

LataillefinaledoittresuprieurelatailledelabaseModelpluslatailledesdonnes.
Avantderaliseruneoprationdecompactage,ilestprudentderaliserunesauvegardecompltedela
basededonnescompacterainsiquedelabaseMaster.
LesinstructionsDBCCSHRINKDATABASEetDBCCSHRINKFILEsexcutentenmodediffr,ilestdoncpossibleque
latailledesfichiersnediminuepasdefaoninstantane.
SeulelinstructionDBCCSHRINKFILEpermetderduirelatailledunfichierunetailleinfrieurecelleprciselors
de la cration du fichier. Evidemment, il nest pas possible de descendre en dessous de la taille occupe par les
donnes.
c.Configurationdelabasededonnes
Il est possible de paramtrer de nombreuses options au niveau de la base de donnes. Ce paramtrage est
possiblesoitaveclinstructionALTERDATABASEenTransactSQL,soitdepuislafentredespropritsdelabase
dans SQL Server Management Studio. Tous les paramtres lists cidessous sont fixer pour chaque base de
donnes.Ilnestdoncpaspossibledefixerdesoptionssurplusieursbasesdedonnesenuneseulecommande,
tandisquilestpossibledeprciserplusieursoptionsdunebaseenunecommande.
Sicertainschoixdoiventtreadoptspartouteslesbasesutilisateur,ilestprfrabledechangerlesoptionsdela
baseModel,ainsitoutenouvellebaseutilisateur,fonctionneraaveclesparamtresdfinisdansModel.
ALTER DATABASE nomBaseDeDonnees
SET option [;]
Parmitouteslesoptionsdisponibles,ilestpossibledenisolerquelquesunes:
Option Descriptif
AUTO_SHRINK{ON|OFF} Sicetteoptionestactivelesfichierssontrduitsdsquilsdisposentdeplus
de25%despacelibre.
READ_ONLY Permetdepositionnerlabasededonnesenmodelectureseule.
- 11 - ENI Editions - All rigths reserved
LesoptionsAUTO_CREATE_STATISTICSetAUTO_UPDATE_STATISTICSneconcernentpaslestablessystme
oubienusageinterneSQLServercommeparexemplelesindexXML,lesindexdetexteintgral,les
filesdattentesServiceBroker.Pourtoutescestableslesstatistiquessontcresetmisesjourquellequesoit
lavaleurdesoptionsAUTO_CREATE_STATISTICSetAUTO_UPDATE_STATISTICS.

LafonctionDATABASEPROPERTYEXpermetdeconnatrelavaleuractuelledeloptionquiluiestpasseen
paramtre.
Pourrglerlesparamtresdelabaseilestpossibledepasserpar:
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
contextuelassocilabasededonnes.
READ_WRITE Labasededonnesestpositionneenmodelecture/criture.
SINGLE_USER Seulunutilisateurpeuttravaillersurlabasededonnes.
RESTRICTED_USER Seulslesutilisateursmembresdesrlesdb_owner,dbcreatoretsysadmin
peuventseconnecterlabasededonnes.
MULTI_USER Cestlemodedefonctionnementstandarddunebase,enautorisantplusieurs
utilisateurstravaillersimultanment.
AUTO_CREATE_STATISTICS
{ON|OFF}
LorsquecetteoptionestpositionneONlesstatistiquesmanquanteslorsde
loptimisationdelarequte,sontcalculesdefaonautomatique.
AUTO_UPDATE_STATISTICS
{ON|OFF}
LorsquecetteoptionestpositionneON,lesstatistiquesobsoltessont
calculesdefaonautomatique
SQLServerManagementStudio
- 12 - ENI Editions - All rigths reserved

ALTERDATABASE
- 13 - ENI Editions - All rigths reserved

Avantdefixerunnouveauparamtragedelabasededonnes,ilestimportantdeconnatreleparamtrageactuel.
Laconnaissancedeceparamtragepeutgalementaiderlacomprhensiondufonctionnementdelabase.Ilest
possibledelirelesvaleursdesdiffrentesoptionsdepuisSQLServerManagementStudio,maislaconnaissancedu
paramtragedelabasepeutgalementtrefaitesouslaformedescriptTransactSQL.
Pourconnatrelavaleurdunparamtre.
Optionsactuellementgres
Databasepropertyex
- 14 - ENI Editions - All rigths reserved

Si aucun paramtre nest pass, cette procdure permet de connatre lensemble des bases qui existent sur le
serveur.Lesrenseignementfournissontlenom,lataille,lepropritaire,lidentificateur,ladatedecrationetles
options.
Siunnomdebaseestpassenparamtre,laprocdurepermetdeconnatrelesinformationsgnralesdelabase
ainsiquelesnometemplacementdesfichiersdedonnesetdesfichiersjournaux.
Laprocduresp_helpdbutiliselatablesys.databasespourtablirlalistedesbasesetlesdiffrentesoptionsde
chacunedelles.

sp_helpdb
- 15 - ENI Editions - All rigths reserved
Permet de connatre lespace de stockage utilis par une base de donnes, un journal ou des objets de la base
(table...).

IlestpossibleauniveaudeSQLServerManagementStudiodobtenirunrapportsurlutilisationdelespacedisque
par les diffrentes tables de la base de donnes en cours. Pour cela, aprs stre positionn sur la base de
donnescible,ilfautslectionnerloptionRapportsRapportsstandards.ceniveau,troischoixsontdisponibles
enfonctionquelonsouhaiteunrapportglobalsurlespacedisqueutilis,unrapportdtailldelaconsommation
despacedisquepourchaquetableoubienunrapportnedtaillantquelesprincipalestablesduserveur.

sp_spaceused[nom_objet]
- 16 - ENI Editions - All rigths reserved
3.Supprimerunebasededonnes
La suppression dune base de donnes utilisateur est une opration ponctuelle qui peut tre ralise, comme la
plupart des oprations dadministration soit par SQL Server Management Studio, soit en Transact SQL. La
suppression de la base de donnes a pour consquence de supprimer tous les fichiers qui correspondent cette
base ainsi que toutes les donnes contenues dans cette base. Cette opration est irrversible et en cas de
mauvaisemanipulationilestncessairederemonterunesauvegarde.
Aprssuppressiondunebasededonnes,chaqueconnexionquiutilisaitcettebasepardfautseretrouve
sansbasepardfaut.
Afindepouvoirraliserdventuellesrestaurationsduserveur,ilestimportantdeffectuer une sauvegarde
delabaseMasteraprssuppressionduneouplusieursbasesutilisateur.
Ilnestbiensrpastoujourspossibledesupprimerunebase,lesprincipaleslimitessont:
G lorsquelleestencoursderestauration,
G lorsquelleestouverteparunutilisateur,enlectureouencriture,
G lorsquelleparticipeunepublicationdanslecadredelarplication.
Ilnestpaspossibledesupprimerlesbasesdedonnessystme.

a.TransactSQL
CestparlintermdiairedelacommandeDROPDATABASEqueserontsupprimeslesbasesdedonnes.

b.SQLServerManagementStudio
Parunsimpleclicdroitsurlabasededonnes,vousavezaccsaumenuSupprimerdanslemenucontextuel.Par
cettemthode,ilnestpossibledesupprimerlesbasesquuneparune.
Leslimites
- 17 - ENI Editions - All rigths reserved

Pour supprimer une base depuis SQL Server Management Studio, il est ncessaire de raliser les oprations
suivantes:
G Sepositionnerdanslexplorateurdobjets.
G Slectionnerlenudrelatiflabasededonnessupprimer.
G SlectionnerloptionSupprimerdepuislemenucontextuelassocilabase.
- 18 - ENI Editions - All rigths reserved
Miseenplacedegroupesdefichiers
Il est possible de prciser les fichiers de donnes utiliss par la base, mais il est malheureusement impossible de
prciser sur quel fichier est cr un objet particulier. Pour rsoudre ce problme, il existe la possibilit de crer une
table ou un index sur un ensemble de fichiers. Cet ensemble de fichiers, galement appel Groupe de fichiers, est
grassezsimplement.
Pourquoi estil ncessaire de travailler avec plusieurs groupes de fichiers? Parce quil est normal sur un systme
dexploitation de sparer les fichiers systme, des programmes et des donnes utilisateur pourquoi en seraitil
autrementdansunebasededonnes?Ilconvientdoncderegroupersurunmmegroupedefichiersdesdonnesde
mme type. Par exemple, les donnes stables (comme par exemple les clients, les articles) des donnes de type
mouvement(commeparexemplelescommandes,lesfactures) toutsimplementparcequelesvolumesnesontpas
lesmmes,lafaondetravailleravecnonplus.Ilpeuttregalementintressantdedfinirlesindexetlestablessur
desgroupesdefichiersdistinctsafinderduirelestempsdemisejourdesdonnesetdesindex.Danslecasde
donnessensibles,larpartitionpargroupedefichierspeutgalementtreconduiteparlapolitiquedesauvegarde
adopte.
1.Crationdungroupedefichiers
Avantdepouvoirutiliserlesgroupesdefichiers,ilfautlescrer.Lorsdelacrationdelabase,legroupedefichiers
PRIMARYatcr.
Cest par lintermdiaire dune commande ALTER DATABASE que lon va crer un groupe de fichiers. Et cette
commandevapermettredajouterdesfichierslintrieurdugroupe.
Syntaxe:
ALTER DATABASE nom_base_donnes
ADD FILEGROUP nom_groupe_fichier[;]
Exemple:

Depuis SQL Server Management Studio, la gestion des groupes de fichiers est ralise par lintermdiaire de la
fentredespropritsdelabase.
- 1 - ENI Editions - All rigths reserved

2.Ajoutdefichiers
LajoutdefichiersestralisparlacommandeALTERDATABASE.
Unfichiernepeutappartenirquunseulgroupedefichiers.Pardfaut,siaucungroupedefichiersnestprcislors
delajoutdufichierlabase,ilestajoutaugroupePRIMARY.
Syntaxe:
ALTER DATABASEnom_base_donnes
ADD FILE spcification fichier
TO FILEGROUP nom_groupe_fichier
Exemple:
- 2 - ENI Editions - All rigths reserved

Lesfichiersquiparticipentungroupedefichierssontgrsdelammefaonqueceuxquiparticipentaugroupede
fichiersPrimary.
Depuis SQL Server Management Studio, la gestion des fichiers est possible depuis la fentre des proprits de la
base.

- 3 - ENI Editions - All rigths reserved


3.Utilisationdungroupedefichiers
Lutilisation dun groupe de fichiers par un objet doit tre prcise ds la cration de ce dernier. Seuls les objets
contenant de linformation sont concerns, soit les tables et les index. Linstruction ON nom_groupe_fichiers est
simplementajoutelafindelacommandeSQLetavantsonexcution.Unfichiernepeutappartenirquunetun
seulgroupedefichiers.

Pardfaut,lesobjetssontcrssurlegroupePRIMARY.

- 4 - ENI Editions - All rigths reserved


InstructionsInsert,Select...into
LinstructionSELECTINTOpermetdeprojeterlersultatdunecommandeSELECTdansunetable.Latableestcre
spcialementetdefaondynamiquepourcontenirlersultatduSELECT.
Latablecredelasortenedisposedaucunecontraintedintgrit.

La commande INSERT est galement capable de prendre en charge le rsultat dune commande SELECT afin de le
projeterdansunetablequiatcreauparavantlaidedelinstructionSQLDDLCREATETABLE.
Cettefoisci,ilesttoutfaitpossibledinclureladfinitiondecontraintesdintgritlorsdelacrationdelatable.

- 1 - ENI Editions - All rigths reserved


Structuredesindex
SQLServerproposedeuxtypesdindex:
G Lesindexorganissoucluster
G Lesindexnonorganissounoncluster.
Etantdonnquelindexestorganis(ouordonn)organisephysiquementlesdonnesstockesdanslatable,ilbien
souventassocilaclprimairedelatablecarilsagitdunedonnesstableetpeuvolumineuse.Ilnestpourtantpas
obligatoire.Ilpeutparfoistreutiledorganiserselonunautrecritre,parexemplelorsquelaclprimaireestdnue
de sens. Chaque table possde au plus un index organis.Les index non organiss, quant eux naffectent pas la
structure physique de la table. Par contre, comme ils reposent sur lorganisation physique des donnes, il est
ncessairedelesdfinirdansunsecondtemps.
1.Lesindexordonns
Ces index qui organisent physiquement la table sont constitus dun arbre dans lequel les pages de niveau feuille
contiennent les donnes de la table sousjacente. Les niveaux suprieurs de larbre permettent dordonner les
informations par rapport la valeur indexe. Lors de lajout dune ligne dinformation, cette ligne est insre en
fonctiondelavaleurdesacl.
Etantdonnquelacldelindexorganisephysiquementlatable,ilestncessairedebasercetindexsurunevaleur
stableetcestpourquoilaclprimaireesttraditionnellementretenue.
Leschmacidessousillustredefaonsynthtiquelastructuredunindexordonn.Enplusdeschanagespermettant
de parcourir larbre de bas en haut (depuis la racine vers les feuilles), il existe un double chanage permettant de
parcourirtouteslespagesdunmmeniveau.

Lindexordonnestcrpardfautlorsquunecontraintedeclprimaireestdfiniesurunetable.Siladministrateur
souhaitequeladfinitiondelacontraintenesaccompagnepasdelacrationduntelindexilluiestncessairede
spcifierlemotclNONCLUSTEREDlorsdeladfinitiondelacontrainte.
Syntaxe:
ALTER TABLE nomTable
ADD CONSTRAINT nomContrainte PRIMARY KEY
[CLUSTERED|NONCLUSTERED] (listeColonnes);
LasecondepossibilitestdedfinirunindexavecloptionCLUSTERED
Syntaxe:
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX nomIndex
- 1 - ENI Editions - All rigths reserved
ON nomTable (listeColonnes)
[ON groupeDeFichiers];
2.Lesindexnonordonns
Lautre type dindex quil est possible de dfinir au niveau de SQL Server concerne les index dits NONCLUSTERED,
cestdirequeladfinitiondecesindexnerorganisepasphysiquementlatable.Decefait,ilestpossiblededfinir
plusieursindexdecetypesurunemmetable.
Ilnestpaspossiblededfinirplusde249indexnonordonnssurunemmetable.

Si la cration dun index ordonn (CLUSTERED) est planifie pour une table, il est souhaitable que cette dfinition
intervienneavantladfinitiondesindexnonordonns(NONCLUSTERED).
Comme pour les index ordonns, ces index peuvent contenir une ou plusieurs colonnes, avec soit un tri ascendant
(par dfaut), soit descendant pour chaque colonne. Lordre de tri est spcifi laide des caractres ASC pour
ascendantoubienDESCpourdescendantderrirelenomdechaquecolonne.
Contrairement lindexordonnquidoittrepossurdesdonnesrelativementstables,lindexnonordonnpeut
tredfinisansprendreencomptelastabilitdevaleursindexes.Cestpluttlutilisationquiestfaitedesdonnes
qui va permettre de dfinir ces index. Les oprations de tri et de jointure peuvent tre trs nettement acclres
grceladfinitiondedindex.
Siunindexordonnestdfinisurunetablequipossdedesindexnonordonns,alorslesindexnonordonnssont
reconstruits.
Lescritrespermettantdedfinirounonlesindexpeuventtredfinisautraversdelassistantparamtrage
debasededonnes.LutilisationdecetoutilestdtailleauchapitreOptimisation.
Exemple:
Lexemplesuivantillustreladfinitiondunindexsurlacolonnevilledelatabledesclients.

IlestgalementpossiblededfinircetypedindexdirectementdepuisSQLServerManagementStudio.
- 2 - ENI Editions - All rigths reserved

3.Lesindexcouvrants
IlsagitcettefoisduneparticularitdeSQLServer,quiconsistedfinirdesindexquivontcontenirauniveaufeuille
lacldelindexainsiquelesvaleursissuesduneoudeplusieurscolonnes.Lobjectifdecesindexestdepermettreau
moteur SQL Server de ne parcourir que lindex, sans quil soit ncessaire daccder la table pour rpondre aux
besoinsdedonnesdunerequte.
Entermedevolumededonnesmanipuleslegainpeuttreconsquent,toutefoisilestpondrparrapportau
volumedisqueoccupmaisaussiparletempssupplmentairencessairepourmenerbienlesactionsdemisejour
(INSERT,UPDATEetDELETE).
De tels index sont dfinis laide de linstruction CREATE INDEX suivi du mot cl INCLUDE afin de prciser la ou les
colonnesinclureauniveaucolonne.
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX nomIndex
ON nomTable (listeColonnes)
INCLUDE (listeColonnes)
[ON groupeDeFichiers];
Exemple:
Danslexemplesuivant,unindexestdfinisurleprnomduclientetlenomestinclusauniveaufeuille.
Syntaxe:
- 3 - ENI Editions - All rigths reserved

4.Indexerdescolonnescalcules
Toujoursdanslobjectifderpondrerapidementauxutilisateurs,ilestpossiblededfinirdescolonnescalculesdans
unetable.Toutefoispourpouvoirtredfini,lecalculdevratrelmentaire,cestdireportantsurchaquelignede
donnesetnonpasissudunregroupement.Lesdonnesdoiventtoutesprovenirdelammetableetlafonctionde
calculdoittredterministe.
Danscecas,ilestpossiblededfinirunindexsurcescolonnescalcules.
Exemple:

5.Indexerlesvues
Les vues sont frquemment utilises dans les requtes dextractioncarellespermettent,entreautres,desimplifier
lcrituredesrequtes.Pouramliorerlesperformancesdesrequtesquiutilisentlesvues,ilestpossiblededfinir
unouplusieursindexsurlesvues.
Lepointdedpartconsistedfinirunindexordonn(CLUSTERED)uniqueafindematrialiserlavue.Parlasuitedes
indexnonordonnspeuventtredfinissurlavue.Mmelescolonnesprsentantlersultatduncalculpeuventtre
indexes.
- 4 - ENI Editions - All rigths reserved
Lasyntaxededfinitiondunindexsurunetableoubiensurunevueestexactementidentique.
Exemple:

6.LesindexXML
Comme pour les autres colonnes il est possible dindexer les colonnes de type XML. Cependant, lindexation des
donnes XML est particulire en fonction de la structure mme des donnes. Lors du traitement dune requte, les
informationsXMLsontanalysesauniveaudechaqueligne,cequipeutentranerdestraitementslongsetcouteux
lorsquelenombredelignesestimportantet/ouquandlesinformationsauformatXMLsontnombreuses.
Lemcanismehabitueldindexationquireposesurunarbrebalancvatreutilispourdfinirlindexditprincipalsur
lacolonnedetypeXML.Maislesindexquivonteffectivementpermettredacclrerletraitementdesrequtessontles
indexquivontreposersurcetindexprincipal.Cesindexsecondairessontdfinisparrapportauxtypesderequtes
frquemmentexcutes:
G indexPATHpourdesrequtesportantsurlechemindaccs
G indexPROPERTYpourdesrequtesportantsurlesproprits
G indexVALUEpourdesrequtesportantsurdesvaleurs.
IlestgalementpossiblededfinirunindexdetypetexteintgralsurlescolonnesdetypeXML.

a.IndexPrincipal
LindexprincipalreprsentelepointdedparttouteindexationdelacolonnedetypeXML.Ilnepeuttredfini
que sur une table qui possde une contrainte de cl primaire associe un index qui organise physiquement la
table.Cequiestfrquemmentlecas.
Syntaxe:
CREATE PRIMARY XML INDEX nomIndex ON table(colonneXML)[;]
Exemple:
- 5 - ENI Editions - All rigths reserved
Unindexprincipalestdfinisurlacolonnepagedelatablecatalogue.

b.Indexsecondaire
La dfinition dun index secondaire nest possible que si et seulement si un index primaire est dj dfini sur la
colonne.
LedocumentXMLnepeutcontenirque128niveauxaumaximum.Lesdocumentsquipossdentunehirarchieplus
complexesontrejetslorsdelinsertionoudelamodificationdescolonnes.
Lindexation,quantelle,portesurles128premiersoctetsdunud.Lesvaleurspluslonguesnesontpasprises
encomptedanslindex.
CREATE XML INDEX nomIndex ON table(colonneXML)
USING XML INDEX nomIndexXMLPrincipal
FOR {PATH|PROPERTY|VALUE}[;]
PATH
Permetdeconstruireunindexsurlescolonnespathetvalue(cheminetvaleur)delindexXMLprincipal.Untelindex
peutparticiperamliorersensiblementlestempsderponseslorsdelutilisationdelamthodeexist(),dansune
clausewhereparexemple.
PROPERTY
PermetdeconstruireunindexsurlescolonnesPK,pathetvaluedelindexXMLprincipal.LesymbolePKcorrespond
la cl primaire de la table. Ce type dindex est donc utile lors de lutilisation de la mthode value() dans les
requtesSQLdemanipulationdedonnes.
VALUE
PermetdeconstruireunindexsurlescolonnesvalueetpathdelindexXMLprincipal.Cetypedindexestutilisdans
lesrequtespourlesquelleslavaleurdunudestconnueindpendammentduchemindaccs,cequipeuttrele
caslorsdelutilisationdelamthodeexist()parexemple.
Exemple:
Danslexempleprsentciaprs,lestroistypesdindexsontcrsparrapportlindexXMLprincipaldfinisurlacolonne
Syntaxe:
- 6 - ENI Editions - All rigths reserved
pagedetypeXMLdelatableCatalogue.

7.Lesindexspatiaux
SQLServer2008permetdestockerdesdonnesspatialesdetypegeometryougeography.Commepourtoutesles
informations conserves pas SQL Server, le moteur se doit de fournir un accs rapide aux informations. Dans cet
objectiflesindexjouentunrlecrucial.IlestdonctoutfaitlogiquequeSQLServerproposedindexerlescolonnes
detypespatial.
La structure de ces index diffre des index classiques. Pour ce type dindex, SQL Server dfinit une structure
compatibleaveclesdonnesspatialesendfinissantunmaillagesurquatreniveauxafindaccderrapidementla
cellule souhaite. Chaque niveau correspond un maillage dfini sur 16, 64 ou 256 cellules. Chaque cellule dun
niveauestdtailleparunegrilledeniveauinfrieur.Parexemple,silechoixestfaitdetravailleravecunegrillede16
cellulesauniveau1alorsleniveau4(leplusdtaill)comportera65536cellules.Lenombredecellulesdfiniesdans
les grilles des diffrents niveaux reprsente la densit de lindex. Cette densit peut prendre les valeurs LOW (16
cellules),MEDIUM(64cellules)oubienHIGH(256cellules).
Leszonesgographiquescontenuesdanslatablesontainsiindexesetleparcoursdesdiffrentsniveauxdelindex
permetdelocaliserrapidementlaoulescellulesquicontiennentlazonecibledelarecherche.
Afindelimiterltenduedesgrillesdindex,lorsdeladfinitiondelindex,lazonegographiqueprendreencompte
pourlindexationestdfinielaidedeloptionBOUNDINGBOX.
Syntaxe:
CREATE SPATIAL INDEX nomIndex
ON nomTable(nomColonne)
WITH (
BOUNDING_BOX=(xMin, yMin, xMax, yMAX),
GRIDS(LEVEL_1=densit1, LEVEL_2=densit2, LEVEL_3=densit3, LEVEL_4=densit4)
);
Ou
CREATE SPATIAL INDEX nomIndex
ON nomTable(nomColonne)
USING {GEOMETRY_GRID|GEOGRAPHY_GRID}
WITH (
BOUNDING_BOX=(xMin, yMin, xMax, yMAX),
GRIDS(densit)
);
- 7 - ENI Editions - All rigths reserved
LoptionUSINGpermetdespcifierlorsdelacrationdelindexsilesdonnesindexessontdetypegomtriqueou
biengographique.
Comme prcis prcdemment, la densit peut prendre les valeurs LOW, MEDIUM ou HIGH. Si le niveau de densit
nestpasspcifilorsdelacrationdelindexalorsunindexestdfiniavecunedensitdetypeMEDIUMpardfaut.
Exemple:

Lesindexdetypesspatiauxpeuventtredfinissurungroupedefichiersdiffrentsdeceluiquicontientla
tableindexe.
- 8 - ENI Editions - All rigths reserved
Lepartitionnementdestablesetdesindex
Lobjectifdupartitionnementestdoffrirunemeilleuremonteenchargesurlestablestrsvolumineusesentermesde
donnesetaccdespardenombreuxutilisateurs.
Le partitionnement peut tre utile pour diviser la mthode daccs aux donnes. Par exemple, sur la table des
commandes,ilnestpossibledemodifier(update)quelescommandesdelannecomptableencours.Lescommandes
desannesprcdentesdoiventtreenlectureseule.
Lepartitionnementdunetablepermetdediviserunetabledegrandedimensionenplusieurstables.Chacunedeces
soustablesestpluspetitequelatableinitialeetdoncplusfacilegrerpourSQLServer.Cestluniondesdonnes
prsentesdanstoutescessoustablesquicorrespondlatabledorigine.
Chacune de ces soustables peut tre cre sur un groupe de fichiers diffrent, ce qui rend possible la gestion de
paramtresdestockagediffrentspourchaquepartitiondelatableinitialeetadapterainsilesconditionsdestockage
desdonnesenfonctiondeleurutilisation.
La table partitionne permet doptimiser le stockage des informations, sans que le nombre de tches administratives
supplmentairessoitimportant.Eneffet,deslmentstelslescontraintesdintgrits,lesdclencheurssontdfinisau
niveaudelatablesanstenircomptedelespacedestockagephysiqueutilis.

Larpartitiondesdonnesentrelesdiffrentespartitionsdelatableseraeffectueautomatiquementenfonctiondes
critresderpartitiondfinislorsdelacrationdelatable.
IlestgalementpossibledelaisserSQLServerrpartirautomatiquementlesdonnesentrelesdiffrentsgroupesde
fichiers. Bien que cette solution soit simple mettre en place, elle ne prsente que peu dintrt car les donnes ne
sontpasregroupessuivantdescritreslogiques.Lesextractionssontdoncrarementcentressurunseulgroupede
fichiers.
Pourpartitionnerlatable,ilestdoncncessairededfinirunefonctiondepartitionnement.Cettefonctionvaretourner
unecldepartitionnementquivatreutilisepourslectionnerlapartitionutiliserenfonctionduplandepartition
dfini.
Sideuxtablesutilisentlammefonctiondepartitionnementetlemmeschmadepartitionnement,alorslesdonnes
enrelationsserontstockessurlemmegroupedefichiers.Dansuntelcasdefigure,lesdonnessontditesalignes.
Ilestpossibledecrerdesindexsurunetablepartitionne.Lindexcrestalorspartitionn.Commesurtoutetable,il
est possible de dfinir un index organis (CLUSTERED). Si le choix de dfinir un tel type dindex est fait, alors
lorganisationphysiquedesdonnesdoittreenrelationavecleslmentspassslafonctiondepartitionnement.
Cestdire que les colonnes passes en paramtre la fonction de partitionnement doivent tre prsentes dans la
- 1 - ENI Editions - All rigths reserved
dfinition de lindex. Ainsi, lorganisation physique de la table suit la rpartition des donnes entre les diffrents
groupesdefichiers.
1.Lafonctiondepartitionnement
Cest la fonction de partitionnement qui va permettre dorienter les donnes sur un groupe de fichiers ou bien un
autre.Pourrpartirlesdonnesentrelesdiffrentespartitions,lafonctionutilisedesplagesdevaleur.Chaqueplage
estbornepardesvaleurs.Seuleslesvaleursfrontiressontindiquesdanslafonctiondepartitionnement.Dansle
casolavaleurfrontiredoittreinclusedanslaplagedevaleurinfrieure,ilfaututiliserlemotclLEFT.Lemotcl
RIGHTpermetdinclurelavaleurfrontiredanslespacesuivant.
SQLtrietoujourslesdonnesdefaonascendante.

Syntaxe
CREATE PARTITION FUNCTION nomfonction ( parametre)
AS RANGE [ LEFT | RIGHT ] FOR VALUES ( [ valeurLimite [ ,... ] ] )
parametre
Colonne de tous types sauf timestamp, varchar(max), nvarchar(max) et varbinary utilis pour calculer la cl de
partitionnement.
valeurLimite
Valeurmarquantlafrontiredechaquepartition.
Exemple
Danslexemplesuivant,unefonctiondepartitionnementestdfiniesurunevaleurdetypeentire.Cettefonctiondfinie
quatrepartitionsdiffrentes:
G 1repartitionpourlesvaleursinfrieuresougale10000.
G 2mepartitionpourlesvaleursstrictementsuprieures10000etinfrieuresougale20000.
G 3mepartitionpourlesvaleursstrictementsuprieures20000etinfrieuresougale30000.
G 4mepartitionpourlesvaleursstrictementsuprieures30000.
- 2 - ENI Editions - All rigths reserved

2.Leschmadepartitionnement
Leschmadepartitionnementvapermettredtablirunetabledecorrespondanceentrelesvaleursretournesparla
fonctiondepartitionnementetlutilisationdunepartitionoubienduneautre.Chaquepartitionvatreaffecteun
groupe de fichiers. Il est possible, bien que non recommand, dutiliser le mme groupe de fichiers pour toutes les
partitions.
Ilestgalementpossibledeprciserplusdegroupesdefichiersquenerclamelafonctiondepartitionnement.Dans
cecas,lepremiergroupedefichierssupplmentaireseramarquNEXTUSED,cestdirecommeleprochaingroupe
defichiersutilisersilafonctiondepartitionnementdfinitunenouvellepartition.
Syntaxe
CREATE PARTITION SCHEME nomSchemaPartition
AS PARTITION nomFonctionPartition
[ ALL ] TO ( { groupeDeFichier | [ PRIMARY ] } [,_] )
[ ; ]
nomSchemaPartition
Identifiantduschmadepartitionnement.
nomFonctionPartition
Nom de la fonction de partitionnement relative au schma. Un schma ne peut faire relation qu une et une seule
fonction.Parcontre,unemmefonctionpeuttreutiliseparplusieursschmas.
groupeDeFichier
Nomduoudesgroupesdefichiersutilissparlesdiffrentespartitions.
Exemple
Danslexemplecidessous,unschmadepartitionnementestdfiniparrapportlafonctiondepartitionnementdfinielors
delexempleprcdent.
- 3 - ENI Editions - All rigths reserved

3.Latablepartitionne
La rpartition des donnes entre les diffrentes partitions de la table va tre une opration transparente pour les
utilisateurs de la table. Par contre, lors de la cration de la table, il faut indiquer le schma de partitionnement
utiliser ainsi que la colonne qui sera utilise par la fonction de partitionnement, pour dcider de laffectation de la
partitionchaquelignedinformation.Letypedecettecolonnedoitparfaitementcorrespondreceluiduparamtre
delafonction.Danslecasolacolonneutilisepourlecalculdupartitionnementestunecolonnecalcule,alorselle
doittredetypePERSISTED.
Syntaxe
CREATE TABLE nomTable(
definitionColonne [,...]
) ON
nomSchemaPartition(colonneUtilisePourCalculerLaPartition)[;]
Lesinformationsdonnesicipourlestablessontgalementvalablespourlesindex.

Exemple
Dans lexemple suivant, la table TCLIENTS est dfinie en utilisant le schma de partitionnement dfini lors de lexemple
prcdent.
- 4 - ENI Editions - All rigths reserved

4.Lesindexpartitionns
Comme pour les tables, il est tout fait possible de partitionner les index. Le processus de partitionnement est le
mme, cestdire quil sappuie sur un schma et une fonction de partitionnement. Il est toutefois fortement
recommandquelindexpartitionnsoitdfinisurunetabledjpartitionneetquilsappuiesurlesmmesschmas
etfonctionsdepartitionnement.
Silacolonnedepartitionnementnefaitpaspartiedescolonnesindexesalorselleestinclusedanslindexcommeune
colonneinclusequipermetdedfinirdesindexcouvrants.
Syntaxe
CREATE INDEX nomIndex
ON nomTable(colonne1,...)
ON nomSchemaPartition(colonneDePartition);
Exemple
UnindexestdfinisurlacolonnenomlatablepartitionnTCLIENTS
- 5 - ENI Editions - All rigths reserved

- 6 - ENI Editions - All rigths reserved


Lacompressiondesdonnes
SQLServer2008donnelapossibilitpourlesditionsEntrepriseetDeveloperdactiverlacompressionauniveaudes
tables et des index. Si la compression peut tre dfinie sur des tables et index existants, il ne sera pris en compte
quaprslareconstructiondelatable(ALTERTABLEnomTableREBUILD)oubiendelindexconcern.Silacompression
delatableentranelacompressiondelindexorganis(CLUSTERED),lesindexnonorganissnesontpasaffects,etil
est ncessaire dactiver la compression sur chacun deux un par un. Dans le cas des tables partitionnes, la
compressionpeuttremiseenplacepartitionparpartition.
La compression nest possible que sur les donnes utilisateur. Les tables systme ne peuvent pas tre
compresses.
Lobjectif de la compression est de rduire lespace disque utilis par les donnes de la table. La compression des
donnesvapermettredestockerplusdelignesdinformationssurlemmeblocde8Ko.Lacompressionnepermet
pasdaugmenterlataillemaximaledeslignes.Eneffet,lemcanismedoittrerversible.
Sur des tables valorises, il est possible de connatre limpact de la compression des donnes en excutant la
procdurestockesp_estimate_data_compression_savings.
La mise en place de la compression est une opration ponctuelle. Aussi, estil prfrable de passer par lassistant
propos par SQL Server Management Studio. Au niveau Transact SQL, la compression est mise en place avec les
instructionsCREATETABLE/CREATEINDEXetALTERTABLE/ALTERINDEX.
Lassistant de compression des donnes est lanc depuis le menu contextuel associ la table en slectionnant
loptionStockageGrerlacompression.

- 1 - ENI Editions - All rigths reserved


Lencryptagedesdonnes
SQLServer2008proposedecrypterlesfichiersdedonnesetlesjournaux.Cecryptageestdynamiqueetesteffectu
lors de chaque criture sur le disque. Il est en est de mme pour loprationdedcryptage.Cettefonctionnalitde
cryptage/dcryptagetransparentestidentifiesouslenomTDEouTransparentDataEncryption.
CetteoprationdecryptageneconcernepaslesdonnesdetypeFILESTREAM.

Lamiseenplacedecetteoprationdecryptagepermetdegarantiruneopacitplusgrandedesfichiersdedonnes
etjournauxfaceauxdiffrentsoutilssystmedanalysedesfichiers,oubienpourviterundtachement/attachement
debasededonnesnonautoris.Cependantcetteoprationdecryptagenapporteaucunegarantiesupplmentaire
encequiconcernelacommunicationentreleprocessusclientetleserveur.Lorsquelecryptagedelabasededonnes
estactif,lessauvegardessontgalementcryptesaveclammecl.Ilestdoncncessairedepossdercetteclpour
treenmesurederestaurerlesdonnes.
Lecryptagedesdonnessappuiesurunecldecryptage(DEK:DatabaseEncryptionKey)quiestenregistredansla
basemasterparexemplesouslaformeduncertificat.
Avant de pouvoir mettre en place le cryptage sur une base, il faut commencer par dfinir une cl principale afin
dobteniruncertificatvalide.Lecertificatestalorsutilispourdfinirlacldecryptage.Lagnrationdecetteclpeut
treralisepardiffrentsalgorithmes.LenomdelalgorithmechoisiestpassenparamtrelinstructionCREATE
DATABASEENCRYPTIONKEY.
Exemple
Danslexemplecidessous,lecryptageestdfinisurlabaseGescom.

partirdeSQLServerManagementStudio,ilestpossibledactiverounonlapriseenchargeducryptageauniveaude
labasededonnesdepuislapageoptionsdespropritsdelabasededonnes.
- 1 - ENI Editions - All rigths reserved

Lactivationducryptagesurunebasededonnesaffectetouslesfichiersdedonnesetsiungroupedefichiersest
positionnenlectureseulealorscetteactivationchoue.
- 2 - ENI Editions - All rigths reserved
Planification
1.Dimensionnerlesfichiers
Afindvaluerlatailledesfichiersncessairesaustockagedesinformationscontenuesdanslabaseilfautprendre
encomptedenombreuxcritres.
G distinguerlestablessystmeetutilisateur,
G prendreencomptelenombredelignesdanslestables,
G recenserlesvaleurindexes(cl,nombredeligne,facteurderemplissage).
Cestaprsunefinevaluationdelaquantitdespaceoccupequilestpossibledefixerlatailleinitialedesfichiers
dedonnes.Lamthodelaplussimpleestdvaluerlalongueurmoyenneduneligne,decalculercombiendelignes
peuventtrestockesdansunblocde8Ko,etenfindetrouverlenombredeblocsncessairespourstockertoutes
les lignes de la table. partir de ce nombre de blocs utiliss par la table, il convient de prendre le multiple de 8
immdiatementsuprieurpuisdediviserpar8pourobtenirlenombredextensions.
G lactivit,
G lafrquence,
G latailledestransactions,
G lessauvegardes.
Cestlapriseencomptedecescritres,ainsiquelaconsultationdesoptionsdelabase,quivontpermettredefixer
unetailleoptimalepourlefichierjournal.Audpartilpeuttreutiledefixerlatailledujournalentre10%et25%de
latailledesdonnesdanslabase.Cepourcentageestdiminuersilabasesupporteprincipalementdesrequtes
deslectionSELECT,quinutilisentpaslejournal.
2.Nommerlabaseetlesfichiersdefaonexplicite
Ilestimportantdeprvoirlenomdelabase,lesnomslogiques,physiquesetlatailledesfichiersainsiquelagestion
dynamiqueounondelaccroissement.
3.Emplacementdesfichiers
Lemplacement des fichiers donnes et journaux doit tre spcifi avec prcision afin de rduire au maximum les
conflitsdaccsaudisque,etdefairetravaillertouslesdisquesdelamachinedefaonquitable.
4.Utilisationdesgroupesdefichiers
Ilpeuttreintressant,afindelimiterlesconflitsdaccsdisque,decrerplusieursgroupesdefichierssurleserveur
etdespcialiserchacundeux.UnbonexempleconsistelaissersurlegroupedefichiersPRIMARY,lensembledes
tablessystmedelabaseetdecrerundeuximegroupepourlestablesutilisateur.Unetellemthodepermetde
sparerlesdonnesetlestablessystme.Ilestparfoisenvisageabledecreruntroisimegroupepourlesindex.
Pourlesfichiersdedonnes
Pourlesfichiersjournaux
- 1 - ENI Editions - All rigths reserved
Introduction
Le contrle daccs reprsente une opration importante au niveau de la gestion de la scurit sur un serveur de
bases de donnes. La scurisation des donnes ncessite une organisation des objets de faon indpendante des
utilisateurs, ce qui est possible par les schmas. La scurit passe galement par un meilleur contrle des
autorisationsetlapossibilitdaccorderjustelesprivilgesncessaireschaqueutilisateurpourquilpuissetravailler
defaonautonome.
Pourlorganisationdecettepolitiquedescurit,ilfautprendreencomptelorganisationhirarchiquedeslmentsde
scurit,defaonrendrelagestiondesdroitsdaccssimpleetefficace.
SQLServersappuiesurtroislmentsclsquisont:
G lesentitsdescurit
G lesscurisables
G lesautorisations.
LesentitsdescuritsontdescomptesdescuritquidisposentdunaccsauserveurSQL.
Les scurisables reprsentent les objets grs par le serveur. Ici, un objet peut tre une table, un schma ou une
basededonnesparexemple.
Lesautorisationssontaccordesauxentitsdescuritafinquellespuissenttravailleraveclesscurisables.
Lorganisation hirarchique permet daccorder une autorisation (par exemple SELECT) sur un scurisable de niveau
lev (par exemple le schma) pour permettre lentit de scurit qui reoit lautorisation dexcuter linstruction
SELECTsurtouteslestablescontenuesdansleschma.
Lesvuesducataloguesystmepermettentdobtenirunrapportcompletetdtaillsurlesconnexionsexistantes,les
utilisateurs de base de donnes dfinis et les privilges accords. Quelquesunes de ces vues sont prsentes ci
dessous:
G sys.server_permissions:listedespermissionsdeniveauserveuretdeleursbnficiaires.
G sys.sql_logins:listedesconnexions
G sys.server_principals:entitdescuritdfinieauniveauserveur
G sys.server_role_members:listedesbnficiairesdunrledeserveur.
G sys.database_permissions:listedespermissionsetdeleurbnficiaireauniveaubasededonnes.
G sys.database_princpals:entitdescuritdeniveaubasededonnes.
G sys.database_role_members:listedesbnficiairesdunrledebasededonnes.
Pour simplifier la gestion des droits daccs, il est possible dutiliser trois types de rles. Les rles de serveur qui
regroupentdesautorisationsauniveauduserveur,cesautorisationssontvalablespourtouteslesbasesinstalles.
Lesrles de base de donnes,regroupentquanteuxdesdroitsauniveaudelabasededonnessurlaquelleils
sontdfinis.Etenfinlesrlesdapplications,dfinissurlesbasesdedonnesutilisateur,permettentderegrouperles
droitsncessaireslabonneexcutionduneapplicationcliente.
- 1 - ENI Editions - All rigths reserved
GestiondesaccsServeur
Avant de pouvoir travailler avec les donnes gres par les bases, il faut dans un premier temps se connecter au
serveurSQL.CettetapepermetdesefaireidentifierparleserveurSQLetdutiliserparlasuitetouslesdroitsquisont
accords notre connexion. Il existe dans SQL Server deux modes de gestion des accs au serveur de base de
donnes.
Attention,danscettesection,seulelapartieconnexionauserveurestaborde.Ilestimportantdebiendistinguerla
connexionauserveuretlutilisationdebasesdedonnes.Laconnexionauserveurpermetdesefaireidentifierparle
serveurSQLcommeunutilisateurvalide,pourutiliser,parlasuite,unebasededonnes:lesdonnesetlesobjets.
Lensembledecesdroitsserontdfinisultrieurement.Cesdroitssontassocisunutilisateurdebasededonnes,
pourlequelcorresponduneconnexion.
Onparleradeconnexionauserveuroudelogins.

1.ModedescuritWindows
CetypedegestiondelascuritpermetdesappuyersurlesutilisateursetlesgroupesWindowspourledomaineet
lepostelocal.SQLServerutiliselagestiondesutilisateursdeWindows(gestiondesmotsdepasse...)etrcupre
uniquementlesnomspourcrerdesconnexionsauserveur.
UnefonctionnalittrsimportantedeSQLServerestdepouvoirautoriserdesgroupesWindowsvenirseconnecter.
Lagestiondesgroupespermetderaliseruneadministrationplussouplequecelledesutilisateurs.Lamthodela
plussimplepourgrerlesconnexionsestdepasserparlacrationdungroupelocal.Cegroupelocalestautoris
seconnecterauserveurSQLetestutilispardesutilisateursoudesgroupesglobaux.
Avecunetellemthodedefonctionnement,commeunutilisateurWindowspeutappartenirplusieursgroupes,ilpeut
possderplusieursdroitsdeconnexionSQLServer.
AuthentificationWindows
En mode scurit Windows, seuls les noms dutilisateurs sont stocks. La gestion des mots de passe et de
lappartenanceauxdiffrentsgroupesestlaisseWindows.Cemodedefonctionnementpermetdebiendiscerner
les tches de chacun et de spcialiser SQL Server sur la gestion des donnes en laissant Windows grer les
utilisateurs, ce quil sait bien faire. De plus avec un tel schma de fonctionnement, il est possible dappliquer la
politique suivante : un utilisateur = un mot de passe. Laccs au serveur SQL est transparent pour les utilisateurs
approuvsparWindows.
SQLServersappuiesurlesgroupesauxquelsappartientlutilisateurlorsdelaconnexionauserveur.Sides
modifications dappartenance aux groupes sont effectues depuis Windows, ces modifications ne seront
prisesencomptequelorsdelaprochaineconnexiondelutilisateurauserveurSQL.
SQLServersappuiesurleSIDdeWindowspouridentifierlegroupe.Siungroupeestsupprimpuisrecr
dansWindows,ilestimportantderaliserlammeoprationencequiconcernelaconnexiondugroupedans
SQLServer.
2.ModedescuritMixte
LemodedescuritMixtereposesuruneauthentificationWindowspuissuruneauthentificationSQLServer.Cestce
modedauthentificationquivatredtaillici.
- 1 - ENI Editions - All rigths reserved
a.Dfinition
Ilsagitdufonctionnementleplusconnupourlascuritdesserveursdebasesdedonnes.Dansuntelmodede
fonctionnement, cest SQL Server qui se charge de vrifier que lutilisateur qui demande se connecter est bien
dfinipuisilsechargegalementdevrifierlemotdepasse.
Modedescuritmixte
Tous les utilisateurs sont entirement grs par SQL Server (nom et mot de passe). Ce type de gestion des
connexionsestbienadaptpourdesclientsquinesidentifientpasauprsdeWindows.
b.Principedefonctionnement
IlesttrompeurdecroirequenmodedefonctionnementMixteseulleserveursechargedelavrificationdesnoms
dutilisateuretdesmotsdepasse.Dansunpremiertemps,lorsquunutilisateurdurseautentedeseconnecterau
serveur SQL, un test est fait en utilisant la scurit Windows. Si lutilisateur du rseau est approuv dans SQL
Server,ousilappartientungroupequiestapprouvdansSQLServer,alorslutilisateurseraconnectauserveur
SQL. Dans le cas contraire (chec de la connexion en utilisant la scurit Windows), SQL Server se charge de
demanderunnomdeconnexionetunmotdepasse.
3.Basededonnespardfaut
Aprs la dfinition des connexions (logins) au serveur, il est important de dfinir dans les diffrentes bases de
donnesutilisateur,desutilisateursquicorrespondentcesconnexions.Lesdroitsdutilisationlintrieurdelabase
serontattribusauxutilisateursdelabase.Ilestimportantgalementdedfinirpourchaqueconnexionoulogin,une
base de donnes par dfaut. Cest sur cette base que sera positionn tout utilisateur qui utilise cette connexion.
Attention bien prendre en compte le fait que dfinir une base de donnes par dfaut ne donne pas de droits
dutilisationsurcettebase.
- 2 - ENI Editions - All rigths reserved

4.Commentchoisirunmodedescurit?
IlestpossibledemodifierlemodedescuritutilisparleserveurSQLdirectementdepuisSQLServerManagement
Studioenallantmodifierlespropritsdelinstancecommeciaprs.
- 3 - ENI Editions - All rigths reserved

Lors de linstallation du serveur SQL, deux connexions sont prdfinies, en mode Windows, le groupe local des
Administrateursestautorisseconnecter,etenmodedescuritSQLServer,lutilisateursapeutseconnecterau
serveur.CesdeuxutilisateurspossdentdesprivilgesdadministrateurduserveurSQL.
IlestrecommanddutiliserlascuritWindowsquioffreuneplusgrandesouplesseauniveaudelagestion
desutilisateurs.
5.GreruneconnexionSQLServer
tantdonnquunutilisateurWindowspeutappartenirplusieursgroupes,ilpeutsevoiraccorderplusieursfoisle
droitdeconnexionauserveurSQL.Cecipeutposerunproblmelorsquunutilisateurouungroupedutilisateursne
doit jamais pouvoir se connecter au serveur SQL. Afin de remdier ce souci, Microsoft fournit, parmi les ordres
Transact SQL pour la gestion des connexions, lordre DENY qui permet de refuser explicitement un utilisateur ou un
groupeWindows.LeDENYconstitueunrefusexpliciteetestprioritaireparrapportauxdiffrentesautorisationsde
connexion.
- 4 - ENI Editions - All rigths reserved
Crationduneconnexion
Dansleschmacidessus,ilyatroisutilisateursWindowsetdeuxgroupes.Uneconnexionatmiseenplacepourle
groupeAcces2,legroupeAcces1nepossdepasdeconnexionetlutilisateurJeanestinterditdeconnexion.
Ilfautpossderunepermissiondadministrateur(sysadmin)ouunepermissiondegestionnairedescurit
(securityadmin)pourpouvoirraliserlesdiffrentesoprationsrelativeslagestiondesconnexions.
Lesconnexions,quellessoientdetypeSQLServeroubienWindows,doiventtredfiniesauniveaudelinstanceSQL
Serverpourpermettreauxutilisateursdeseconnecter.
Lagestiondesconnexionspeuttreralisedefaongraphiqueparlintermdiaire de lexplorateurdobjetsdepuis
SQL Server Management Studio ou bien sous forme de script Transact SQL. Toutes les oprations de gestion des
connexionssontralisablesenTransactSQLaveclaidedesinstructionsCREATELOGIN,ALTERLOGINetDROPLOGIN.
Chaquesolutionpossdesesavantagesetsesinconvnients.
Lesprocduressp_addloginetsp_grantloginnedoiventplustreutilises.Ellessontencoreprsentesdans
SQLServer2008pourassurerlacompatibilitdesscripts.
Lescomptesdeconnexionsontncessairespourpermettrelaccsauserveurdebasededonnes.Toutefois,ilssont
insuffisantspourpermettredetravaillersurunebasededonnes.Ilfauteneffetleurassocierunebasededonnes
par dfaut, cestdire la base de travail par dfaut sur laquelle ils seront positionns aprs ouverture de la
connexion.Pouraccdercettebasededonnes,uncomptedutilisateurdebasededonnesdoittredfinipourla
connexionsurlabasededonnes.
a.EnmodedescuritWindows
LesnomsdesgroupesoudesutilisateursdevrontcorrespondreceuxdfinisdansWindows.
IlestpossibledecrerlesconnexionsdepuislinterfacegraphiquedeSQLServerManagementStudio,enprocdant
delasorte:
G Depuislexplorateurdobjets,seplacersurlenudScuritConnexion.
SQLServerManagementStudio
- 5 - ENI Editions - All rigths reserved
G Depuislemenucontextuelassociaunudconnexion,fairelechoixnouvelleconnexion.
Lcransuivantapparatalors.IlneresteplusquslectionnerlecomptedutilisateurWindowsoubienlegroupe
quiestautorisseconnecter.

Linterface graphique de SQL Server Management Studio permet galement de modifier simplement un compte de
connexionpartirdelafentredespropritsoubiendesupprimeruneconnexion.
CREATE LOGIN nom_connexion
FROM WINDOWS
[WITH DEFAULT_DATABASE=baseDeDonnes|DEFAULT_LANGUAGE=langue]
nom_connexion
NomdelutilisateuroudugroupeWindowsajouter.Ildoittredonnsouslaformedomaine\utilisateur.
baseDeDonnes
Prciselabasededonnesquiserautilisepardfaut.Siaucunebasededonnesnestprcise,alorslabasede
donnespardfautestlabaseMaster.
langue
Langue de travail par dfaut pour cette connexion. Cette option nest prciser que si la langue relative cette
connexionestdistinctedecelledfiniepardfautsurleserveurSQL.
Exemple:
TransactSQL
- 6 - ENI Editions - All rigths reserved

b.EnmodedescuritMixte
CommepourlascuritenmodeWindows,ilexistedeuxmoyenspourgrerlesconnexions.
Mispartlensembledesrglesdegestiondesmotsdepasse,lagestionduneconnexionenmodedescuritSQL
ServerestentoutpointsemblableceluiduneconnexionenmodedescuritWindows.
Unefoiscrs,lesdeuxtypesdeconnexionsontentoutpointidentiques.Ilnyapasunesolutionquiprsenteplus
defonctionnalitsquelautre.
PourlesconnexionsutilisantunescuritSQLServer,ilestpossiblededfinirdesrglesdegestiondesmotsde
passe.
Pour les connexions utilisant une scurit Windows, cestlesystmedexploitation qui gre les rgles de scurit
relativesaumotdepasse.
IlestpossibledecrerlesconnexionsdepuislinterfacegraphiquedeSQLServerManagementStudio,enprocdant
delasorte:
G Depuislexplorateurdobjets,seplacersurlenudScuritConnexion.
G Depuislemenucontextuelassociaunuddeconnexion,fairelechoixnouvelleconnexion.
Lcransuivantapparatalors.Ilneresteplusqudfinirlenomdelanouvelleconnexionainsiquelemotdepasse
associ.Cestgalementceniveauquepeuttreprciselapolitiquedegestiondespassesmettreenplace.
LesrglesdegestiondesmotsdepassesonthritesdecellesmiseenplacesurWindows.
SQLServerManagementStudio
- 7 - ENI Editions - All rigths reserved

Linterface graphique de SQL Server Management Studio permet galement de modifier simplement un compte de
connexionpartirdelafentredespropritsoubiendesupprimeruneconnexion.
CREATE LOGIN nom_connexion
WITH {PASSWORD=motDePasse |motDePasseHach HASHED}[MUST_CHANGED]
[,SID=sid |
,DEFAULT_DATABASE=baseDeDonnes |
,DEFAULT_LANGUAGE=langue |
,CHECK_EXPIRATION={ON | OFF} |
,CHECK_POLICY={ON | OFF}
,[CREDENTIAL=nom_credit]]
nom_connexion
NomdelaconnexionquiseradfiniedansSQLServer.
motDepasse
Mot de passe associ la connexion. Ce mot de passe est stock de faon crypte dans la base Master et il est
vrifi lors de chaque nouvelle connexion au serveur. Il est obligatoire de dfinir un mot de passe pour chaque
connexion.
motDePasseHach
Ilsagiticideprciserquelachanefourniecorrespondlaversionhachedumotdepasse.Cenestdoncpasle
motdepassetelquelutilisateurlesaisit,maislemotdepassetelqueSQLlestockequiestfourni.
MUST_CHANGED
TransactSQL
- 8 - ENI Editions - All rigths reserved
Avec cette option SQL Server demande lutilisateur de saisir un nouveau mot de passe lors de sa premire
connexion au serveur. Cette option nest possible que si CHECK_ESPIRATION et CHECK_POLICY sont actives
(positionnesON).
baseDeDonnes
Prciselabasededonnesquiserautilisepardfaut.Siaucunebasededonnesnestprcisealorslabasede
donnespardfautestlabaseMaster.
langue
Langue de travail par dfaut pour cette connexion. Cette option nest prciser que si la langue relative cette
connexionestdistinctedecelledfiniepardfautsurleserveurSQL.
CHECK_EXPIRATION
Si cette option est positionne ON (OFF par dfaut), elle indique que le compte de connexion va suivre la rgle
relativelexpirationdesmotsdepassedfiniesurleserveurSQL.Lactivationdecetteoptionnestpossiblequesi
CHECK_POLICYestgalementactive.
CHECK_POLICY
Activepardfaut,cetteoptionpermetderpercuterauniveaudeSQLServerlesrglesdegestiondesmotsde
passedfiniesauniveaudeWindowssurlepostequihbergelinstanceSQLServer.
CREDENTIAL
Permet de relier la connexion un credential cr prcdemment par lintermdiaire de linstruction CREATE
CREDENTIAL.
Exemple
Danslexemplesuivant,laconnexionPIERREestcreaveclemotdepassesecret.Lutilisateurnedevrapaschangerson
motdepasseetsabasededonnespardfautestconfigure.

SQLServerdonnelapossibilitdecrerdesconnexionsauserveurbasessurdescertificats(CERTIFICATE).Ces
certificatspermettentdidentifierdefaonsreunutilisateurensebasantsurdiffrentesinformationstellesque:
G uneclpublique
Enutilisantuncertificat
- 9 - ENI Editions - All rigths reserved
G uneidentificationtellequelenometladresseemail
G unepriodedevalidit.
Pourtretoutfaitprcis,lescertificatsdeSQLServersontconformesaustandardX.509.
LacrationduncertificatdansSQLServerpeutsappuyersuruncertificatdfinidansunfichierouunassemblyou
biendemanderSQLServerdegnrerlesclspubliquesetprives.
Lescertificatsdescuritvontpermettredesapplicationset/oudesservices,douvrirunesessionscurisesurle
serveur. Ce type douverture de session par un service est utilis par le service Service Broker (dtaill chapitre
ServiceBrokerdecetouvrage)quiutiliseuncertificatpourposterunmessagesurunebasedistante.
6.Informationsdidentification
Ces objets permettent des connexions en mode de scurit SQL Server daccder des ressources externes au
serveur de base de donnes. Les informations didentification (credentials) vont donc contenir un nom de compte
Windows et un mot de passe. Les connexions SQL Server sont relies un credential par lintermdiaire de
linstructionCREATELOGINoubienALTERLOGIN.
La modification et la suppression sont possibles par lintermdiaire des instructions ALTER CREDENTIAL et DROP
CREDENTIAL.
Syntaxe
CREATE CREDENTIAL nomDuCredit
WITH IDENTITY = identit [, SECRET = secret];
nomDuCredit
Permetdidentifierlecredentialdefaonuniqueauniveauduserveur.Cetidentifiantnepeutpascommencerparle
caractre#.Lescredentialssystmescommencenttoujoursparlescaractres##.
identit
Nom du compte Windows qui sera associ au credential et permettra laccs des ressources en dehors de SQL
Server.
secret
Optionnel,ceparamtrepermetdespcifierunmotdepassepourpouvoiraccderdesressourcesexternes.
Exemple
UncredentialestcretilcorrespondaucomptedutilisateurAntoinedfiniauniveaudeWindows.
- 10 - ENI Editions - All rigths reserved

Il est possible davoir toutes les informations relatives aux credentials dj dfinis sur le serveur en
interrogeantlavuesys.credential.
Lagestionduncredentialdefaongraphiqueestpossibleenprocdantdelafaonsuivante:
G Depuislexplorateurdobjets,sepositionnersurlenudSecuritInformationsdidentification.
G Depuis le menu contextuel associ au nud Informations didentification, demander la cration dun
credentialenchoisissantloptionNouvellesinformationsdidentification...
Exemple
Fentredecrationdunnouveaucredential
SQLServerManagementStudio
- 11 - ENI Editions - All rigths reserved

7.Activeretdsactiveruneconnexion
Suruneconnexiondfinie,ilestpossibledeladsactiverafindedsactivertemporairementsonutilisation.Sitoutes
lesinformationsetpropritsdelaconnexionsontconserves,ilnestpaspossibledutiliserlaconnexiondsactive
pourseconnecterSQLServer.Ladsactivationdeconnexionestutilepourrenforcerlascuritsurdescomptesde
connexion qui, bien que dfinis, ne sont pas utiliss ou bien lorsque ladministrateur dfinit au pralable des
connexions.Ilneluiresteraplusquactiverlaoulesconnexionslorsquelebesoinseraprsent.
DepuislafentredespropritsdelaconnexionsurlapageEtat,ilestpossibledactiver,dedsactiverlaconnexion.
SQLServerManagementStudio
- 12 - ENI Editions - All rigths reserved

LactivationetladsactivationduneconnexionseffectuentparlintermdiairedelinstructionALTERLOGIN.
Syntaxe
ALTER LOGIN nomConnexion {ENABLE|DISABLE}[;]
Exemple
LaconnexionPierreestdsactive.
TransactSQL
- 13 - ENI Editions - All rigths reserved

- 14 - ENI Editions - All rigths reserved


Gestiondesutilisateursdebasededonnes
Aprs la dfinition des connexions (login) au niveau du serveur, il est ncessaire de dfinir des utilisateurs dans les
diffrentesbasesdedonnes.
Cest au niveau des utilisateurs de base de donnes que seront attribus les droits dutilisation des objets dfinis
danslabasededonnes.Lorsdeladfinitionduneconnexion,labasededonnespardfautpermetdepositionner
le compte de connexion sur une base de donnes pour commencer travailler. Cependant, la connexion ne pourra
rellementtravaillersurlabasequesilexisteuncomptedutilisateurdfiniauniveaubaseetassocilaconnexion.
Cestunpointdepassageobligatoire,saufsilaconnexionsestvueattribuedesprivilgesdehautniveau.
Siaucunebasededonnespardfautnestdfinieauniveaudelaconnexion,alorscestlabaseMasterqui
estconsidrecommebasepardfaut,cequinestpasunbonchoix.
Les utilisateurs de base de donnes sont associs une connexion au niveau du serveur. Cependant, certains
utilisateurstelsqueguest,sysetINFORMATION_SCHEMAnesontmappsaucuneconnexion.
Si un utilisateur dispose dune connexion SQL Server mais sil nexiste pas dutilisateur de base de donnes lui
permettantdintervenirsurlesbases,lutilisateurnepeutraliserquequelquesoprationstrslimites:
G slectionnerlesinformationscontenuesdanslestablessystmeetexcutercertainesprocduresstockes,
G accdertouteslesbasesdedonnesutilisateurmuniesduncomptedutilisateurguest,
G excuterlesinstructionsquinencessitentpasdautorisationtellesquelafonctionPRINT.
Il existe deux types de droits : les droits dutilisation des objets dfinis dans une base de donnes et les droits
dexcuterdesinstructionsSQLquivontrajouterdenouveauxobjetslintrieurdelabase.
Lesutilisateursdebasededonnescorrespondentuneconnexion.Cesontlesutilisateursdebasededonnesqui
reoiventlesdiffrentsdroitsquipermettentdutiliserlesbases.
Pourtrecapabledegrerlesaccslabase,ilfautpossderdesdroitsdepropritairedebase(db_owner)oude
gestionnairedesaccs(db_accessadmin).
Lesutilisateursdebasededonnessontstocksdanslatablesystmesysusersdelabasededonnessur
laquellelutilisateurestdfini.
sacrationunutilisateurdebasededonnesnedisposedaucunprivilge.Ilestncessairedaccordertous
lesdroitsdontlutilisateurabesoin.
Lutilisateurguest(invit)estunutilisateurparticulierquipeuttredfinisurlesbasesdedonnesutilisateur.Cenom
dutilisateur sera utilis par les connexions au serveur qui ne sont pas mappes avec un utilisateur de base de
donnes.Lagestiondecetutilisateurestlammequecelledunutilisateurquelconquedelabasededonnes.
1.Cration
La cration dun utilisateur de base de donnes va permettre de lier une connexion avec un utilisateur, et donc
autoriserlutilisationdecettebase.
Pour crer un utilisateur de base de donnes, il faut se positionner sur la base de donnes concerne par lajout
depuislexplorateurdobjetsetraliserlamanipulationsuivante:
G DvelopperlenudScuritetsepositionnersurlenudUtilisateurs.
G DepuislemenucontextuelassociaunudUtilisateurs,slectionnerNouvelutilisateur.
G Slectionnerlaconnexionassocielutilisateur,puisdfinirlenomdecedernier.
SQLServerManagementStudio
- 1 - ENI Editions - All rigths reserved
G Enfin,ilestpossibledeprciserlesrlesdebasededonnesaccordscetutilisateur.

Danslexempleprcdent,lutilisateurAdrienestcrdanslabasededonnesGESCOM.Cetutilisateurestmapp
laconnexionAdrien.
CestparlintermdiairedelinstructionCREATEUSERquilestpossiblededfinirdescomptesutilisateursauniveau
delabasededonnes.
Syntaxe
CREATE USER nomUtilisateur
[ FOR {LOGIN nomConnexion |
CERTIFICATE nomCertificat|
ASYMMETRIC KEY nomClAsymtrique}]
[ WITH DEFAULT_SCHEMA = nomSchema ]
nomUtilisateur
Nomdunouvelutilisateurdebasededonnes.
nomConnexion
Nom de la connexion laquelle lutilisateur de Base de donnes est associ. Si aucun nom de connexion nest
prcis,alorsSQLServerrsoutleproblmedelafaonsuivante:
G 1 : SQL Server tente dassocier le compte dutilisateur de base de donnes une connexion qui porte le
mmenom.
TransactSQL
- 2 - ENI Editions - All rigths reserved
G 2 : si ltape prcdente choue, si le nom dutilisateurest guest et sil nexiste pas encore de compte de
guestsurlabasededonnes,alorslecomptedutilisateurguest(invit)estcr.
G 3:danstouslesautrescaslinstructionchoue.
nomCertificat
Nomducertificatassocierlutilisateurdebasededonnes.
nomClAsymtrique
Nomdelaclasymtriqueassocielutilisateurdebasededonnes.
nomSchema
Nom du schma associ cet utilisateur de base de donnes. Il est possible dassocier plusieurs utilisateurs au
mmeschma.
Exemple

Les procdures sp_grantdbaccess et sp_adduser sont maintenues dans SQL Server uniquement pour des
raisonsdecompatibilit.Ilestrecommanddenepluslutiliser.
2.Information
Pourobtenirlensembledesinformationsrelativesunutilisateurdebasededonnes,ilfautprocderdelafaon
suivante:
G Depuislexplorateurdobjets,sepositionnersurlabasededonnes.
G DvelopperlesnudsScuritUtilisateurs.
G Se positionner sur lutilisateur pour lequel on souhaite obtenir les informations et demander laffichagedes
propritspartirdumenucontextuelassoci.
SQLServerManagementStudio
- 3 - ENI Editions - All rigths reserved

Ilestpossibledobtenirlensembledesinformationsrelativesauxutilisateursdebasededonneseninterrogeantla
vuesys.database_principals.

Laprocdurestockesp_helpuserestmaintenuepourdesraisonsdecompatibilitmaisilfautluiprfrerla
vuesys.database_principals.
TransactSQL
- 4 - ENI Editions - All rigths reserved
Laprocduresp_whopermetdeconnatrelesutilisateursactuellementconnectsetlesprocessusencours.
Pourchaqueconnexion,laprocduresp_whopermet,entreautres,deconnatre:
G lenomdeconnexionutilis(loginame)
G lenomdelordinateurpartirduquellaconnexionesttablie(hostname)
G lenomdelabasededonnescourante(dbname).

3.Modification
Ilestpossibledemodifierunutilisateurdebasededonnesafindemodifiersonnomoubienleschmaassoci
cetutilisateur.
Ilfautsepositionnerdepuislexplorateurdobjetssurlabasededonnesconcerneparlamodificationducompte
dutilisateuretraliserlesmanipulationssuivantes:
G DvelopperlenudScuritpuisUtilisateurs.
G Sepositionnersurlecomptedutilisateurmodifier.
G Afficher la bote de proprits depuis loption Proprits disponible dans le menu contextuel associ
lutilisateur.
SQLServerManagementStudio
- 5 - ENI Editions - All rigths reserved

LinstructionALTERUSERpermetderalisercetteopration.
Syntaxe:
ALTER USER nomUtilisateur
WITH NAME=nouveauNomUtilisateur,
DEFAULT_SCHEMA = nomNouveauSchema
Exemple
TransactSQL
- 6 - ENI Editions - All rigths reserved

4.Suppression
Compte tenu que les utilisateurs ne possdent pas dobjets,leursuppressionesttoujourspossibleetsansaucun
risque de perte de donnes. La suppression dun utilisateur nentrane pas la suppression du schma associ
lutilisateur.
Ilfautsepositionnerdepuislexplorateurdobjetssurlabasededonnesconcerneparlasuppressionducompte
dutilisateuretraliserlesmanipulationssuivantes:
G DvelopperlenudScuritpuisUtilisateurs.
G Sepositionnersurlecomptedutilisateursupprimer.
G SlectionnerlechoixSupprimerdepuislemenucontextuelassociaucomptedutilisateur.
La suppression nest pas possible sur les comptes dutilisateur prdfinis savoir : dbo, guest,
INFORMATION_SCHEMAetsys.
SQLServerManagementStudio
- 7 - ENI Editions - All rigths reserved

LinstructionDROPUSERpermetderalisercetteopration.
Les procdures sp_dropuser et sp_revokedbaccess sont maintenues dans SQL Server uniquement pour
desraisonsdecompatibilit.
Syntaxe
DROP USER nomUtilisateur
Exemple:

TransactSQL
- 8 - ENI Editions - All rigths reserved
Gestiondesschmas
Lobjectifdesschmasestdedissocierlesutilisateursdebasededonnesdesobjetsquilsvonttreamenscrer.
Toutefois,lesobjetsnesontpaslaissstelsquels,ilssontregroupslogiquementenschma.Ilestainsipossiblede
dfinirunschmacommeunensemblelogiquedobjetslintrieurdunebasededonnes.
Les schmas facilitent le partage dinformation entre plusieurs utilisateurs sans pour autant perdre au niveau de la
scurit.Parexemple,siplusieursdveloppeurstravaillentensemblesurunmmeprojet,ilsvonttousseconnecteren
utilisantleurpropreconnexionetutilisateurdebasededonnes,cequinelesempchepasdetravaillersurlemme
schmaetdepartagerainsilestables,vues,procdures,fonctions...quisontdfiniessurlabasedanslecadredu
projet.
Lesschmaspermettentunegestionplusaisedesprivilgesdutilisationdesobjets.
Leschmaestassociunutilisateurdebasededonneslorsdelacrationoudelamodificationdelutilisateurdela
basededonnes.Siaucunnomdeschmanestprcis,alorslutilisateurdebasededonnesvatravaillerpardfaut
surleschmadbo.
Pouraccderdesobjetssitusendehorsdesonschmapardfaut,unutilisateurdebasededonnesdoitutiliser
lenomcompletdunobjetcestdirenomSchema.nomObjet.Lorsdelutilisationdunnomcourt(simplementlenomde
lobjetsansleprfixerparlenomduschma),SQLServerrecherchelexistencedelobjetuniquementdansleschma
courantdelutilisateur.
1.Cration
a.SQLServerManagementStudio
Pourcrerunschmadebasededonnes,ilfautsepositionnersurlabasededonnesconcerneparlajoutet
depuislexplorateurdobjetsraliserlamanipulationsuivante:
G DvelopperlenudScuritetsepositionnersurlenudSchmas.
G DepuislemenucontextuelassociaunudSchmas,slectionnerNouveauschma.
- 1 - ENI Editions - All rigths reserved

b.TransactSQL
CREATE SCHEMA nomSchema
AUTHORIZATION nomPropritaire|
[defitionDesTables |
definitionDesVues |
gestionDePrivilges]
Plussimplement,ilestpossiblededirequunschmaestcaractrisparsonnom.LoptionAUTHORIZATIONpermet
dedfinirlutilisateurdebasededonnesquiestpropritaireduschma.Unmmeutilisateurdebasededonnes
peut tre le propritaire de plusieurs schmas. Le propritaire dun schma ne doit pas ncessairement avoir
commeschmapardfautunschmadontilestpropritaire.Ilestgalementpossibledecrerlestablesetles
vuesdunschmadslaconstructionduschma.
Exemple
Danslexemplesuivant,leschmaRIestcr.
- 2 - ENI Editions - All rigths reserved

Danscesecondexemple,leschmalivreestdfiniainsiquedestablesetdesvuesspcifiqueceschma.
CREATE SCHEMA livre AUTHORIZATION dbo
CREATE TABLE articles(reference nvarchar(8) constraint pk_articles
primary key, designation nvarchar(200), prixht money, tva numeric(4,2))
CREATE VIEW catalogue AS select reference, designation, prixht,
tva ttc=prix*(1+tva)/100 FROM articles;
2.Modification
La modification dunschmaconsistemodifierlesobjetscontenusdansceschma.Lorsquunobjetesttransfr
dun schma un autre, les autorisations relatives cet objet sont perdues. Le transfert dun objet entre deux
schmasestpossiblelintrieurdunemmebasededonnes.
a.SQLServerManagementStudio
Pour modifier un schma de base de donnes, il faut se positionner sur la base de donnes concerne par la
modificationetdepuislexplorateurdobjetsraliserlamanipulationsuivante:
G DvelopperlenudScuritetsepositionnersurlenudSchmas.
G Sepositionnersurleschmamodifier.
G Afficher la bote de proprits depuis loption Proprits disponible dans le menu contextuel associ au
schma.
- 3 - ENI Editions - All rigths reserved

b.TransactSQL
ALTERSCHEMAnomSchemaTRANSFERnomObjet
nomObjet
Reprsente le nom de lobjet qui va tre transfr dans le schma courant. Le nom de cet objet est au format
suivantnomSchema.nomCourtObjet.
Exemple
Danslexemplesuivant,latabecatgoriesprsentedansleschmadboesttransfreversleschmalivre.
- 4 - ENI Editions - All rigths reserved

3.Suppression
Lasuppressiondunschmaestpossiblepourlesschmasquinecontiennentpasdobjet.Parexemple,sileschma
contientdestablesoudesvues,ilestncessairedesupprimeroudetransfrerversunautreschmalensembledes
tablesetdesvuesavantdepouvoirsupprimerleschmacourant.
a.SQLServerManagementStudio
Pour supprimer un schma de base de donnes, il faut se positionner sur la base de donnes concerne par la
suppressionetdepuislexplorateurdobjetsraliserlamanipulationsuivante:
G DvelopperlenudScuritetsepositionnersurlenudSchma.
G Sepositionnersurleschmasupprimer.
G SlectionnerlechoixSupprimerdepuislemenucontextuelassociauschma.
- 5 - ENI Editions - All rigths reserved

b.TransactSQL
DROP SCHEMA nomSchema
Exemple

- 6 - ENI Editions - All rigths reserved


Gestiondesdroits
Tous les utilisateurs de base de donnes, y compris guest,appartiennentaugroupe public. Les droits qui vont tre
dtaillscidessouspeuventbiensrtreaccordsdirectementpublic.
Lesdroitssontorganissdefaonhirarchiqueparrapportauxlmentsscurisablesduserveur.

Il est possible de grer lattribution de privilges au niveau du serveur, de la base de donnes, du schma ou bien
directementdelobjet.Ainsi,lesprivilgespeuventtreaccordssoitunutilisateurdebasededonnes,soitune
connexion.
SQLServergrelesprivilgesavectroistypesdemotscls:
G GRANT
G REVOKE
G DENY
Cestdire quun privilge peut tre accord (GRANT) ou bien retir (REVOKE) sil a t accord. Linstruction DENY
permetdinterdirelutilisationdunprivilgeparticuliermmesileprivilgeenquestionataccordsoitdirectement,
soitparlintermdiairedunrle.
- 1 - ENI Editions - All rigths reserved
1.Droitsdutilisationdinstructions
LesdroitsdutilisationdesinstructionsSQLpourcrerdenouveauxobjetsauseindelabasesontdesautorisations
pourraliserlexcutiondecertainsordresSQL.Unutilisateurquidisposedetelsdroitsestcapableparexemplede
crersesproprestables,sesprocdures...Laccorddecesdroitspeuttredangereuxetcommepourtouslesdroits,
doiventtreaccordsuniquementlorsquecelaestncessaire.
Lesdroitsprincipauxdinstructionsdisponiblessont:
G CREATEDATABASE
G CREATEPROCEDURE
G CREATEFUNCTION
G CREATETABLE
G BACKUPDATABASE
G CREATEVIEW
G BACKUPLOG
a.Autoriser
Cesdroitssontadministrsauniveaudelabasededonnesparlintermdiairedelafentredesproprits.
Exemple
LeprivilgeCREATETABLEestaccordlutilisateurdebasededonnesAdrienparlintermdiairedelabotedeproprits
delabaseGESCOM.
SQLServerManagementStudio
- 2 - ENI Editions - All rigths reserved

LaccorddeprivilgesseffectueenutilisantlinstructionGRANTdontlasyntaxeestdtaillecidessous.
GRANT permission [,...]
TO utilisateur[,...]
[ WITH GRANT OPTION ]
permission
Nomdelaoudespermissionsconcernesparcetteautorisation.IlestgalementpossibledutiliserlemotclALL
laplacedeciterexplicitementlaoulespermissionsaccordes.ToutefoiscetermeALLnepermetpasdaccorderdes
privilges dexcution de toutes les instructions mais simplement sur les instructions pour crer des bases de
donnes, des tables, des procdures, des fonctions, des tables vues ainsi que deffectuer des sauvegardes de la
baseetdujournal.
utilisateur
Nomdelutilisateuroudesutilisateursdebasededonnesquireoiventlespermissions.
WITH GRANT OPTION
Silapermissionestreueavecceprivilge,alorslutilisateurpeutaccorderlapermissiondautresutilisateursde
basededonnes.
Exemple
Danslexemplesuivant,leprivilgeCREATEVIEWestaccordlutilisateurdebasededonnesAdrien.
TransactSQL
- 3 - ENI Editions - All rigths reserved

b.Retirer
Ilestpossiblederetirerunprivilgequiataccorduneentitdescurit.Sileprivilgenapastaccord
lentitdescurit,linstructionestsanseffet.
Lagestiondesprivilgesseffectueauniveaudespropritsdelabasededonnes.
Exemple
LapermissionCREATETABLEestretirelutilisateurADRIEN.
SQLServerManagementStudio
- 4 - ENI Editions - All rigths reserved

REVOKE [GRANT OPTION FOR]


permission [,...]
FROM utilisateur [,...]
[CASCADE]
GRANT OPTION FOR
SilapermissionataccordeavecleprivilgedadministrationGRANTOPTION,ilestpossibleparlintermdiairede
cetteoptionderetirersimplementleparamtredadministration.
permission
Listedespermissionsretirer.
utilisateur
Listedesutilisateursconcernsparcettesuppression.
CASCADE
Si la permission retire a t accorde avec le privilge dadministration WITH GRANT OPTION, loption CASCADE
permetderetirerleprivilgeauxutilisateursquilontreuparlintermdiairedelutilisateurquiestconcernparla
suppressioninitialedeprivilge.
Exemple
Exemple
LeprivilgeCREATEVIEWestretirlutilisateurAdrien.
TransactSQL
- 5 - ENI Editions - All rigths reserved

c.Interdire
LinstructionDENYpermetdinterdireunutilisateurlutilisationdunprivilge,mmesilenreoitlapermissionsoit
directement,soitparsonappartenanceungroupe.
Commepourlaccordetlasuppression,cetypedeprivilgeestgrdefaoncentraliseauniveaudesproprits
delabasededonnes.
Exemple
Parlintermdiairedespropritsdelabasededonnes,lutilisateurAdriensevoitinterdirelefaitdecrerunetable.
SQLServerManagementStudio
- 6 - ENI Editions - All rigths reserved

DENY permission [,...]


TO utilisateur [,...]
[CASCADE]
Exemple
LutilisateurAdriensevoitinterdirelapossibilitdecrerdesvues.

TransactSQL
- 7 - ENI Editions - All rigths reserved
2.Droitsdutilisationdesobjets
Cesdroitspermettentdefixerquellesoprations(lecture,modification,ajoutousuppression)lutilisateurpeutraliser
surdesdonnescontenuesdansunetable,oubiendonnerledroitdexcutionduneprocdurestocke.Cesdroits
sontengnralgrsparlepropritairedelobjet.
Encequiconcerneledroitdelecturedesdonnescontenuesdansunetable(utilisationdelinstructionSELECT),ilest
possibledeprciserquellescolonneslutilisateurpeutvisualiser.Pardfaut,ilsagitdetouteslescolonnes.
Les principaux droits dutilisation des objets concernant les tables, vues, procdures stockes correspondent aux
ordres:
G INSERT
G UPDATE
G DELETE
G SELECT
G EXECUTE:quinesutilisequepourlesprocduresstockes.
Les instructions SELECT et UPDATE peuvent tre limites certaines colonnes de la table ou de la vue. Il est
cependantprfrabledenepastropexplorercettepossibilitcarilenrsulteunplusgrandtravailadministratifau
niveaudelagestiondesdroits.Ilestprfrabledepasserparunevueoubienuneprocdurestockepourlimiter
lusagedelatable.
Principedefonctionnementdesautorisations
a.Autoriser
LesprivilgesdutilisationdesobjetspeuventtregrsdeuxniveauxdansSQLServerManagementStudio:
G auniveauutilisateur,cequipermetdeconnatrelespossibilitsdetravailquepossdechaqueutilisateur.
SQLServerManagementStudio
- 8 - ENI Editions - All rigths reserved
G auniveaudesobjets,afindeconnatrequelssontlesutilisateursquipeuventutiliserlobjetenquestionet
commentilspeuventlutiliser.
Danschacundesdeuxcas,lesautorisationssontgresparlintermdiairedelafentredesproprits.
Exemple
Dans lexemple suivant, lutilisateur Adrien se voit accorder la possibilit dexcuter les instructions INSERT, UPDATE et
SELECTsurlatabledesCLIENTSduschmadbo.

GRANT {ALL [PRIVILEGES]|permission[(colonne,[,...])] [,...]}


ON objet[,...]
TO utilisateur [,...]
[WITH GRANT OPTION ]
ALL
Permetdaccordertouslesprivilgesdutilisationdelobjet.Lesprivilgesaccordssonttoujoursfonctiondutypede
lobjetconcernparcetaccorddeprivilge.
PRIVILEGES
LemotclatajoutpourlerespectdelanormeANSI92.Ilnapporteaucunemodificationquantlutilisationdu
motclALL.
permission
Permetdespcifierlaoulesoprationsquiserontaccordesauxutilisateurs.

TransactSQL
- 9 - ENI Editions - All rigths reserved
objet
Correspondaunomcompletdelobjetoudesobjetssurlesquelsportelaccorddeprivilgedutilisation.
utilisateur
Correspondlutilisateur,ouplusexactementlentitdescuritquivapouvoirbnficierduoudesprivilges.
WITH GRANT OPTION
Leprivilgeestaccordavecuneoptiondadministrationquiautoriselebnficiaireduprivilgeaccordercemme
privilgedautresutilisateursdelabasededonnes.
Exemple
Danslexemplecidessous,lutilisateurAdrienreoittouslesprivilgesdutilisationsurlatabledescommandesainsique
lapossibilitdemenerdesrequtesdinterrogationsurlatabledesarticles.

b.Retirer
Lorsquunepermissionataccorde,ilestpossiblederetirercetaccord.Ilnestpaspossiblederetirerlutilisation
dunepermissionuneentitdescuritsicettepermissionnapastaccordecettemmeentitdescurit.
Cestparlintermdiairedelafentredespropritsdelentitdescuritoubiendelobjet, quilestpossiblede
retirerunepermissionquiataccordeprcdemment.
Exemple
partirdespropritsdelatabledbo.CLIENTS,lutilisateurADRIENsevoitretirerlapossibilitdeffectuerdesrequtesde
typeUPDATEsurcettetable.
SQLServerManagementStudio
- 10 - ENI Editions - All rigths reserved

REVOKE [GRANT OPTION FOR ]


{ALL [PRIVILEGES]|permission[(colonne,[,...])] [,...]}
ON object [(colonne [,...])]
{FROM | TO} utilisateur [,...]
[ CASCADE ]
GRANT OPTION FOR
Aveccetteoption,ilestpossiblederetirersimplementleprivilgedadministrationduprivilge.
permission
Permetdeprciserlaoulespermissionsconcernesparleretrait.Commepourlaccord,ilestpossibledeprciser
lescolonnesconcernesparleretrait,maislagestionduntelniveaudedroitestlourde.
objet
Ilfautprciserlenomcompletdelobjetauseindelabasededonnes,cestdirenomSchema.nomObjet.
FROM, TO
Cesdeuxtermessontsynonymes.LusagehabituelconsisteutiliserTOlorsdelaccorddunprivilgeetFROMlors
duretraitdunprivilge.
utilisateur
Il sagit trs exactement de lentit de scurit qui le privilge est retir. Cette entit de scurit est le plus
souventunutilisateur,maisilpeutsagirdunrleparexemple.
TransactSQL
- 11 - ENI Editions - All rigths reserved
CASCADE
Lors du retrait dune permission accorde avec le privilge dadministration, cette option permet de cascader le
retrait,cestdiredeffectuerleretraitdelapermissiontouteslesentitsdescuritquilontreuedelapartde
cellequiestconcerneinitialementparleretrait.
Exemple
Danslexemplesuivant,lutilisateurAdriensevoitretirerlapossibilitdesupprimerdesCOMMANDES.

c.Interdire
Linterdictiondutiliserunepermissiondutilisationdunobjetestuneinstructionplusfortequelasuppressioncarelle
peuttreappliqueuneentitdescurit,mmesicettedernirenapasencorereudeprivilgedutilisationde
lobjetdefaondirecteounon.
Commepourlajoutoubienleretrait,linterdictionvatregreparlesfentresdeproprits,soitcelledelentit
de scurit, soit par celle de lobjet.Lechoixdune solution par rapport lautredpenddutypedevuequelon
souhaite adopter et du type dopration que lon souhaite faire. Estce que lon souhaite, par exemple, mieux
contrlerlutilisationdunetable,oubienlesactionsquepeutmenerunutilisateurdebasededonnes?
Exemple
Dans lexemple suivant, lutilisateur ADRIEN se voit interdire la possibilit de supprimer des informations sur la table
dbo.CLIENTS,parlintermdiairedelafentredepropritsdelatable.
SQLServerManagementStudio
- 12 - ENI Editions - All rigths reserved

DENY {ALL [PRIVILEGES]|permission[(colonne,[,...])] [,...]}


ON object [(colonne [,...])]
TO utilisateur [,...]
[CASCADE]
colonne
Linterdiction au niveau colonne est sans effet sur une autorisation accorde au niveau de la table. Cette
inconsistancedescuritestmaintenuedansSQLServer2005pourdesraisonsdecompatibilitantrieure.
CASCADE
Linterdictionesttransmiseauxentitsdescuritquiontreulapermissiondutiliserceprivilgeparlintermdiaire
delentitdescuritquilutilisationdeceprivilgeestinterdite.
Exemple
Dans lexemple suivant, lutilisateur de base de donnes ADRIEN se voit interdire la possibilit de supprimer des
informationsdepuislatabledbo.COMMANDES.
TransactSQL
- 13 - ENI Editions - All rigths reserved

3.Droitsauniveaubasededonnes
Les privilges accords au niveau base de donnes donnent la possibilit lutilisateur qui reoit ce privilge de
raliser des actions qui ont une porte sur lensemble de la base de donnes. Par exemple, le privilge ALTER ANY
USERpermetunutilisateurdecrer,supprimeretmodifiernimportequelcomptedelabasededonnes.
Auniveaubasededonnes,ilestpossibledaccorderdesprivilgesunutilisateurmaisgalementunschma,un
assemblyetunobjetservicebroker.
LagestiondecesprivilgesutilisesoitlesinstructionsTransactSQLGRANT,REVOKEetDENY,soitpeuttreeffectue
defaongraphiquepartirdespropritsdelabasededonnes.
Seules les mthodes pour accorder des privilges sont illustres ici, les oprations de suppression et
dinterdictionsonttrssemblablescellesillustreslorsdesdeuxpointsprcdents.
LesdroitsrelatifslutilisationpeuventtreattribusdelafaonsuivantedepuisSQLServerManagementStudio:
G Depuis lexplorateur dobjets, dvelopper le nud reprsentant la base de donnes concerne par la
modificationdeprivilge.
G AfficherlespropritsdelabaseeneffectuantlechoixPropritsdepuislemenucontextuel.
SQLServerManagementStudio
- 14 - ENI Editions - All rigths reserved

Il est galement possible daccorder ces permissions de faon graphique en allant modifier les proprits des
utilisateursdebasededonnes.
LammeoprationpeuttreraliseenTransactSQLlaidedelinstructionGRANT.
GRANT permissionBaseDeDonnes [ ,... ]
TO utilisateur [ ,...n ]
[ WITH GRANT OPTION ]
[ AS { group | role } ]
permissionBaseDeDonnes
Laoulespermissionsdebasededonnesaccordes.
Utilisateur
Comptedutilisateurdebasededonnesquireoitleprivilge.
AS {group|role}
Contextedescuritutilispourpouvoiraccorderleprivilge.
Exemple
Danslexemplesuivant,leprivilgeCREATEPROCEDUREestaccordlutilisateurPierre.
TransactSQL
- 15 - ENI Editions - All rigths reserved

Lesprivilgesquilestpossibledaccorderceniveausont:
ALTER CREATEDATABASE
ALTERANYAPPLICATIONROLE CREATEDATABASEDDLEVENTNOTIFICATION
ALTERANYASSEMBLY CREATEDEFAULT
ALTERANYASYMMETRICKEY CREATEFULLTEXTCATALOG
ALTERANYCERTIFICATE CREATEFUNCTION
ALTERANYCONTRACT CREATEMESSAGETYPE
ALTERANYDATABASEDDLTRIGGER CREATEPROCEDURE
ALTERANYDATABASEEVENTNOTIFICATION CREATEQUEUE
ALTERANYDATASPACE CREATEREMOTESERVICEBINDING
ALTERANYFULLTEXTCATALOG CREATEROLE
ALTERANYMESSAGETYPE CREATEROUTE
ALTERANYREMOTESERVICEBINDING CREATERULE
ALTERANYROLE CREATESCHEMA
ALTERANYROUTE CREATESERVICE
ALTERANYSCHEMA CREATESYMMETRICKEY
ALTERANYSERVICE CREATESYNONYM
ALTERANYSYMMETRICKEY CREATETABLE
ALTERANYUSER CREATETYPE
- 16 - ENI Editions - All rigths reserved
4.Droitsauniveauduserveur
SQL Server permet dattribuer des privilges au niveau du serveur. Ces privilges ne sont pas accords un
utilisateurdebasededonnesmaisuneconnexion.
Comme pour les droits dutilisation des objets et des instructions, il est possible daccorder ces privilges avec une
optiondadministration.Ainsi,laconnexionquipossdecedroitpeutaccordercemmedroituneouplusieursautres
connexions.
Lesdiffrentsdroitsquilestpossibledaccorderauniveauserveursont:
AUTHENTICATE CREATEVIEW
BACKUPDATABASE CREATEXMLSCHEMACOLLECTION
BACKUPLOG DELETE
CHECKPOINT EXECUTE
CONNECT INSERT
CONNECTREPLICATION REFERENCES
CONTROL SELECT
CREATEAGGREGATE SHOWPLAN
CREATEASSEMBLY SUBSCRIBEQUERYNOTIFICATIONS
CREATEASYMMETRICKEY TAKEOWNERSHIP
CREATECERTIFICATE UPDATE
CREATECONTRACT VIEWDATABASESTATE
VIEWDEFINITION
ADMINISTERBULKOPERATIONS CONNECTSQL
ALTERANYCONNECTION CONTROLSERVER
ALTERANYCREDENTIAL CREATEANYDATABASE
ALTERANYDATABASE CREATEDDLEVENTNOTIFICATION
ALTERANYENDPOINT CREATEENDPOINT
ALTERANYEVENTNOTIFICATION CREATETRACEEVENTNOTIFICATION
ALTERANYLINKEDSERVER EXTERNALACCESSASSEMBLY
ALTERANYLOGIN SHUTDOWN
ALTERRESOURCES UNSAFEASSEMBLY
ALTERSERVERSTATE VIEWANYDATABASE
ALTERSETTINGS VIEWANYDEFINITION
ALTERTRACE VIEWSERVERSTATE
- 17 - ENI Editions - All rigths reserved
Touteslesinformationsrelativesauxprivilgesaccordsauniveauduserveursontvisiblesautraversdela
vuesys.server_permissions.
Il est galement possible dattribuer des droits dutilisation dobjets dfinis au niveau du serveur telles que les
terminaisonshttpouhttpendpoint.
Pourpouvoiraccorderdetelsprivilges,ilfauttravaillersurlabaseMaster.

5.Interrogerlesvuessystmes
Ilestpossible,eninterrogeantlesvuessystmedudictionnaireetplusexactementcellestraitantdelascurit,de
connatrelesdiffrentesautorisationsetinterdictionsrelativesauxdiffrentesentitsdescurit.
Lesprincipalesvuessont:
G sys.database_permissionsquipermetdelisterlesdiffrentesautorisationsdutilisationdesprivilges.
G sys.database_principalsquipermetdelisterlesdiffrentscomptesdescurit.
Cettevuerecensetouteslesentitsdescuritdfinieslocalementlabasededonnes.Lesprincipalescolonnes
decettevuesont:
G namenomdelentitdescurit.Cenomestuniquelintrieurdelabasededonnes.
G principal_ididentifiantnumriquequipermetdidentifierdefaonuniqueuneentitdescuritdanslabase
dedonnes.
G type code relatif au type du contexte de scurit : utilisateur SQL, utilisateur Windows, rle, groupe
Windows...
G type_descdescriptionentoutelettrepourcomprendreletypementionnlacolonneprcdente.
G default_schema_namenomduschmaassocipardfautlentitdescurit.
G create_datedatedecrationdelentitdescurit.
G modify_datedatedeladerniremodificationsurlentitdescurit.
G owning_principal_id identifiant du contexte de scurit qui possde le compte en question. Tous,
lexceptiondesrlesdebasededonnes,doiventtrepossdspardbo.
G sidouSecurityIdentifier.Cechampestrenseignsilentitdescuritestlieunexternal.
G is_fixed_rolecetattributest1lorsquelentitdescuritestlieunrlefixeprdfinisurleserveur.
Exemple
LarequtesuivantepermetdeconnatrelescomptesdutilisateursdfinisdanslabaseGESCOM.
AUTHENTICATESERVER
sys.database_principals
- 18 - ENI Editions - All rigths reserved

Cettevuepermetdobtenirlensembledesinformationsrelativesauxdiffrentespermissionsaccordesdanslabase.
Il existe une ligne dinformation pour chaque permission accorde chaque entit de scurit. Dans le cas de la
gestiondespermissionsauniveaudelacolonne,ilexisteunelignedinformationpourchaquecolonneconcernepar
lapermission.
Lesprincipalescolonnesdecettevuesont:
G classcoderelatiflaclassificationduprivilge.Estceunprivilgedeniveaubase,quiportesurlutilisation
dunobjetoudunecolonne...
G class_descdescriptiondelaclassificationduprivilge.
G major_ididentifiantdelobjetsurlequelportelapermission.
G minor_ididentifiantdelacolonnesurlaquelleportelapermission.
G grantee_principal_ididentifiantducontextedescuritconcernparlapermission.
G grantor_principal_ididentifiantducontextedescuritloriginedelapermission.
G typetypeduprivilge.
G permission_namenomduprivilgeconcernparlapermission.
G statecoderelatifltatdelapermission.
G state_desc description de ltat actuel de la permission : GRANT, REVOKE, DENY ou bien
GRANT_WITH_GRANT_OPTION.
Exemple
laide de la requte suivante, il est facile de connatre les permissions que possde lutilisateur de base de donnes
ADRIEN.
sys.database_permissions
- 19 - ENI Editions - All rigths reserved

- 20 - ENI Editions - All rigths reserved


Contextedexcution
Lecontextedexcutioncorrespondlensembledesautorisationsactiveslorsdelexcutiondunerequte,dunscript
TransactSQL,duneprocdure,dunefonctionouduntrigger.Pardfaut,cesontlesprivilgesaccordsaucontexte
descuritquiexcutentlarequte,lescript,laprocdure,lafonctionouletriggerquisontutilisspourexcuterles
instructions sousjacentes. Ce mode de fonctionnement par dfaut est, la plupart du temps, le plus adapt et il ne
convient pas de le changer. Toutefois, dans certains cas bien prcis, il est ncessaire dassurer la bonne excution
quelsquesoientlesprivilgesaccordslutilisateurquiestloriginedelexcution.Cecasseproduitparexemple,
lorsquepersonnenereoitleprivilgedajouter(insert)desdonnesdansunetableetquaucontraireuneprocdure
permetderalisercetravail.Danscecas,laclauseEXECUTEASpermetdeprciserlecontextedexcutionutiliser.
Le contexte dexcution ainsi dfini peut correspondre celui dun utilisateur nomm expressment, celui de
lappelant(choixpardfaut)oubienceluidupropritaire.
Syntaxe
CREATE PROCEDURE nomProcedure
WITH EXECUTE AS {CALLER|SELF|OWNER|nomUtilisateur}
AS corpsDeLaProcedure
CALLER
Lecontextedexcutionestceluidelutilisateurquiappellelaprocdureoubienlafonction.
SELF
Lecontextedexcutionestceluiducrateurdelaprocdureoulafonction.
OWNER
Lecontextedexcutiondelaprocdureestceluidupropritairedelaprocdureoudelafonction.
nomUtilisateur
Lecontextedexcutiondelaprocdureestceluidelutilisateurdebasededonnesnomm.
Ilestgalementpossiblededfinirlecontextedexcutionsurlesdclencheursdebasededonnes(DMLet
DDL)ainsiquesurlesqueues.

- 1 - ENI Editions - All rigths reserved


Danslecasdunscript,linstructionEXECUTEASpermetdemodifierlecontextedexcutioncourant.
- 2 - ENI Editions - All rigths reserved
Lesrles
Les rles sont des ensembles de permissions. Ces ensembles existent trois niveaux distincts : serveur, base de
donnes et application. Les rles permettent de regrouper les droits et de grer plus facilement les diffrents
utilisateursetlesconnexions.Ilesteneffettoujoursprfrabledattribuerdesdroitsdesrlespuisdaccorderles
rlesauxutilisateurs.Avecunetellestructure,lajoutetlamodificationdedroitsoudutilisateursontbeaucoupplus
simples.
Il est possible de dfinir un rle comme un ensemble nomm de privilges. Pour faciliter la gestion des droits, SQL
Server propose des rles prdfinis aussi appels fixes car il nest pas possible dajouter ou bien de supprimer des
privilgesdanscesrles.Cesrlesfixessontdfinisdeuxniveaux:
G serveur
G basededonnes
Enplusdecesrlesfixes,ilestpossibledegrerdesrles.Ilconvientalorsdedfinirunnomuniquepourdfinirun
rle,puisdaccorderunouplusieursprivilgesenrespectantuneprocdureentoutpointsimilairecelleutilisepour
accorderdespermissionsdesutilisateurs.Cesrlespeuventtredfinisdeuxniveaux:
G basededonnes
G application
Les rles permettent une gestion simplifie des privilges puisquil est possible ainsi de dfinir des profils types de
privilges,puisdaccorderchaqueutilisateurdebasededonnes,unouplusieursprofilsdefaonluifournirtoutes
lesautorisationsdontilabesoinpourtravaillersurlabase.
Lutilisateurdisposeaufinaldelensembledesprivilgesquisontaccords:
G directementlaconnexionutilise
G indirectementparlintermdiairedunrlefixedeserveuraccordlaconnexion
G indirectementparlintermdiairedesrlesaccordslutilisateurdebasededonnes
G directementlutilisateurdebasededonnes.

Encomplmentdecesdiffrentsrles,ilexistelerlepublic.Cerleestpartcartouslesutilisateursreoiventle
rle public et ils ne peuvent pas sy soustraire. Ce rle est galement particulier car il est possible de lui accorder,
retireroubieninterdiredespermissions.Toutesmodificationsauniveaudespermissionsfaitessurlerlepublicsont
valablespourtouslesutilisateurs.Ilnestdoncpasrecommanddetravailleraveccerlemais,danscertainscas,il
- 1 - ENI Editions - All rigths reserved
apporteunesouplessedegestiondespermissionsquiestintressante.
1.Rlesdeserveur
Cesontdesrlesprdfinisquidonnentauxconnexionsuncertainnombredefonctionnalits.Ilnestpaspossible
dedfinirdesrlesdeserveur,parcontreleurutilisationfacilitelagestionencasdenombreuxutilisateurs.
Lesrlesdeserveursontaunombredehuit:
Excutenimportequelleoprationsurleserveur,cestladministrateurduserveur.
Permetdeconfigurerlesparamtresauniveauduserveur.
Permet dajouter/supprimer des serveurs lis et dexcuter certaines procdures stockes systme telles que
sp_serveroptions.
Permetdegrerlesconnexionsdaccsauserveur.
PermetdegrerlestraitementssexcutantsurSQLServer.
Permetdecreretmodifierlesbasesdedonnes.
Permetdegrerlesfichierssurledisque.
Peut excuter linstruction BULK INSERT pour une insertion des donnes par blocs. Lintrt de ce type dinsertion
rsidedanslefaitqueloprationnestpasjournaliseetdonclestempsdinsertionsontbeaucoupplusrapides.
Seulslesmembresdurlesysadminpeuventaccorderunrledeserveuruneconnexion.

LerlepublicreoitleprivilgeVIEWANYDATABASE.Ainsi,lesutilisateursquiseconnectentSQLpeuventlisterles
basesdfiniessurlinstance.Ilsnepourrontyaccderquesiuncomptedutilisateurdebasededonnesestmapp
leurconnexionoubiensilutilisateurguest(invit)estdfiniauniveaudelabase.
Les procduressp_helpsrvrole et sp_helpsrvrolemenberpermettent dobtenir toutes les informations ncessaires
surlesdiffrentsrlesfixesdeserveuretleurattribution.
sysadmin
serveradmin
setupadmin
securityadmin
processadmin
dbcreator
diskadmin
bulkadmin
- 2 - ENI Editions - All rigths reserved
Excutiondesp_helpsrvrolepourconnatrelesrlesdeserveursfixes
Lagestiondesrlesfixesdeserveuretplusexactementlagestiondesconnexionsauseindurleestgredepuis
lafentredespropritsdurle.

SQLServerManagementStudio
- 3 - ENI Editions - All rigths reserved
Cestparlintermdiairededeuxprocduresstockesqueseffectuenttouteslesoprations.
Syntaxe:
sp_addsrvrolemember nom_connexion, nom_rle
Exemple:

LaconnexionPierredevientadministrateur,cestdiremembredurledeserveursysadmin.
Syntaxe:
sp_dropsrvrolemember nom_connexion, nom_rle
Exemple:
TransactSQL
Ajouterunmembre
Retirerunmembre
- 4 - ENI Editions - All rigths reserved

2.Rlesdebasededonnes
Lesrlesdebasesdedonnespermettenttoujoursderegrouperlesdiffrentesautorisationsourefusdinstructions
ou dobjets et ainsi de faciliter la gestion des droits. Il existe des rles prdfinis et il est possible de dfinir ses
propresrles.
Lesmodificationssurlesrlessontdynamiquesetlesutilisateursnontpasbesoindesedconnecter/reconnecterde
labasepourbnficierdeschangements.
Lesrlesprdfinisnepeuventpastresupprims.

Seuls les membres des rles fixes de base de donnes db_owner et db_securityadmin sont mme de grer
lappartenancedesutilisateursunrlefixeounondelabasededonnes.
a.Lerlepublic
Il sagit dun rle prdfini, bien particulier, car tous les utilisateurs de la base possdent ce rle. Ainsi, lorsque
quuneautorisationdinstructionoudobjetestaccorde,supprimeouinterditepublic,instantanmenttousles
utilisateursdelabasebnficientdesmodifications.
Lerlepubliccontienttouteslesautorisationspardfautdontbnficientlesutilisateursdelabase.
Ilnestpaspossibledattribuerdesmembrescerlepuisquetoutlemondelepossdeimplicitement.Cerleest
prsentdanstouteslesbasesduserveur,aussibienlesbasessystmequelesbasesutilisateur.
sacration,unutilisateurnedisposedaucuneautorisationsaufcellesaccordespublic.

b.Lesrlesprdfinis
- 5 - ENI Editions - All rigths reserved

Mispartlerlepublic,ilexistedesrlesprdfinisdanslabasededonnes.
Ensemblededroitsquivalentsaupropritairedelabase.Cerlecontienttouteslesactivitspossiblesdansles
autres rles de la base de donnes, ainsi que la possibilit dexcuter certaines tches de maintenance et de
configurationdelabase.Touslesmembresdecegroupevontcrerdesobjetsdontlepropritaireestdbo.Ilsagit
dupropritairepardfautdetouslesobjetsetilnestpasncessairedeleprciserpourmanipulersesobjets.
Permetdajouteroudesupprimerdesutilisateursdanslabasededonnes.Cesutilisateurscorrespondentdes
connexionsSQLServeroubiendesgroupesouutilisateursWindows.
Permetdeconsulter(SELECT)lecontenudetouteslestablesdelabasededonnes.
Permetdajouter(INSERT),modifier(UPDATE)ousupprimer(DELETE)desdonnesdanstouteslestablesutilisateur
delabasededonnes.
Permetdajouter(CREATE),modifier(ALTER)ousupprimer(DELETE)desobjetsdelabasededonnes.
Permetdegrerlesrles,lesmembresdesrles,etlesautorisationssurlesinstructionsetlesobjetsdelabase
dedonnes.
Permetdeffectuerunesauvegardedelabasededonnes.
Interditlavisualisationdesdonnesdelabase.
Interditlamodificationdesdonnescontenuesdanslabase.
Touslesrlesprdfinissontprsentsdanstouteslesbasessystme.

db_owner
db_accessadmin
db_datareader
db_datawriter
db_ddladmin
db_securityadmin
db_backupoperator
db_denydatareader
db_denydatawriter
- 6 - ENI Editions - All rigths reserved
c.Lesrlesdfinisparlesutilisateurs
Ilestpossiblededfinirsespropresrlesafindefaciliterladministrationdesdroitslintrieurdelabase.
Le rle SQL Server va tre mis en place lorsque plusieurs utilisateurs Windows souhaitent effectuer les mmes
oprations dans la base et quil nexiste pas de groupe Windows correspondant ou bien lorsque des utilisateurs
authentifisparSQLServeretdesutilisateursauthentifisparWindowsdoiventpartagerlesmmesdroits.
Pour les rles dfinis au niveau base de donnes, il est possible de savoir quels utilisateurs en bnficient, en
demandantlaffichagedelafentredespropritsdurledepuisSQLServerManagementStudio.

Les rles peuvent tre accords soit directement un utilisateur, soit un autre rle. Cependant, limbrication
rptedesrlespeutnuirelaperformance.Deplus,ilnestpaspossibledecrerdesrlesrcursifs.
Lutilisationderlespeutparatreparfoislourdelorsdelacrationmaisfacilitegrandementlesvolutions
quipeuventintervenir(modificationdesautorisations,desutilisateurs).
Pour dfinir un rle il faut tre membre du rle sysadmin, ou bien membre de db_owner ou
db_securityadmin.
Linterrogationdestablessystmesys.database_principalsetsys.database_role_memberpermetdeconnatrela
listedesutilisateursquiappartiennentchaquerledebasededonnes.Lexemplesuivantillustrecepropos:
- 7 - ENI Editions - All rigths reserved

Commelensembledesoprationsdadministration,ilestpossibledegrerlesrlesdedeuxfaonsdiffrentes:
Lacrationdesrlesdebasededonnesestpossibleenralisantlesoprationssuivantes:
G Depuislexplorateurdobjets,sepositionnersurlabasededonnesutilisateurconcerneparcetajout.
G SepositionnersurlenudScuritRlesRlesdebasededonnes.
G Depuis le menu contextuel associ au nud Rles de base de donnes, faire le choix Nouveau rle de
basededonnes.
Exemple
Danslcransuivant,lerleRoleTestestcr.
SQLServerManagementStudio
- 8 - ENI Editions - All rigths reserved

Cestparlintermdiairedelafentreprsentantlespropritsdurlequilestpossibledelemodifier.
Loptiondesuppressionestgalementdisponibledepuislemenucontextuelassociaurlesupprimer.
Syntaxe:
CREATE ROLE nomRole
[ AUTHORIZATION propritaire ]
nomRole
Nomdurlequivientdtrecr.
propritaire
Ilestpossibledeprciserunpropritairepourlerle.
Exemple:
TransactSQL
Cration
- 9 - ENI Editions - All rigths reserved

Lagestiondesmembresdurleseraliseenutilisantlaprocdurestockesp_addrolememberpourajouterun
utilisateur.
Syntaxe:
sp_addrolemember nom_rle,
compte_scurit
Nom_rle
Nomdurleauquellecomptedutilisateurdoittreajout.
Compte_scurit
NomdunutilisateurdebasededonnesoubiendunrleSQLServer.
Exemple:
Gestiondesutilisateurs
- 10 - ENI Editions - All rigths reserved

Loprationinverseseffectueaumoyendelaprocduresp_droprolemember.
Syntaxe:
sp_droprolemember nom_role, compte_
scurit
Syntaxe:
DROP ROLE nomRole
Exemple:

3.Rlesdapplication
Suppression
- 11 - ENI Editions - All rigths reserved
Lesrlesdapplicationsontdesrlesdfinisauniveaudelabasededonnessurlaquelleilsportent.Commetous
lesrles,lesrlesdapplicationpermettentderegrouperdesautorisationsdobjetsetdinstructions.Cependantles
rlesdapplicationsedistinguentcarilsnepossdentaucunutilisateuretilssontprotgsparunmotdepasse.
Lalogiquedunrledapplicationestdepermettretouslesutilisateursduneapplicationdepossdersuffisamment
de droits pour le bon droulement de lapplication o les oprations qui peuvent tre ralises sur la base de
donnes sont contrles par le programme client. Cependant les utilisateurs euxmmes ne disposent pas de
suffisammentdeprivilgespourraliserlensembledesoprationsdirectementenSQL.
Lorsquunrledapplicationestactivdepuisunapplicatifclientoubienunscript,lesautorisationscontenuesdans
ce rle prennent le pas sur toutes les autorisations accordes directement ou par lintermdiaire de rles
lutilisateurdelabasededonnes.
Les rles dapplication permettent dobtenir un comportement standard de lapplication quel que soit lutilisateur
Windowsquilancelapplication.
Comme les rles dapplication sont dfinis au niveau base de donnes, il nest pas possible de leur accorder des
privilges sur dautres bases. En effet, la connexion aux autres bases nest possible que par lintermdiaire du
compteguest.
a.SQLServerManagementStudio
Lesrlesdapplicationsontgrsdefaonsimilairecelledesrlesdebasededonnes.
G Depuislexplorateurdobjets,sepositionnersurlabasededonnesutilisateurconcerneparcetajout.
G SepositionnersurlenudScuritRlesRlesdapplication.
G DepuislemenucontextuelassociaunudRlesdapplication,fairelechoixNouveaurledapplication.
Exemple
LerledapplicationRoleTestAppliestcr.
- 12 - ENI Editions - All rigths reserved

CestparlintermdiairedesPropritsdurlequilestpossibledemodifierlemotdepassedurle.
Lajoutdepermissionsurdesinstructionsoudesobjetsseraliseaveclesmmestapesquelagestiondesdroits
auniveaudesutilisateurs.
Lasuppressiondunrledeserveursefaitparlintermdiairedumenucontextuelassociaurle,enslectionnant
lechoixSupprimer.
b.TransactSQL
Syntaxe
CREATE APPLICATION ROLE nomRoleApplication
WITH PASSWORD = motDePasse
[, DEFAULT_SCHEMA = schma ]
Exemple:
Crerunrledapplication
- 13 - ENI Editions - All rigths reserved

Syntaxe
DROP APPLICATION ROLE nomRoleApplication
Exemple:

LinstructionALTERpermetdemodifierlemotdepassemaisgalementleschmapardfautetlenomdurle.
ALTER APPLICATION ROLE nomRoleApplication
WITH {NAME = nouveauNom|
PASSWORD = nouveauMotDePasse|
DEFAULT_SCHEMA = nouveauNomSchma}
Supprimerunrledapplication
Modifierlerle
- 14 - ENI Editions - All rigths reserved
Exemple:

c.Lutilisation
Lactivation dun rle dapplication se fait au moyen de la procdure stocke sp_setapprole. Ds quun rle de
serveur est activ, les droits de lutilisateur sont ignors et seules comptent les autorisations attribues au rle
dapplication.
Syntaxe:
sp_setapprole rle,
[Encrypt N] mot-passe
[, style_cryptage]
rle
Nomdurledapplicationquivatreactiv.
mot_passe
Lactivation dun rle dapplication est conditionne par le mot de passe. Le mot de passe peut tre crypt par
lintermdiaire de la fonction canonique ODBC Encrypt. Loption N permet de convertir le mot de passe au format
unicode.
style_cryptage
Permetdespcifierunstyledecryptagepourlemotdepasse.Deuxstylessontdisponibles:
none:LemotdepasseesttransmisSQLServersanscodagepralable.Cestloptionpardfaut.
odbc:LemotdepasseestcodlaidedelafonctionEncryptdODBC.Cettefonctionnalitnestpossiblequesur
unclientODBCcommuniquantavecleserveurOLEDBdeSQLServer.
Exemple:
- 15 - ENI Editions - All rigths reserved

- 16 - ENI Editions - All rigths reserved


Introduction
SQLServerdonnelapossibilitdautomatiserlestchesadministratives.Ilnestbiensrpaspossibledautomatiser
touteslestchesmaislestchesplanifiesreprsententunboncomplmentloptimisationfaitepardfautparSQL
Server.Deplus,aveccestchesprdfinies,ladministrateurpossdeunrledanticipateur,cequiluidonneplusde
possibilitspourentirerlemeilleurtantauniveaudesperformancesquedelafiabilit.
Lagestiondestchesplanifies,desalertesetdesoprateurssontdesservicesrendusparlagentSQLServer.Ce
service doit tre dmarr afin que ces lments soit grs. Lagent SQL Server travaille avec lObservateur des
vnementspourlagestiondeserreursSQLServer,lAnalyseurdeperformancespourlagestiondesalertessurdes
conditionsdeperformances,etlabaseMSDBafindeconnatrelarponseappliquerfaceunealerte,oubienles
tchesplanifiesexcuter.
Principedefonctionnement
Faceunealerte,lagentpeutragirenexcutantuntravailet/ouenprvenantunoprateurafinquecederniersoit
aucourantduproblmequivientdesurgir.Bienentendu,lexcutiondunetchepeutconduireaudclenchementde
nouvellesalertesetainsidesuite.
DautrestchesplanifiesvonttreexcutesparleserviceSQLServerAgent,nonpasenrponseuneerreurmais
surunebasedetemps.Parexemple,unereconstructiondesindexpeuttreplanifieunefoisparsemainedansla
nuitdusamediaudimanche.
Lagent SQL Server permet de raliser une administration prventive des problmes qui peuvent se poser lors de
lexploitationcourantedunserveurdebasesdedonnes.
- 1 - ENI Editions - All rigths reserved
Configurationdesservices
CommelexcutionautomatiquedetravauxadministratifsreposesurleserviceSQLServerAgent,ilestimportantque
cederniersoitcorrectementconfigur.
LaconfigurationduserviceMSSQLServeratabordelorsdelinstallation.

Exceptionnellement,ilestpossiblededmarrerceservicesouslaformedapplicationlaidedesqlagent90.exe.
1.ComptededmarragepourSQLServerAgent
Le service SQL Server Agent sexcute dans le contexte dun compte dutilisateur. Ce compte peut tre Systme
Local,ServiceRseauoubienuncomptedutilisateur(localousurledomaine).Lesdeuxpremierscascorrespondent
des comptes prdfinis qui permettent de faire un certain nombre dactions. Si le service SQL Server Agent est
amenaccderdesressourcesdisponiblessurlerseau,ilestprfrablequilsexcutedanslecontextedun
compte dutilisateur du domaine. Ce choix est fix initialement lors de linstallation, toutefois il est possible de le
modifierparlasuite.Danslecasdelutilisationduncomptedutilisateur,aucunprivilgenestattribudirectement
lutilisateurmaislegroupeSQLServerAgentUser$nomOrdinateur$MSSQLServer(pourlinstancepardfaut)estcr.
Cegroupevasevoirattribuerlesprivilgessuivants:
G Ouvrirunesessionentantqueservice,
G Ouvrirunesessionentantqueprogrammedetraitementdelots,
G Remplacerunjetonauniveauprocessus,
G Outrepasserlecontrledeparcours,
G Changerlesquotasdemmoiredunprocessus,
Lefaitdepasserparungroupesimplifielagestiondesprivilgeslorsdunchangementducompteutilis.
Il est possible de configurer ce service dmarrage automatique. Cette option permet une plus grande
souplessedanslutilisationdelagentSQLServer.
a.ConfigurationduservicedansWindows
PourconfigurerlesservicesrelatifsMSSQLServeretSQLServerAgent,ilestpossibledepasserparlaconsolede
gestion des services de Windows. Cependant, il est prfrable de configurer les services sexcuter dans le
contexteduncomptedutilisateurdudomainedslinstallationdeSQLServer.
- 1 - ENI Editions - All rigths reserved

AprsavoirslectionnleserviceSQLSERVERAGENT,ilfautappelerlabotededialogueaffichantlespropritsdu
serviceafindepouvoirlesconnatreetlesmodifier.Lespropritspeuventtreaffichesenutilisantlicnedansla
barredoutils,enpassantparlemenuActionPropritsouparlechoixPropritsdanslemenucontextuel.

- 2 - ENI Editions - All rigths reserved


b.ConfigurationduservicedansSQLServerConfigurationManager
IlestpossibledegrerlaconfigurationduservicedepuisSQLServerConfigurationManager.Cetutilitairepermet
devisualiserlesseulsservicesdeSQLServer.

Pourafficheretmodifierlesproprits,ilfautdoublecliquersurleserviceoubienslectionnerPropritsdansle
menucontextuelassociauservice.

Afindefaciliterlagestiondesservices,ilestprfrablequelesservicesMSSQLServeretSQLServerAgent
sexcutentdanslecontextedummecomptedutilisateurdudomaine,maiscelanestpasobligatoire.De
mme, si plusieurs serveurs SQL doivent communiquer sur un ou plusieurs domaines, tous les services
sexcuterontdansuncomptedutilisateurquipossdemmenometmmemotdepasse.
Il est galement possible de connatre le statut du service (dmarr ou non) depuis SQL Server Management
Studio.Ilestpossibledydmarrer,darrteroubiendesuspendreleservice.
- 3 - ENI Editions - All rigths reserved

c.LascuritdeSQLServerAgent
LeserviceSQLServerAgentpermetlagestiondenombreuxlments.Sileservicedoitpossderdesdroitslevs
surleserveurpourtrecapablederalisercorrectementtouteslestchesquiluisontassignes,lutilisationdece
service doit tre contrl au plus juste. Ce contrle est assur par les trois rles de base de donnes
SQLAgentUserRole,SQLAgentReaderRole etSQLAgentOperatorRoledfinissurlabasemsdb.Lappartenance
cesrlesnestncessairequepourlesutilisateursnonmembresdurledeserveursysadmin.
Parexemple,siunutilisateurseconnectelaconsolegraphiqueSQLServerManagementStudiosanstremembre
delundecestroisrles,alorsloutilneprsenteratoutsimplementpaslenudrelatifSQLServerAgent.Ainsi,
lutilisateurnestpascapabledemodifier,nimmedeconnatreletravailralisauniveaudelautomatisationde
tches.LemmeniveaudescuritestdfiniauniveauTransactSQL.
Enplusdesrlesdebasededonnes,leservicedisposedessoussystmesetdesproxiespourgreraumieux
tousleslmentsdescurit.
Lesoussystmepermetdeprsenterlafonctionnalitdisponiblepourunetapedetravail.
Un proxy pour SQL Server Agent permet de grer la scurit relative plusieurs soussystmes ainsi que les
connexionsassocies.
Ainsi, le propritaire dune tape de travail ne pourra prciser un proxy pour cette tape, si et seulement sil
appartientceproxy.
2.Laconfigurationdelamessagerie
La gestion des mails avec SQL Server passe par le service de mail de base de donnes. Ce service permet une
meilleuregestiondesmailsauseindelentreprisecariloffrelafoisplusdesouplesseentermedemiseenuvre
et de performance mais aussi il garantit une scurit plus importante que le service SQLMail prsent dans les
versionsantrieuresdeSQLServer.
SQLMail est maintenu dans SQL Server pour des raisons de compatibilit. Il ne faut pas lutiliser pour de
nouveauxdveloppements.
LeservicedemaildebasededonnesutiliseleprotocolestandardSMTPpourenvoyerlesmails.Ilnereposepassur
MAPI, ce qui rend facultatif linstallation dun client de messagerie comme Outlook. Au travers de ce protocole, le
servicedemaildebasededonnesprendenchargelenvoidemailsauformatHTML.
LeservicedesmailsestexcutdansunprocessusdistinctdeceluideSQLServer.Ainsi,siceserviceestdfaillant,
celanevapasperturberlebonfonctionnementdelabasededonnes.Lesmailsirontseplacerdanslafiledattente
duprocessusliauservicedesmailsdebasededonnes.
Leservicedemessageriedebasededonnesnestpasactifpardfaut,aussilassistantdeconfigurationsecharge
- 4 - ENI Editions - All rigths reserved
delactiveravantdeleparamtrer.Cetteactivationestobligatoirepourlebonfonctionnementduservice.
a.ConfigurationdepuisSQLManagementStudio
Lassistantdeconfigurationdelamessageriedebasededonnesvapermettrederalisersimplementetentant
guidlunedesactionssuivantes:
G configurerlamessageriedebasededonnes,
G grerlescomptesdelamessageriedebasededonnes,
G grerlesprofilsdescurit,
G grerlesparamtressystme.
LassistantestlancdepuisSQLServerManagementStudioenslectionnantConfigurerlamessageriedebasede
donnesdanslemenucontextuelassociaunudGestion MessageriedebasededonnesdelinstanceSQL
Serversurlaquellelaconfigurationdoittrefaite.

Le premier cran de lassistant (aprs lcran daccueil) permet de slectionner laction que lon souhaite raliser
aveclassistant.
Danslecasolechoixseportesurlaconfigurationduservice,lassistantsechargededmarrerleservice.
Pour que le service de messagerie de base de donnes puisse fonctionner, il doit disposer dun compte mail
utiliser. Ce compte est dfini au sein dun profil. Les profils permettent de regrouper logiquement les diffrents
comptesdecourriels.
- 5 - ENI Editions - All rigths reserved
Dfinitiondunpremierprofil
EnutilisantleboutonAjouter,ilestpossiblededfinirunouplusieurscomptesdecourrier.
- 6 - ENI Editions - All rigths reserved
Dfinitionduncomptemail
Par la suite, lassistant propose simplement de rendre public le profil, cestdire accessible lensemble des
utilisateursduserveur.Enfin,lassistantsetermineparuncrandesynthsequirsumelesdiffrentesoprations
demandes.Lavalidationdecettesynthseentranelacrationduprofil.
b.Testerleservice
Seuls les utilisateurs membres du rle de serveur sysadmin ou bien du rle de base de
donnesdatabaseMailUserRoledfinisurlabasemsbd,peuventenvoyerdesmails.
Ilestfaciledetesterleprofil,enslectionnantEnvoyerunmessagelectroniquedetestdepuislemenucontextuel
associaunudMessageriedebasededonnesdepuislexplorateurdobjetsdeSQLServerManagementStudio.
- 7 - ENI Editions - All rigths reserved

Uncranpermetalorsdeprciserleprofilutiliserainsiqueledestinatairedumessagedetest.

- 8 - ENI Editions - All rigths reserved


Lesoprateurs
Unoprateurpeutcorrespondreunepersonnephysiqueoubienunrlejoudanslentreprise.Ainsi,enfonction
delatailledelentreprise,unemmepersonnephysiquepeutjouerlerledeplusieursoprateurs,oubienunmme
oprateurpeutcorrespondreplusieurspersonnesphysiques.
Les oprateurs seront utiliss par lagent SQL Server pour prvenir de la fin dexcutiondun travail ou bien lors du
dclenchementdunealertepourlesinformerdelagravitdelasituation.
Pourtablirlacommunicationaveclesoprateurs,lagentSQLServerdisposedetroiscanauxdecommunication:le
mail,laradiomessagerieetlemessagevialerseau(netsend).
Laremisedunemailloprateurpasseparleservicedemessagerieetcestleserveurdemessageriequisecharge
dacheminerlemailjusqusondestinataire.
Pourlesmessagesdetyperadiomessagerie,laussilagentSQLServersappuiesurleservicedemessagerie:cestle
serveur de messagerie qui se chargera de transmettre le message vers le destinataire en fonction de la passerelle
configuresurleserveur.LemessageinitialfourniparlagentSQLServerdevrabienentendurespecterlescontraintes
imposesparcettepasserelle.
Enfinlesmessagesvialerseau,quicorrespondaientauparavantlacommandenetsend,sappuientmaintenantsur
lesservicesdemessagerieinstantaneWindowsMessenger.Ceservicedoitdoncsexcutersurleserveurainsique
surlepostedeloprateur.
Ladfinitiondetouslesoprateurseststockedanslabasemsdb.
1.Cration
Ladfinitiondesoprateursavantcelledesalertesetdestravauxestprfrablecarlesoprationsadministratives
senchanentalorsdansunordrelogique.
Avantdecrerlesoprateurs,ilestimportantdetenircomptedecertainspointsimportants:
G Si plusieurs personnes sont concernes par le mme problme, il faut utiliser un alias de groupe pour le
courrierlectronique.Cettemthodeestplussouplequededfinirautantdoprateursquedepersonnes
prvenir.
G Testertouteslesmthodesdenotificationdoprateurs.
G La commande net send ne peut tre utilise que pour prvenir des oprateurs et serveurs excutant
Windows.
Lagestiondesnomsdemessagerieprsentequelqueslimitationsetafindviterlesproblmes,ilconvient
dedonnerlenomcompletdeladressedemessagerie(exemple:livre@eni.fr)pourviterlesconflitssides
oprateursportentlemmenom.
Lesprincipalescaractristiquesdunoprateursont:
G sonnom,
G lesinformationsledcrivant,
G lesmoyensdontSQLServerAgentdisposepourleprvenir.
Ilestpossiblededfinirunoprateursupplant.Cedernierrecevralemessageuniquementsiloprateurinitialest
injoignable.
Cet oprateur est galement nomm oprateur de prvention de dfaillance. Loprateur de prvention de
dfaillancenestdisponiblequepourlesalertesdlivresparradiomessagerie.
Considrationsgnrales
Loprateursupplant
- 1 - ENI Editions - All rigths reserved
Pourcrerunnouveloprateur,ilfautslectionner NouvelOprateurdepuislemenucontextuelassociaunud
SQLServerAgentOprateursdelexplorateurdobjetsdeSQLServerManagementStudio.

Ilestpossibledecrerunnouveloprateurparlintermdiairedelaprocdurestockesp_add_operator.
Exemple:
SQLServerManagementStudio
TransactSQL
- 2 - ENI Editions - All rigths reserved

Touteslesprocduresstockessontdanslabasemsdb,lapremireinstructionduscriptdoitdonctreuse
msdb.
2.Modification
Cest par lintermdiaire de la bote de dialogue Proprits de loprateur quil est possible de connatre les
informationsleconcernantetdemodifiercertainsparamtres.

SQLServerManagementStudio
- 3 - ENI Editions - All rigths reserved

Laprocdurestockesp_help_operator,permetdeconnatrelesparamtresactuelsdeloprateur.

Pourraliserdesmodificationssurlesoprateursdjdfinis,ilsuffitdexcuterlaprocduresp_update_operator.
TransactSQL
- 4 - ENI Editions - All rigths reserved

3.Suppression
Lasuppressiondunoprateurnestpossiblequesicederniernestpasoprateurdedfaillance.
Danslemenucontextuelliloprateur,slectionnezlechoixSupprimer.

Ilsuffitdexcuterlaprocduresp_delete_operator.
SQLServerManagementStudio
TransactSQL
- 5 - ENI Editions - All rigths reserved

- 6 - ENI Editions - All rigths reserved


Lestravaux
Lautomatisation de certaines tches dadministration rptitives est possible par lintermdiaire dun travail et de la
planificationdesonexcution.Ilesttoutefoispossibledelancermanuellementlexcutionduntravail.
Lestravauxsontconstitusdunensembledetches.lafindechaquetchedeuxcasseprsentent:soitlatchea
texcuteavecsuccs,soitlatcheachou.
Le travail, qui est un enchanement de tches doit dfinir toutes les solutions possibles afin quil se droule
correctement.
Touslestravauxsontstocksauseindelatablesysjobsdanslabasemsdb.
1.Miseenplace
Lesprincipalescaractristiquesduntravailsont:
G lenom:ildoittreuniquesurleserveuretlimit128caractres,
G la catgorie : elle permet dorganiser les travaux en fonction des oprations quils ralisent. Il existe, ds
linstallation du serveur, des catgories prdfinies telles que : Texte intgral, Maintenance de la base de
donnes...
G lepropritaire:celuicipeuttrediffrentdelutilisateurquilacr,
G ladescription,
G lestapesdutravail,
G laplanification,
G lanotification.
Chaque travail peut tre li une catgorie. Le regroupement par catgorie permet un regroupement logique des
diffrentstravauxetdoncuneprsentationdemeilleurequalitdansSQLServerManagementStudio.
Lacrationduntravailnestpossiblequepourunadministrateurdusystme(sysdamin)oubienpourunutilisateur
membredelundestroisrlesdebasededonneslisSQLServerAgent.
La modification et la suppression dun travail nest possible que par le propritaire ou bien un administrateur du
systme.
LadfinitionduntravailpeuttreralisesoitparSQLServerManagementStudio,soitaumoyendelaprocdure
stockesp_add_job.
- 1 - ENI Editions - All rigths reserved

Lorsdelacrationduntravail,ilfaut:
G vrifierqueletravailestactiv,
G dterminerquelsendroitsletravailsexcutedanslecasdetravauxmultiserveurs.
LestravauxnepeuventsexcuterquesileserviceSQLServerAgentestlanc.

- 2 - ENI Editions - All rigths reserved


2.Dfinitiondestapesduntravail
IlestpossiblededfinirlestapesduntravailsoitparlintermdiairedeSQLServerManagementStudio,soitpar
lutilisationdelaprocdurestockesp_add_jobstep.
Touteslestapessontstockesdanslabasemsdbetlatablesys_add_jobstep.
Lestapesdetravailsonttypescequipermetdeslectionnerlesoussystmeapproprilexcutiondeltape.Il
existe sept types dtapes diffrents. Quatre dentre eux sont dtaills par la suite. Les autres types de tches
concernentdesscriptsMicrosoftActiveX,destchesAnalysisServicesetdestchesIntegrationServices.
Lescomptesrendusdelexcutiondesdiffrentestapessontconservsdanslatablesysjobstepslogsdelabase
msdb.
a.TransactSQL(TSQL)
Cestletypepardfautdunetapedetravail.
Il est possible dexcuter des instructions Transact SQL, des procdures stockes, des procdures stockes
tendues.Ilfauttenircomptedespointssuivants:
G lorsdelexcutionduneprocdure,touslesparamtresrequisdoiventtrefournis.
G unjeudersultatspeuttreenvoydansunfichierdesortie.Cependantilnestpaspossibledutiliserle
jeudersultatsensortiedunetapecommeentrepourunetapesuivante.
b.Commandedusystmedexploitation(CMDEXEC)
Il est possible dans une tape dexcuter une commande du systme dexploitation ou de demander lexcution
dunprogrammeoudunfichierdecommande.Ilfautnanmoins:
G identifieruncodedesortiepourindiquerquelacommandearussi,
G indiquerlechemincompletduprogrammeoudufichierdecommande.
Ltapedetravaildoitrfrencerunlmentexcutabledusystme,cestdireunfichierportantlextensioncmd,
batouexe.Lechemindaccscefichierdoittreunchemincomplet.
c.ScriptsPowerShell
AvecWindowsServer2008estapparuunnouveaulangagedeScripting:lePowerShell.TouslesserveursMicrosoft
proposentdesbibliothquesspcifiquesafindepouvoiradministrerleserveursousformedescript.Aveccetype
dtape, il est possible de raliser des tches de gestion du serveur ou bien de gestion du moteur de base de
donnes.Chaquetapedecetypeexcuteunprocessussqlpsquiconsomme20Modemmoirevive.Siungrand
nombredetchesdecetypesontexcutesdefaonsimultane,celapeutavoiruneincidencenonngligeable
surlesperformancesglobalesduserveur.
d.Rplication
Lesprocessusderplicationsontappelspardesagentsetsontmisenuvresousformedetravaux.
LestchesrelativeslarplicationsontreprsentespardestypesdtapesbiendistinctstelsSNAPSHOToubien
DISTRIBUTIONquicorrespondent,respectivement,auxtchesdecaptureinstantaneoudedistribution.
3.Enchanementsentrelestapes
lafindechaquetape,deuxsituationssontpossibles:soitltapeestunsuccs,soitltapeestunchec.
- 3 - ENI Editions - All rigths reserved

Pardfaut,encasdesuccs,SQLtentedexcuterltapesuivante.Pourchaquetapeonpeutprciserunnombre
detentativesdexcutionainsiqueledlaidattenteentrechaquereprise.
Pardfautgalement,letravailprendfinencasdchecdunetape.Lorsdelchecdunetapeilestpossiblede
notifierunoprateuret/oudinscrireunmessagedanslobservateurdesvnements,ouencoredechanersurune
tapequelconquedutravail.
Uneautrepossibilitconsisteconfigurerletravailpourquilsoitsupprimautomatiquementaprssonexcution.
4.Laplanification
Lexcution des travaux peut tre planifie. Cette planification sera importante pour toutes les oprations de
maintenancedebasesdedonnes,quipourronttrelancesdesmomentsdefaibleactivitduserveur.
Les planifications sont mises en place par SQL Server Management Studio ou bien par la procdure stocke
sp_add_jobschedule.
- 4 - ENI Editions - All rigths reserved

Lestravauxserontexcutssoitenrponsedesalertes,soitselonlesplanificationsdfinies.Siontravailledans
unenvironnementmutiserveur,ilestpossibledeprciserplusieursserveursciblespourunmmetravail.
Laplanificationduntravailnestpriseencomptequesielleestactive,etletravailneseraexcutquesilagentSQL
Serverestdmarr.
Laplanificationpeutdemanderlexcutiondutravail:
G unedateetheureprcise(uneseuleexcution),
G defaonrgulire:touteslesminutes,heures,jours,semaines,mois...ouunecombinaisondecesdiffrents
critres(exemple:excutiondutravailtoutesles2heuresdulundiauvendredietde8h0019h00),
G lorsqueleprocessusestinactif.Cetteoptionnestdisponiblequesilecontexteducomptedutilisateurutilis
parSQLServerAgentestmembredugroupelocalAdministrateurs.
Si la planification dun travail est ralise avec rflexion, lexcution des travaux nentranera aucune surcharge de
travailpourleserveurlorsquilseralourdementsollicitparlesutilisateurs.Laplanificationdelensembledetousles
travauxadministratifspermetdoptimiserlestempsderponsesduserveur.
5.Exempledetravail
Letravailsuivantraliselacrationdunebase,dunetableetdunutilisateurdebasededonnes.Ilatplanifi
poursexcuteruneseulefoisetunoprateurseraavertienfindexcutiondutravail.
- 5 - ENI Editions - All rigths reserved

- 6 - ENI Editions - All rigths reserved

- 7 - ENI Editions - All rigths reserved

- 8 - ENI Editions - All rigths reserved

Ilestbiensrpossiblededfinirplusieursplanificationspourunmmetravail.
- 9 - ENI Editions - All rigths reserved
Lesalertes
Lesalertesvonttredfiniesafindedclencheruntraitementautomatiquepourcorrigerleproblmeet/ouavertirun
oprateurquiseraenmesuredagirrapidementafindersoudreleproblme.
1.Prsentation
Lors du fonctionnement du serveur, des erreurs, des messages ou des vnements gnrs par SQL Server sont
inscrits dans lobservateur des vnements de Windows. Lagent SQL Server va lire le journal application la
recherchedesinformationsquilestenmesuredetraiterenlescomparantauxalertesquisontdfiniesdanslatable
sysalertsdelabasemsdb.
Une alerte peut galement tre dclenche suite au dpassement dune valeur limite (fixe) par un compteur de
performance. Enfin une alerte peut tre dclenche suite un vnement WMI (Windows Management
Instrumentation)particulier.Danscederniercas,lagentSQLServerestunclientdelespacedenomsWMIetlorsde
ladfinitiondelalerte,ilestncessairedespcifierlvnementWMIquivadclencherlalerte.
LesalertesassociesuneerreurSQLServersontlesplusfrquentes.
a.Commentinscrireuneinformationdanslejournalapplication?
Troistypesdvnementsontinscritsdanslobservateurdesvnements:
G les messages dont le niveau de gravit et suprieur 19. Les messages sont stocks dans la table
sysmessages de la base Master. Pour forcer un message dont le niveau de gravit est infrieur 19
sinscriredanslejournal,ilfautexcuterlaprocduresp_altermessage.
G touteslesinstructionsRAISERRORavecloptionWITHLOG.
G toutvnementconsignavecxp_logevent.
La taille du journal application de lobservateur des vnements de Windows doit tre suffisante pour
contenirtouslesmessages.
b.CommentragitlagentSQLServer?
LagentSQLparcourtlejournalapplicationlarecherchedesmessagesprovenantdeSQLServer.Ilcomparealors
lerreur avec les alertes dfinies dans la table sysalerts qui est conserve dans le cache pour amliorer les
performances.
Cettealertedclenchelexcutiondunetcheplanifieet/oulanotificationdoprateur.
2.Gestiondesalertes
Chaquealertepossdeunnomquiestunique.Cenomestlimit128caractres.
Seulslesmessagesinscritsdanslobservateurdesvnementspeuventdclencherunealerte.

a.EnrponsedeserreursSQLServer
SurdeserreursSQLServerilestpossibledelierunealertesoitaunumrodelerreur,soitlagravit.
Si pour un vnement donn (n derreuretniveaudegravit),deuxalertespeuventsedclencher,alorslagent
SQLServerexcuteralerreurlaplusspcifiquepossible,danscecascellelieaunumroderreur.Enrponseun
vnementuneseulealerteaupluspeuttredclenche.
Avantdecrerunealerte,ilfautprendreenconsidrationlescritressuivants:
- 1 - ENI Editions - All rigths reserved
G le numro derreur doit tre inscrit dans lobservateur des vnements si on souhaite le dclenchement
dunealerte.
G leniveaudegravitpeuttrelefacteurquidclenchelalerte.Seulesleserreursdisposantdunniveaude
gravit situ entre 19 et 25 sont inscrites automatiquement dans lobservateur des vnements. Les
niveaux 20 25 correspondent des erreurs irrcuprables, il faut donc toujours dfinir loprateur
prvenir en cas derreur de ce type. Les alertes fournies en exemple par SQL Server correspondent la
gestiondecesniveauxdegravit.
G la base de donnes : il est possible de prciser la base lorigine de lvnement afin de spcialiser les
alertes.Onpeutainsicrerplusieursalertespourunmmenumroderreur.
G textedelvnement:toujoursdanslebutdelimiterlesdclenchementsdalertesilestpossibledeprciser
letextequedoitcontenirlemessagedelvnement.
b.Letransfertdvnements
Ilestpossible,ensebasantsurunniveaudegravit,detransfrertouslesmessagesquipossdentunniveaude
gravit suprieur ou gal vers un autre serveur SQL 2008. Le transfert dvnements peut tre utilis afin de
centraliserletraitementdesalertespourungroupedeserveursexcutantSQLServer2008.
G Lacentralisationpermetunegestionsimplifiedesalertes.
G Ladministration dun serveur SQL supplmentaire demande une charge de travail moindre pour
ladministrateur.
G Letempsdemiseenuvreestrduitcartouteslesalertesnesontdfiniesquuneseulefois.
G Letransfertdvnementsaugmenteletraficrseau.
G Pointdedfaillanceunique.
G Leserveurquitraitetouteslesalertessubitunechargedetravailimportanteetestmoinsdisponiblepourle
traitementdesdonnesquilgre.
La dsignation dun serveur de transfert peut se faire uniquement au moyen de SQL Server Management Studio,
depuislafentredespropritsduserviceSQLServerAgent.
Avantages
Inconvnients
Miseenuvre
- 2 - ENI Editions - All rigths reserved

c.Miseenplace
Pour dfinir une nouvelle alerte, il faut slectionner Nouvelle alerte depuis le menu contextuel associ au nud
AgentSQLServerAlertesdelexplorateurdobjets.
SQLServerManagementStudio
- 3 - ENI Editions - All rigths reserved

Ilrestecompltercettebotededialogueenyprcisantlenomdelalerte,sonattachementunnumroderreur
ouunniveaudegravit.Ilestpossiblederestreindrelaportedelalerteenspcifiantunebasededonnesoule
textequedoitcontenirlvnement.
- 4 - ENI Editions - All rigths reserved

LapageRponsepermetdeprcisercequedoitfairelalerte.
Ilestpossibledeprciseruntravailexcuteretlesoprateursprvenir.Pourchaqueoprateur,ilconvientde
prciser le moyen utilis pour le prvenir. Les notifications aux oprateurs comportent le texte qui est prcis au
niveaudelalerte.
CestparlintermdiairedesPropritsdelalertequilserapossibledeladsactiveroudelaractiver.
Activation/Dsactivationdelalerte
- 5 - ENI Editions - All rigths reserved

Laprocduresp_add_alertpermetdedfinirdenouvellesalertesliessoitunnumroderreur,soitunegravit.
Cetteprocduredoittreutiliseentantpositionnsurlabasemsdb.

TransactSQL
Activation/Dsactivationdelalerte
- 6 - ENI Editions - All rigths reserved
Cetteoprationsedrouleparlintermdiairedelaprocduresp_update_alert.

Ilfautcettefoisutiliserlaprocduresp_delete_alert.

d.Enrponsedeserreursutilisateur
Ilestpossiblededfinirdesmessagespropresuneapplication.Cesmessagespeuventsajouterauxmessages
dj dfinis dans SQL Server. La gestion de ces messages se fait au travers de trois procdures stockes :
sp_addmessage,sp_altermessageetsp_dropmessagepourcrer,modifierousupprimerunmessage.
Parexemple,laprocdure sp_addmessageestexcutepourdfinirlemessagederreur qui portera le n50001,
car tous les messages dfinis par lutilisateur portent un numro suprieur 50000. Lors de la dfinition du
message,ilfautgalementdfinirunegravit,unelangueetunmessagederreur.Cestgalementceniveauquil
estpossibledeprcisersilemessageserainscritounondanslejournaldesvnements.
Suppression
- 7 - ENI Editions - All rigths reserved
Pourpouvoirdfinirlemessageenfranais,ilestncessairedecrerunmessageaveclemmenumroderreur
maisenanglais.

Pourdclencherlerreurpartirdelapplicationdebasededonnes,ilsuffitdexcuterlacommandeRAISERROR.

Lagestiondesalertesutiliselesmmesmthodesquecellesabordeslorsdelagestiondesalertesenrponse
desalertesSQLServer.
e.Enrponsedesseuilsdeperformance
Ilestpossiblededfinirdesalertessurdesseuilsdeperformance.CesalertessontliesauxcompteursSQLServer
disponiblesdanslanalyseurdeperformancesdeWindows.
Desalertespeuventtrecressurleslmentssuivants:
G mthodedaccs,
- 8 - ENI Editions - All rigths reserved
G gestionnairedetampon,
G gestionnairedecache,
G basededonnes,
G verrou,
G statistiquesSQLServer.
Ilnestpasncessairequelanalyseurdeperformancessoitexcutsurleposteoestinstallleserveur
SQL.
La dfinition des alertes est presque identique mais au lieu de lier lalerte un numro derreur ou un niveau de
gravit,lalerteestlieunobjet,uncompteur,uneinstance(ventuellement)etunevaleuraudelouendeade
laquellelalerteestleve(lescompteursSQLServersontdtaillsauchapitreOptimisation).
Exemple:
DfinitionlaidedeSQLServerManagementStudiodunealertesuruntauxderemplissagedujournal.Cettealerte
notifieraunoprateur,afinquecedernierraliseunesauvegardepuistronquelejournal.

- 9 - ENI Editions - All rigths reserved


Limportationetlexportationdedonnes
1.Prsentation
Limportation des donnes consiste rcuprer des donnes depuis une source extrieure SQL Server (fichier
ASCII,baseAccess...)etstockercesdonnesdansuneouplusieurstablesdunebaseSQLServer.Lexportation
reprsenteloprationinverse,lecontenudunetable,oulersultatdunerequteestprojetdansunfichierASCII,
oudirectementdansunebaseAccessparexemple.
Limportationestengnraluneoprationponctuellequiinterviententrelacrationetlaconceptiondebaseetla
mise en service de la base. Lors de cette tape dimportation, toutes les donnes, provenant dun systme de
gestion de donnes ancien, sont intgres dans SQL Server. Une fois la migration termine, il est possible de
travailleraveclesdonnescontenuesdansSQLServer.
Cependant,limportationpeutparfoistreuneoprationralisergulirement.Cestlecasnotammentlorsquela
baseSQLsertditerdesanalysessurdesdonnesstockessurdessystmesdiffrents.
Les oprations dexportation sont normalement moins frquentes. En effet si les donnes doivent tre manipules
depuis des outils comme Microsoft Access ou Excel, il est prfrable de travailler directement sur les donnes
stockesdansSQLServerpluttquederaliseruneexportationpourtravailleravecunecopielocaledesdonnes.
Lexportationrestelasolutionidalelorsquunutilisateursouhaitetablirdescalculssurlesdonnesentravaillant
enmodedconnect(surordinateurportableparexemple).
SQL Server fournit plusieurs outils dimportation et dexportation, afin de pouvoir raliser ces oprations entre des
sourcesODBC,OLEDB,feuillesdecalculExcel,fichierstextesASCII.
Si les donnes stockes par SQL Server doivent tre distribues sur dautres serveurs SQL de lentreprise, il est
prfrabledemettreenplacelarplicationdedonnesquioffreplusdesouplesseetquisechargedesynchroniser
lesbasesrpliques.
LarplicationseraabordeauchapitreRplication.

Prsentationdestransfertsdedonnes
2.Lesoutils
Letransfertdinformationsdunebaseversuneautreestuneoprationcourantequidoittreraliserapidementet
de faon sre. Pour rpondre aux diffrents cas dutilisation qui peuvent se prsenter, SQL Server propose
diffrentes options. Toutes ne prsentent pas les mmes caractristiques, mais elles ont en commun le fait de
transfrerunvolumeimportantdinformationsdunesourcededonnesversuneautre.
- 1 - ENI Editions - All rigths reserved
a.SSIS(SQLServerIntegrationService)
AvecSSIS,SQLServerproposebeaucoupplusquunsimpleoutildimportation et dexportationdedonnes.SSIS
permet galement de dfinir des transformations plus ou moins complexes sur les donnes manipules. Cet ETL
(Extract Transforl and Load) permet de travailler avec des sources de donnes externes accessibles par un pilote
OLEDB/ODBC,afindimporterlesdonnesdansunebaseSQLServertoutenralisantdesoprationsdemiseen
formedesdonnes,commeparexempleuntravailsurlesdates.
SSISestgalementunoutilparfaitementadaptpourlalimentationendonnesdunebaseOLAP.Loprationsera
alorsdfiniesousformedetravailplanifi.
b.Rplication
Larplicationdedonnesautoriselacopiededonnesetlasynchronisationafinquetouteslescopiescontiennent
les mmes valeurs de donnes. Il est possible de mettre en place la rplication entre SGBDR fonctionnant sur le
mmerseau,LANouWAN,maislarplicationpeutaussitreraliseviaInternet.
LamiseenplacedesdiffrentstypesderplicationsseradtailleauchapitreRplication.
c.BCP
Cetutilitaireenlignedecommande,permetdimporteretdexporterdesdonnesentreunfichieretSQLServer.Il
sagitdunutilitairedebasequipermetderaliserrapidementdenombreusesoprations.
d.SELECTINTOetINSERT
CesinstructionsSQLpermettent,respectivement,decrerunenouvelletablequicontientlersultatdunerequte,
danslabaseetdinsrerdesdonnesdansunetabledelabase.Lutilisationdecescommandesatdtailleau
chapitreGestiondelabasededonnes.
Les donnes peuvent provenir dun autre serveur que celui o sexcute lopration, on donnera alors le nom
completdelobjetsouslaforme:Serveur.base.schma.objet.
Pardfautlesvaleurssuivantessontutilises:
G Serveur:celuiosexcutelarequte.
G Base:celleindiqueparladernirecommandeuseoubienlabasededonnespardfautdelutilisateursi
aucunecommandeusenaencoretexcute.
G Schma:pardfautcestdbo.
Exemple:
- 2 - ENI Editions - All rigths reserved

e.Lescritresdechoix
Lechoixdunoutildpendduncertainnombredecritres,lespluscourantstant:
G leformatdesdonnes,
G lemplacementdesdonnes,
G lafrquencedelopration:sagitilduneoprationponctuelleouquivasedroulerrgulirement?
G utilisationdunoutilenlignedecommandeouquipossdeuneinterfacegraphique?
G lesperformances.
Fonctionnalits SSIS Rplication BCP SELECTINTOINSERT
Importation
dedonnestexte Oui Oui Oui
sourcededonnesODBC Oui Oui
sourcededonnesOLEDB Oui Oui Oui
Exportation
dedonnestexte Oui Oui
sourcededonnesODBC Oui Oui
sourcededonnesOLEDB Oui Oui Oui
Interface
- 3 - ENI Editions - All rigths reserved
graphique Oui Oui Oui
lignedecommande Oui Oui
Planificationpossible Oui Oui Oui
Transformationdedonnes Oui
Performancesmaximales Oui Oui
Oprationponctuelle Oui Oui Oui
Oprationrgulire Oui Oui Oui
- 4 - ENI Editions - All rigths reserved
LutilitaireBCP
BCP(BulkCopyProgram)estunpuissantutilitaireenlignedecommande.Ilestbienconnudesutilisateursdesversions
prcdentesdeSQLServer.IlestutilislorsquelevolumedestransfertsentrefichierstexteetbaseSQLServerest
important.
BCPpermetdexporterlesdonnesdunetableoudunerequteSQLversunfichiertexteoubiendimporterunfichier
textedansunetable.Lorsdelutilisationilestdoncncessairedeprciserlasourceetladestinationdesdonnes,
ainsiquunnomdutilisateuretunmotdepassepourseconnecterauserveur.
LutilisationdeBCPnencessitepasdeconnaissanceparticulireenTransactSQL,saufdanslecasolexportation
sappuiesurunerequteSQL.Parcontre,ladescriptiondufichierdedonnesestunpointdepassageobligatoire.
1.Lasyntaxe
Ellepeutparatrelourdedansunpremiertempsmaisilestpossibledefixerungrandnombredoptions,cequidonne
beaucoupdesouplesselorsdelutilisationdebcp.
bcp {nom_complet_objet|"requte"}
{in | out | queryout | format} fichier_de_donnes
[-m maximum_derreurs] [-f fichier_de_format] [-x]
[-e fichier_derreurs]
[-F premire_ligne] [-L dernire_ligne]
[-b taille_de_lot_dinstructions]
[-n] [-c] [-w] [-N] [-V {70|80|90}] [-q]
[-C page_de_code]
[-t fin_de_champ] [-r fin_de_ligne]
[-i fichier_dentre] [-o fichier_de_sortie]
[-ataille_de_paquet]
[-Snom_du_serveur] [-Uid_de_connexion]
[-Pmot_de_passe]
[-T] [-v] [-R] [-k] [-E] [-h "option [,...n]"]
nom_complet_objet|"requte"
Il sagit de donner le nom complet de lobjet (table ou vue) ou bien de prciser une requte dont le rsultat sera
exportdansunfichier.
Danslecadredune exportation, il est possible de prendre comme objet une table, une vue ou bien de demander
lexcutiondunerequte.Lutilisateurdoitpossderlesdroitsdeslectionappropris.
Danslecasduneimportationdedonnes,ellenepeutbiensrtreraliseautraversdunerequte.Ilestparfois
possiblederaliserdesinsertionsautraversdunevuesicertainesprcautionsonttpriseslorsdeladfinitionde
cettedernire.Lorsdeltapedimportationilfautquelutilisateursoitmembredurledb_owner.
{in | out | queryout | format}fichier_de_donnes
Lesoptionsindiquentsilsagitduneoprationdexport(out)oudimportation(in)dedonnes.Siunerequteat
spcifieaulieudunnomdobjet,ilfaudrautiliserqueryout.Enfinformatpermetdecrerunfichierdeformatsuivant
lesoptionsspcifies,loptionfpourratreutilise.
Lesautresoptionspermettentderglerletypedufichier(texte...),lesdlimiteursdechampsetdelignes...
Ces quatre options sont retrouves dans de nombreux utilitaires en ligne de commande tel que isql. Ces options
permettentdeseconnecterunserveurSQLetdouvriruneconnexion.Lenomduserveurestprcisparloption
S. Par la suite, il est possible douvrir une session soit en utilisant une authentification Windows (T), soit en
utilisationuneauthentificationSQLServer,ilfautalorsfournirlenomdeconnexion(U)etlemotdepasse(P).
2.Lutilisationdebcpenmodeinteractif
Si lors de lexcution de la commande bcp, lune des options suivantes est manquante (n, c, w ou N), alors
lutilitaireposelesquestionsdefaoninteractivelutilisateur.
S,U,PetT
- 1 - ENI Editions - All rigths reserved

Danslexempleprcdentlesdonnescontenuesdanslatable articlesdelabaseGescomsontexportesversle
fichier articles.txt. Grce loption c les donnes sont exportes en mode caractre. La base est stocke sur le
serveurAravisetcestuneauthentificationWindows(optionT)quiatutilisepourseconnecterauserveur.

Danslexemplecidessuscestlersultatdunerequtequiestexportdansunfichierdedonnes.
- 2 - ENI Editions - All rigths reserved
Utilisationdebcpenmodeinteractif
Lorsdelimportationdedonnesaveclesutilitairesdecopieparblocsquesontbcpetbulk copy,lesdclencheursde
type instead of et insert sont dsactivs. Il est possible de demander leur excution en levant loption FIRE
TRIGGERS.Danscecas,ilfautsassurerquelesdclencheurssontcapablesdetraiterunensembledelignescarils
nesontactivsquunefoisparbloc.
Pourfaciliterladescriptiondesdonnes,ilestpossibledutiliserunfichierdeformat.Sil nenexistepaslorsdela
premireimportation,bcpposelesquestionsafindegnrerlefichierdeformatbcp.fmt.
- 3 - ENI Editions - All rigths reserved
SSIS
1.Prsentation
Deplusenplus,lebesoinsefaitsentirdeconsoliderlesdonnesrpartiesenunpointcentral,puisdelesdployer
sous un format ou bien un autre. Le principal problme rencontr lors de ce type dopration de centralisation de
donnesestleformatdesdonnes.Eneffet,lorsquelesinformationssontrpartiessurdiffrentssystmesetsur
diffrents serveurs, il y a trs peu de chance que ce soit toujours au mme format. Avec SQL Server Integration
Services,ilestpossibledimporter,dexporteretdetransformerdesdonnesentreplusieurssourceshtrognes.
SSISpeutgalementtreutilisepourexporterlesdonnesdepuislabaseversunoutildanalyse.Parexemple,les
donnesintgresparlintermdiairedeSSISpeuventtreconsolidesauniveaudelabase,puisilestpossiblede
fairedenouveauappelSSISpourlesexporterversunfichierExcel.
Les packages SSIS peuvent tre dfinis dans SQL Server Management Studio ou bien dans Business Intelligence
Development Studio. Ce dernier outil concerne les packages SSIS orients sur lintgration des donnes dans une
baseOLAP.Aucontraire,lespossibilitsoffertesdansSQLServerManagementStudiopermettentdeconcevoirdes
packagesenvueduneintgrationsurunebaseOLTP.Ilestpossiblededfiniretdemettreaupointunpackage
dansBusinessIntelligenceDevelopmentStudiopuisdelancersonexcutiondepuisSQLServerManagementStudio.
Pourpouvoirraliserdesoprationsdetransfertdedonnes,ilfautpossderledroitdelecture(SELECT)
surlasourcededonnesettrepropritairedelabasededonnesdedestination.
2.Lespackages
LutilisationdeSSISesttoujoursassocieunpackage.Lepackagereprsenteleprogrammequivatreexcut
parSSIS.LepackageestcomparableunefeuillederoutedontdisposeSSISpoursavoirdansquelordreexcuter
les diffrentes tches. Le package contient donc les flux de contrle, les flux de donnes, le gestionnaire
dvnements,devariables,desconnexions...
Leschmasuivantillustrelecasdunpackageconstitudunesimpletchedetransformationdedonnesetdune
tchedetypefluxdecontrle.
- 1 - ENI Editions - All rigths reserved

Les tches sont galement dnommes tapes. Elles constituent lunit de travail du processus dintgration. Un
mmepackagepeutcontenirdestchesdediffrentesnatures.
a.Lesfluxdecontrle
Lefluxdecontrlepermetdecontrlerlenchanementdestchesdupackage.Pourpouvoirdfinirledroulement
exactdupackage,SSISdisposedetroistypesdlmentsdanslefluxdecontrle:
G lestches,quireprsententlesfonctionnalitsouunitsdetravail
G lesconteneurs,quipermettentdorganiserlogiquementlepackage
G lescontraintesdeprcdenceafindefixerlechemindexcutiondestches.Lescontraintesdeprcdence
peuventsappuyersurlesuccsoulchecdelatcheprcdenteet/ousurunefonctiondvaluationafin
deslectionnerlatchesuivanteexcuter.
Les conteneurs reprsentent les lments de haut niveau disponibles dans les flux de contrles. Les conteneurs
permettent de dfinir des tches rptitives laide dune structure de boucle. Chaque conteneur est typ de la
faonsuivante:
G conteneurFOREACH:ceconteneurpermetdexcuterunensembledetchespourchaquelmentrenvoy
par une numration. Le conteur FOREACH doit sappuyer sur une numration connue comme, par
exemple,leFOREACHADOEnumeratorquipermetdeparcourirlensembledeslignesdunetable.
G conteneurFOR:ceconteneurestsemblableuneboucleFORdfiniedansunlangagedeprogrammation.
Conteneur
- 2 - ENI Editions - All rigths reserved
Pour dfinir le conteneur de boucle FOR, il faut prciser la condition dinitialisation, le test qui doit tre
ralis de faon positive pour excuter les tches dfinies dans le conteneur, et la condition
dincrmentation.
G conteneurdesquences:cetypedeconteneurreprsenteunsousensembledufluxdecontrleetpermet
degrerdefaoncommuneunensembledetcheslies.
Leconteneurhtedetcheestunconteneurparticuliercarilnecontientquune seule tche. Il est configur en
mmetempsquelatcheetnepeutpastredissocidecelleci.
Une tche reprsente une unit de travail dans SSIS. Il existe diffrents types de tche en fonction de laction
demande. Les tches les plus courantes sont les tches de flux de donnes, de prparation des donnes, SQL
Serveretdescript.
Pourcomplterlensembledestchesproposesenstandard,ilestpossiblededfinirdestchespersonnalises
enC#oubienVB.Netparexemple.
b.Lesfluxdedonnes
UnfluxdedonnesdansSSISesttraditionnellementcomposdetroislmentsquisont:
G lasource,
G latransformation,
G ladestination.
Tousceslmentsontpourobjectifdefournirlesdonnesltapesuivante.Aucasouneerreurseproduit,la
lignedinformationconcernesortdeltape,nonpasparlasortienormale,maisparunesortiederreur.
Tche
- 3 - ENI Editions - All rigths reserved

La source reprsente lorigine des informations. Les donnes peuvent provenir, par exemple, dune base de
donnes(viaOLEDB)oubiendunfichierplat(formatcsvoubienXML).
Lasourcevapermettredemettredispositionlesinformationspourltapesuivantecestdirelatransformation.
Ltape de transformation permet de mettre en forme les donnes avant de les fournir la destination. Si cette
miseenformechoue,alorslesdonnessontredirigesversunfluxderreur.
Ilexistedestapesdetransformationsprdfinies,maisilestgalementpossiblededfinirdestransformations
personnalises.
La destination reprsente lendroit o le flux de donnes va stocker les informations. La destination peut
correspondre une source de donnes OLE DB ou bien un DataSet pour stocker le rsultat destination dun
nouveautraitement.
c.Connexions
Pourpouvoirtravailleraveclasourceetladestination,SSISdoittabliruneconnexionaveclesdiffrentessources
Lasource
Latransformation
Ladestination
- 4 - ENI Editions - All rigths reserved
dedonnesrfrences.IlexisteplusieurstypesdeconnexioncommedesconnexionsautraversdADO,dADO.Net
maisaussidesconnexionsversdesfichiersExceloubienencoreversSAP.
d.Variables
Lesvariablesdfiniesauniveaudupackagepermettentderendrelepackageplussoupleentermedeparamtrage
etdefaciliterainsisamiseaupointetsonadaptationdiffrentscasdutilisationsimilaire.Parexemple,laborne
maximaleutiliseparunconteneurdetypeFORpeuttrecontenuedansunevariable.Lasimplemodificationdela
valeuraffectecettevariable,permetdemodifierlecomportementdesconteneursFORquiluifontrfrence.
Encomplmentdesvariablesdfiniesparleconcepteur,SSISproposedesvariablesditessystmecestdirequi
fontrfrencedeslmentsdusystme.Laussi,uneutilisationsystmatiquedecesvariableslaplacedun
codagedirectdelavaleurpermetdedfinirunpackageplussouple,carilsauramieuxsadapter aux diffrentes
configurationsprsentes.
Lalistecidessousillustrequelquesunesdesvariablessystme:
G InteractiveMode:variabledetypeboolennequipossdelavaleurTruesilepackageestexcutdepuis
leconcepteurSSIS.SilepackageestexcutavecDTExec,lavaleurestFalse.
G MachineName:variabledetypechanedecaractres(String)quipermetdeconnatrelenomdupostesur
lequelsexcutelepackageSSIS.
G PackageName:variabledetypechanedecaractres(String)quireprsentelenomdupackageencours
dexcution.
G UserName : variable de type chane de caractres (String) qui contient le nom de lutilisateur qui a lanc
lexcutiondupackage.
e.Lasauvegardedespackages
LespackagesSSISpeuventtreenregistrssoitdanslabasemsdbdeSQLServer,soitsousformedefichier.
- 5 - ENI Editions - All rigths reserved

Quelquesoitletypedesauvegardechoisi,ilestpossibledecrypterlesdonnesparrapportlacldelutilisateur
oubienparunmotdepasse.
Enchoisissantcetypedesauvegarde,lintgralitdeladfinitiondupackageetdesonparamtrageestconserve
sous forme de fichiers en dehors de toute instance SQL Server. Cette solution offre beaucoup de souplesse en
terme de dploiement des packages. Au niveau de la sauvegarde, il est ncessaire de consulter le fichier
MsDtsSrvr.ini.xmldeconfigurationduserviceSSISafindeconnatrelalistedesdossierscontrlsparSSIS.
En utilisant cette base de donnes systme pour stocker la dfinition des diffrents packages, il est possible de
sappuyer sur la politique de sauvegarde dfinie au niveau du serveur pour conserver une copie de scurit des
packages.Cependant,leparamtragedeslotsestconservsousformedefichiersexterneslabase.
3.Lagestiondespackages
Quel que soit le moyen utilis pour dfinir les packages SSIS, ceuxci sont administrables depuis SQL Server
ManagementStudio.
Ladministration du service SSIS nest pas active par dfaut dans SQL Server Management Studio, il est donc
ncessairededemanderlaconnexionunserviceSSISparticulier,commecelaestillustrparlcransuivant.
Systmedefichiers
Basemsdb
- 6 - ENI Editions - All rigths reserved

SQL Server Management Studio propose alors une interface complte de gestion des diffrents packages, quils
soientenregistrsdanslabaseMSDBoubiensurlesystmedefichiers.

Lesdiffrentspackagessontprotgspardesrlesafindenepasrendrepossibleleurexcutionetleurmodification
parnimportequelutilisateur.IlestpossibledeconnatreetdemodifiercettelistederlesenslectionnantRlesdu
packagedepuislemenucontextuelassociaupackagedepuislexplorateurdobjets.
- 7 - ENI Editions - All rigths reserved

4.Excuterunpackage
Un package peut tre excut soit en ligne de commande, soit depuis un outil de conception graphique. Il est
galementpossiblededfiniruntravailplanifichargdexcuterlepackageSSIS.
Bien quil soit possible dexcuter un package depuis SQL Server Business Intelligence Development Studio, cest
depuisSQLServerManagementStudioquelepackagevatregr.
Pourlancerlexcutiondunpackage,ilsuffitdeslectionnerExcuterlepackagedepuislemenucontextuelassoci
aupackage.

SQLServerManagementStudioproposealorsunefentredeconfigurationdupackage.
CetutilitairepermetdedemanderlexcutiondunpackagestocksousformedefichieroubiendanslabaseMSDB.
SQLServerManagementStudio
Dtexec
- 8 - ENI Editions - All rigths reserved
Lutilitaire DTexecUI permet de gnrer la liste des paramtres ncessaires la bonne excution du package. Cet
utilitaireestlancdefaonautomatiqueparSQLServerManagementStudio.
Ilestpossibledesappuyersurunfichierdecommandepourlancerlexcutiondulotensaisissantlenomdunfichier
decommandedepuislazoneFichiersdecommandes.

Depuiscettemmefentre,ilestpossibledeconsulterlalignedecommandequivatregnreenslectionnantla
zoneLignedecommande.
- 9 - ENI Editions - All rigths reserved

Laplanificationdelexcution du package passe par un travail planifi qui va tre gr par lAgentSQLServer.Ce
travailpossdeunetchequivaexcuterlelotenutilisantdtexec.
5.Assistantsdimportationetdexportation
SQL Server Management Studio dispose dassistantsdimportation et dexportation de donnes afin de dfinir des
packagesSSISsimples.Cespackagesrpondentlaplupartdesoprationsdetransfertdedonnessouhaitessur
unebasededonnesOLTP,carilsrendentpossibleaussibienlextractionquelintgrationdedonnesexternes.
Lesprincipalesfonctionsproposesparlassistantsont:
G letransfertdedonnesentredesbaseshtrognes,
G letransfertdobjetsentredeuxbasesSQLServer,
G lacrationdynamiquedeladestinationdutransfert,
G latransformationdesdonnes.
Planificationdupackage
- 10 - ENI Editions - All rigths reserved

Lassistantva,dansunpremiertemps,demanderlasourceetladestinationdesdonnes.
Danslexempleprsentcidessous,lasourcecorrespondlabaseGESCOMetladestinationestunfichiertexte.
- 11 - ENI Editions - All rigths reserved

Lassistantdemandeparlasuitedeslectionnerlatableoubiendesaisirlarequtequivafournirlesinformations
stockerdanslefichier.Ilestgalementpossibleceniveaudedfinirdestransformationsetdespcifierleformat
exactdufichiertexte.
- 12 - ENI Editions - All rigths reserved

Enfin,lassistantproposedestockerlelotsoitdansSQLServer,soitsousformedefichier.
6.LeconcepteurSSIS
LeconcepteurSSIS,disponibledansBusinessInteligenceDevelopmentStudioestloutilgraphiquedeconceptionet
de mise au point des packages SSIS. Pour accder au concepteur, il faut tout dabord crer un projet de type
IntegrationServicescommeillustrparlcranciaprs.
PardfautBusinessIntelligenceDevelopmentStudionestpasinstallmmesileserviceIntegrationServicesest
prsent. Aussi, il est ncessaire de passer par lajout/suppression de programmes afin de modifier linstallation
courantepourajouterlecomposantmanquant.
- 13 - ENI Editions - All rigths reserved

Lors de lexcution de Business Intelligence Studio, il est ncessaire de demander la cration dun projet de type
IntegrationServices.

Lcrandetravailestcomposdesongletssuivants:
G Fluxdecontrle:permetdedfinirlenchanementlogiquedestapesdetravail.
G Fluxdedonnes:permetdedfinir,laidedelaboteoutils,leslmentslisauxsourcesdedonnes.
- 14 - ENI Editions - All rigths reserved
G Gestionnairedvnements:permetdegrerlesvnementssurlesdiffrentestapesdupackage.
G Explorateurdepackage:ilpermetdavoirunevisionglobaledetousleslmentsdfinisdanslepackage,
quecesoitdesvariables,desconnexionsdessourcesdedonnes,destapesdetransformation...
Leconcepteurdisposedesaboteoutilsafindeconcevoirgraphiquementlesdiffrentestchesquicomposentle
package.
LcrancidessousillustrelenvironnementduconcepteurSSIS.

a.Modifierunpackageexistant
LeconcepteurSSISpeuttreutilispourmodifierunpackagedjdfinietenregistrsousformedefichieroubien
danslabasemsdb.
Pourouvrirunpackageexistant,ilfautslectionnerAjouterunpackageexistantdanslemenucontextuelassoci
aunudPackagesSSISdepuislexplorateurdesolutions.
- 15 - ENI Editions - All rigths reserved

IlestalorspossibledeslectionnerlinstanceSQLServersurlaquellelepackagevatrerecherchpuis,aprsavoir
tablilaconnexion,deslectionnerlepackageouvrir.

LeconcepteurSSISpermetalorsdemodifiersimplementlepackageenajoutantdestches,parexemple,enamont
oubienenaval.
b.Dfinirunnouveaupackage
LeconcepteurSSISpeutgalementtreutilispourbtirunnouveaupackage.Laboteoutilmisedisposition
permetdeconcevoirgraphiquementlelotSSIS.
DanslexempleprsentcidessouslepackageSSISestcomposdedeuxtchesavantdexcuterletransfertde
- 16 - ENI Editions - All rigths reserved
donnes.Lefluxdecontrlepermetdedfinirquelatchedecrationdetablenestexcutequencasdesuccs
delatchedesuppressiondetable.Latchedefluxdedonnesestexcutesoitaprslacrationdelatable,
soitaprslchecdelasuppression.

7.Plandemaintenance
LespackagesSSISpermettentdedfinirlenchanementlogiquedeplusieurstchessurlesbasesdedonnes.La
bote outil du concepteur SSIS dispose dune section ddie aux diffrentes tches prsentes dans un plan de
maintenance.

Pour planifier lexcution du plan de maintenance de faon rgulire, la mthode adopte sera la mme que celle
relative la planification de lexcution dun package SSIS, cestdire en dfinissant un travail qui va excuter
lutilitaireDTEXEC.
Danslexemplesuivant,lepackageSSIScontientplusieursoprationsdunplandemaintenance.Encasdchecde
lune des tches du plan de maintenance, un oprateur est notifi. Un oprateur est galement notifi du bon
droulementdelexcutiondelensembledestches.
- 17 - ENI Editions - All rigths reserved

DanslesversionsprcdentesdeSQLServer,cestlutilitaireenlignedecommandesqlmaintoubiensonassistant
graphique qui permettait de dfinir les plans de maintenance. Bien que sqlmaint soit toujours prsent dans SQL
Server2008,ilvatreamendisparatredanslesversionsfuturesdeSQLServer.Ilnefautdoncpasfaireappel
cetutilitairepourdfinirdenouveauplandemaintenance.
- 18 - ENI Editions - All rigths reserved
ServiceBroker
Service Broker est une nouvelle fonctionnalit offerte par SQL Server 2005 avec pour objectif de faciliter le
dveloppementdapplicationsscurisesquisupportentunefortemonteencharge.
Service Broker est une fonctionnalit pour les applications de type SOA (Service Oriented Architecture). Une telle
application est compose dlments logiciels faiblement coupls, cestdire que le changement de la logique de
fonctionnement de lun des composants ne va pas remettre en cause les autres composants. Les applications de
messagerie sont un bon exemple dapplication SOA. En effet, dans ce type dapplication, loutil de gestion des
messages est indpendant du serveur SMTP de gestion des courriers. Il est possible de grer les courriers avec un
outiltelquOutlook,sansquilsoitncessairedeconnatreletypedeserveurquigrelesmessages.Lutilisateurfinal
peutlibrementchoisirunautreoutildegestiondesmessages,celaneremettrapasencauselamessagerie.Ilenest
demmepourleserveurdegestiondesmessages.Sonchangementnobligeenaucuncasforcerlesutilisateurs
changerdoutilclient.
Service Broker prend en charge les messages de demande de services adresss par les applicatifs clients. Ces
messagessontorganissetregroupsdansunefiledattente(uneparapplicatifdemandeur),puisunefoisletravail
effectusurlabasededonnes,ServiceBrokersechargedadresserunmessagelapplicationquiavaiteffectula
demande de service. Pour un applicatif demandeur, les messages sont traits suivant leur ordre dmission et pour
chaquemessagedemandeur,ServiceBrokeradresseunmessagerelatifautraitementfait.
Enfournissanttousleslmentspourdesoprationsasynchronessurlabasededonnes,cequiestncessairedans
lecadredesapplicationsdistribues,ServiceBrokerestunsupportindispensablelaprogrammationsousformede
service.
1.LastructuredeServiceBroker
IlestimportantdecomprendrecommenteststructurServiceBrokeravantdetravailleravec.
ServiceBrokerestorganisautourdecinqlmentscls:
G letypedemessage
G lecontrat
G lafiledattente
G leprogrammedeservice
G leservice.
- 1 - ENI Editions - All rigths reserved

Le dialogue stablit entre le demandeur et le fournisseur. Le transport des messages entre les deux parties
seffectueautraversduprotocolehttp,carellesutilisentunpointdeterminaisonhttp(httpendpoint)pourenvoyer
lesmessagesaudestinataire.CommepourtouspointsdeterminaisonhttpdfinisdansSQLServer,ilestpossiblede
les scuriser par lintermdiaire dun processus dauthentification. Ce paramtre de gestion dauthentification peut
prendrelesvaleurssuivantes:
G None:lesaccsanonymesauservicesontpossibles.
G Enabled : le consommateur peut sauthentifier, sil en est capable. Sinon laccs anonyme au service est
possible.
G Required:leconsommateurobligationdesauthentifier.
ServiceBrokerchiffrelesmessagescirculantentreledemandeuretleconsommateur.Lacomplexitdelamthodede
chiffrementvarieselonquelaccsauservicesoitfaitdefaonanonymeounon.
2.Letypedemessage
Le consommateur de service (lapplication demandeuse) va adresser un ou plusieurs messages de demande de
servicesaufournisseurdeservices.Pourqueledialoguepuissestablirentreleconsommateuretlefournisseur,le
typedesmessagesdoittreconnudesdeuxparties.
Lestypesdemessagesdoiventdonctredfinislidentiquesurleserveuretleconsommateur.
Un type de message est parfaitement identifi par son nom et il indique le type de donnes contenues dans le
message.
- 2 - ENI Editions - All rigths reserved

3.Lecontrat
Le contrat Service Broker est un contrat SOA gnrique. Le contrat prcise les types de messages qui permettent
daccomplir une tche. Le contrat spcifie galement les expditeurs possibles pour chaque type de message. Le
contratdoittretabliavanttouttravailcommunetildoittreconnuduconsommateuretdufournisseurdeservice.
Ilestpossibledefaireuneanalogieaveclaviedetouslesjours.Danscecas,letypedemessagereprsenteles
rgles de savoirvivre et le contrat fixe, quant lui, dans quel ordre il faut adopter ces rgles et qui fait quoi. Par
exemple,lorsquelonentameuneconversationlesdiffrentstypesdemessagespeuventtre:
G Puisjeposerunequestion?
G Oui,
G Quelleheureestil?
G Ilest08h05.
Le contrat permet de dfinir que la conservation se fait sous la forme une question une rponse. Linitiateur de la
conversationposelesquestionstandisquelacibleenvoielesrponses.

4.Lafiledattente
Lefournisseuretleconsommateurpossdentleurproprefiledattente.Leconsommateurutilisecettefiledattente
afin de ne pas tre bloqu par lenvoi dun message surtout si le fournisseur nest pas capable daccepter
immdiatement le message et quil doit tre rexpdi un certain nombre de fois. Le fournisseur utilise une file
dattenteafindetraiterlesmessagesenfonctiondesapropredisponibilit,parexemple,lorsquelachargedetravail
estmoindresurleserveur.
Service Broker gre la liste dattente sous forme de tableau. Chaque ligne du tableau contient le message mais
- 3 - ENI Editions - All rigths reserved
galementlecontratetlidentifiantdelaconversation.

5.Leservice
Un service au sens Service Broker correspond une ou plusieurs tches. Cest entre les services que les
conversationsontlieu.
Leprogrammedeservicereprsenteleprogrammequivaprendreenchargelagestiondesmessagesetfournirla
logiqueduservice.
Cestleprogrammedeservicequisechargederdigerlemessagedestinationdudemandeur.
Service Broker est capable de dmarrer le programme de service qui va grer le message reu. Il est galement
possibledeplanifieruneexcutionrgulireduprogrammedeserviceafinquiltraitelesventuelsmessagesquile
concernent.
Lobjet de service reprsente la partie visible du fournisseur de service. Cest lobjet de service que le
consommateurvaadressersademande.Lobjetdeservicepossdelescontratsetgrelafiledattente.Unobjetde
servicequinegrepasdecontratcorrespondunconsommateur.
- 4 - ENI Editions - All rigths reserved

6.Laconversation
Lorsquilexistedeuxservicesaveclesmmescaractristiques,ilestpossibledtabliruneconversationoudialogue
entrelinitiateur(ledemandeur)etlacible(fournisseur).
Au cours de cette conversation, les messages sont expdis une seule fois et traits dans lordre dmission. En
effet, chaque message contient un numro de squence et lidentifiant de son metteur de faon garantir le
traitementdesmessagesdanslebonordre.

- 5 - ENI Editions - All rigths reserved


Miseenplace
Aprs avoir prsent les lments constitutifs de Service Broker et leur imbrication les uns avec les autres, il est
importantdevisualisercommentilestpossibledelesmettreenplacedefaonconcrtedansSQLServer.
Commecelaatexposauniveaudelastructure,leslmentssuivantsdoiventtredfinis:
G Typedemessagesetcontrats
G Filedattente
G Service.
Ensuite,ilestpossibledenvoyeretderecevoirdesmessagesetdoncdedfiniruneapplicationutilisantServiceBroker.
1.ActiverServiceBroker
la cration dune base de donnes, le service Service Broker est activ par dfaut. Il est tout fait possible de
dsactiver le service. Si des messages arrivent alors que le service est dsactiv, alors ils sont stocks dans la file
dattente.Ilsseronttraitslorsqueleserviceseradenouveauactiv.
Depuis SQL Server Management Studio, il est possible de connatre ltat dactivation ou non de Service Broker en
interrogeantlavaleurdelacolonneis_broker_enableddelatablesys.databases.

LactivationetladsactivationduservicesontpossiblesparlintermdiairedelinstructionALTERDATABASE.
ALTER DATABASE nomBaseDeDonnees
SET option;
IlexistequatreoptionspourgrerltatdeServiceBroker:
G ENABLE_BROKERpouractiverlaremisedesmessages.
G DISABLE_BROKERpourdsactiverlaremisedemessages.
G NEW_BROKERpouractiverlaremisedemessageavecunnouvelidentifiantdebasededonnes.Cenouvel
Syntaxe
- 1 - ENI Editions - All rigths reserved
identifiantprovoquelafinenerreurdetouteslesconversationsexistantes.
G ERROR_BROKER_CONVERSATIONS pour activer la remise des messages tout en mettant fin aux autres
conversationssousformederreur.Lidentificateurdebasededonnesestinchang.
Exemple
LexemplecidessousillustrecommentactiverleservicesurlabaseGescom:

2.Typedemessages
Les types de messages et les contrats sont les premiers lments dfinir dans la mise en place dune solution
utilisant Service Broker. Les types de messages doivent tre dfinis sur toutes les bases concernes par Service
Broker.
IlestncessairededfiniraumoinsuntypedemessagedansuneapplicationutilisantServiceBroker.
CREATE MESSAGE TYPE nomDuTypeDeMessage
[AUTHORIZATION nomPropritaire]
[VALIDATION ={NONE | EMPTY | WELL_FORMED_XML |
VALID_XML WITH SCHEMA COLLECTION nomSchemaCollection}]
AUTHORIZATION
Permetdespcifierlerleoulutilisateurdebasededonnesquiestpropritairedutypedemessage.
VALIDATION
Cetteclausepermetdedfinirletypededonnesprsentesdanslemessage.
G NONE:lemessagenestpasvalid.
G EMPTY:aucunedonnenestprsentedanslemessage.
G WELL_FORMED_XML : ces donnes prsentes dans le message le sont sous forme de chane XML bien forme.
Danslecascontraire,ServiceBrokerretourneuneerreur.
Syntaxe
- 2 - ENI Editions - All rigths reserved
G VALID_XML:lachaneXMLdoitrespecterleschmapassenparamtre.
Exemple
SurlabaseGESCOM,lestypesdemessagesGescomQuestionetGescomReponsesontdfinis.

3.Contrats
Lescontratspermettentdedfinirdansquelordreetparquilesdiffrentstypesdemessagespeuventtreenvoys.
Touslesparticipantsuneconversationsedoiventdetravailleraveclemmecontrat.
Sanscontrat,aucuneconversationnestpossiblecarlecontratfixelesrglesdeconversationetrgitlaformequele
dialoguepeutprendre.Aveclecontrat,chaqueparticipantlaconversationsaitqueltypedemessageilpeututiliser.
CREATE CONTRACT nomContrat
[ AUTHORIZATION nomPropritaire ]
(nomDuTypeDeMessage SENT BY { INITIATOR | TARGET | ANY }[,n] )
SENT BY
Cetteoptionprciselesensdanslequellemessagepeuttretransmis.
G INITIATOR:celuiquiestloriginedelaconversation.
G TARGET:celuiquiestlinterlocuteur.
G ANY:lesdeuxparticipantslaconversation.
Exemple
Dans lexemple suivant, le contrat dfinit que linitiateur pose les questions et que la cible peut simplement mettre des
messagesdetyperponse.
Syntaxe
- 3 - ENI Editions - All rigths reserved

4.Filesdattente
ServiceBrokerconservelesmessagestraiterparleprogrammedeservicedansunefiledattente.Lesfilesdattente
doivent tre dfinies avant la mise en place de la solution globale Service Broker. Chaque file dattente est
caractriseparunnom,unedisponibilitetdesparamtresdactivation.
UnefiledattenteestperueparSQLServercommeunetable,aussiestilpossibledyeffectuerunerequtedetype
SELECTpourenvisualisersoncontenu.Cetterequtepeutgalementcontenirdescritresderestriction.
Lesdiffrentescolonnesdelafiledattentesont:
G status:reprsenteltatdumessage
G queing_order:numrodordredumessagedanslafiledattente
G conversation_group_id:identifiantdugroupedeconversations
G conversation_handle:identifiantdelaconversation
G message_sequence_number:numrodordredumessagedanslaconversation
G service_name:nomduservice
G service_id:identifiantduservice
G service_contract_name:nomducontrat
G service_contract_id:identifiantducontrat
G message_type_name:nomdutypedemessage
G message_type_id:identifiantdutypedemessage
G validation:typedevalidationdumessage
G message_body:lemessageproprementparl
- 4 - ENI Editions - All rigths reserved
G message_id:identifiantdumessage
CREATE QUEUE nomFile
[ WITH
[ STATUS = { ON | OFF },]
[ RETENTION = { ON | OFF },]
[ ACTIVATION ([ STATUS = { ON | OFF } , ]
PROCEDURE_NAME = nomProcdure ,
MAX_QUEUE_READERS = nombreMaximumInstanceProcdure ,
EXECUTE AS { SELF | utilisateur | OWNER } ) ] ]
[ ON { groupeDeFichiers | [ DEFAULT ] } ]
STATUS
Lestatutactif(ON)permetdepositionnerdenouveauxmessagesdanslafiledattenteetleprogrammedeservice
peutsupprimerdelafilelesmessagestraits.Enstatutinactif(OFF)lafiledattenteestenlectureseule,ilnestpas
possibledajouternidesupprimerdesmessages.
RETENTION
Cetteoption,nonactivepardfaut,permet,sielleestactive(ON),deconserverunetracedetouslesmessagesqui
transitentvialafiledattente.Lactivationdeceparamtrepeutavoirdesconsquencesdirectessurlesperformances
comptetenudelatailledelafiledattente.
ACTIVATION
Ce paramtre permet de prciser le comportement de la file dattente lorsquun nouveau message arrive. Si ce
paramtre est ON (file dattente active), alors la procdure stocke dont le nom est spcifi dans loption
PROCEDURE_NAMEestconsidrecommeleprogrammedeserviceetelleestactive.Aucontraire,silafiledattenteest
dsactive(OFF),alorslesmessagessontsimplementstocksdanslafiledattente.
MAX_QUEUE_READERS
Ceparamtrepermetdespcifierlenombremaximumdinstancesdelaprocdurestockequipeuventtrelances
de faon simultane par Service Broker. Si cette valeur est grande, la capacit de traitement est importante et les
messages vont rester peu de temps dans la file dattente. Au contraire, avec une valeur faible, les messages
possdentuneprobabilitsuprieurederesterpluslongtempsdanslafiledattente.Ilnexistepasdevaleuroptimale
pardfaut,toutestfonctiondunombredemessagestraiter.
EXECUTE AS
Ceparamtrepermetdexcuterlaprocdurestockedansuncontextedescuritdiffrentdeceluidupropritaire
delafiledattente.
ON
La file dattente est gre par SQL Server. Ce paramtre permet de prciser le groupe de fichier mis contribution
pourobtenirdelespacedisqueafindeconservertouslesmessagesprsentsdanslafiledattente.
Exemple
Danslexemplesuivant,deuxfilesdattentessontcres,unepourlinitiateuretuneautrepourlacibledelaconversation.
Syntaxe
- 5 - ENI Editions - All rigths reserved

5.Service
Le service sert de support la conversation entre le consommateur et le fournisseur. La dfinition du service va
permettrededfinirlescontratsdisponibles,lafiledattentedanslaquellelesmessagesvonttrestocksetsiles
messagesdoiventounontreconservsjusqulafindelaconversation.
Leserviceestidentifiparsonnom.
CREATE SERVICE nom service
ON QUEUE nominalement
[(nom contrat[,...])];
ON QUEUE
Permetdespcifierlenomdelafiledattentequivaservirdesupportlaconversationdfinieparleservice.
nomContrat
Permetdestipulerleoulescontratspourlesquelsleservicepeuttrelacible.Lescontratsnesontspcifisquesur
leservicecible.
Exemple
Dans lexemple suivant, un service est dfini sur la base Gescom en utilisant le contrat et la file dattentepralablement
dfinis.Unsecondserviceestdfini.Cesecondservicepourobjectifdinitierlaconversation.
Syntaxe
- 6 - ENI Editions - All rigths reserved

- 7 - ENI Editions - All rigths reserved


UtiliserServiceBroker
1.Envoyerunmessage
Les messages sont au centre du fonctionnement de Service Broker. Lenvoidun message par le consommateur de
servicedestinationdufournisseurestdoncuneoprationrgulireetcourante.
Lesmessagessinscriventtoujoursdanslecadreduneconversationetdoncleslmentsvuscidessusdoiventtre
dfinisavantlmissiondupremiermessage.
Lenvoidupremiermessageseffectueentroistapes:
G Ladfinitiondunevariablepermettantdidentifierlaconversation,
G Marquerledbutdelaconversation(BEGINDIALOG),
G Envoyerlemessage(SEND).
DECLARE @identifiantConversation UNIQUEIDENTIFIER

BEGIN DIALOG [CONVERSATION] @identifiantConversation
FROM SERVICE nomService
TO SERVICE nomService [ , identifiantBase ]
ON CONTRACT nomContrat
[ WITH
[ { RELATED_CONVERSATION = identifiantConversation
| RELATED_CONVERSATION_GROUP = idGroupeConversation } ]
[ [ , ] LIFETIME = dureeDialogue ]
[ [ , ] ENCRYPTION = { ON | OFF } ] ]
FROM SERVICE
Permetdespcifierlenomduservicequipossdelinitiativedudialogue.Cestdoncceservicequimettralepremier
message.Lafiledattentedeceservicecontiendralesmessagesmisparlefournisseur.
TO SERVICE
Permet de prciser le service avec lequel la conversation est tablie. La file dattente de ce service va recevoir les
messagestraiter.LenomduservicedistantdoittrespcifienrespectantlacassecarServiceBrokereffectueune
comparaisonoctetparoctetafindidentifierlebonservice.Sileservicenesexcutepassurlabasecourante,ilest
ncessaire dy ajouter lidentifiant du service. Il est possible de connatre cet identifiant en interrogeant la colonne
service_broker_guiddelatablesys.databases.
ON CONTRACT
Indiquelenomducontratquiestutilisparlaconversation.
WITH
Permetdinclureledialogueencoursdedfinitiondansuneconversationdjtablie.Lidentifiantdelaconversation
permetdeconnatreprcismentlaconversationrejoindre.
LIFETIME
Uneduremaximaledeconversationpeuttredfinieensecondes.Danslecasoladuredeviedelaconversation
nestpasdfinie,laconversationprendfinlorsquelesdeuxservicesymettentfindefaonexplicite.
ENCRYPTION
Permet de coder les messages en deux services. Service Broker code automatiquement les messages lorsque le
Syntaxe
- 1 - ENI Editions - All rigths reserved
dialogueesttablientredeuxinstancesSQLServerdistinctes.Danslecascontraire,ServiceBrokernecryptepasles
messagespardfaut.
Exemple
Lexemple suivant utilise les deux services crs dans les exemples prcdents pour tablir une conversation au sens
ServiceBroker.

Aprsavoirinitilaconversation,ilestpossibledenvoyerunmessagelacible.
SEND ON CONVERSATION identifiantConversation
MESSAGE TYPE nomTypeDeMessage
[ ( corpsDuMessage) ]
Lidentifiant de la conversation est la variable de type uniqueidentifier qui a t valorise par BEGIN DIALOG. Elle
permetdidentifierledialogue.
MESSAGE TYPE
Cetteoptionpermetdespcifierletypedumessagequiestenvoy.Cetypedemessagedoitcorrespondrelundes
typesdemessagesdfinisparlecontratauquelfaitrfrencelaconversation.
Le corps du message contient des informations spcifiques aux messages. Sa structure est fonction du type de
message.
Exemple
Syntaxe
- 2 - ENI Editions - All rigths reserved

Aprslenvoidumessage,ilestpossibledeconsulterlafiledattentedudestinatairepouryvrifierlaprsencedumessage.

2.Lireunmessage
Silenvoidumessageestuneoprationimportantedansllaborationdundialogue,ellenesertriensilercepteur
neprendpaslapeinedelirelemessage.Cestleprogrammedeservicequisechargedelirelemessagedepuislafile
dattente. Pour cela, il va utiliser linstruction RECEIVE. Mais comme pour lenvoi de message, il est ncessaire de
prparerlenvironnementafindepouvoirlirelemessage.
La premire tape consiste dclarer les variables ncessaires la rception du message et le traitement des
informationslocalementlaprocdurestocke.Enrglegnrale,ilestncessairededclarertroisvariablespour
lidentifiantdelafonction,letypedumessageetlecorpsdumessage.
PuislemessageestextraitdelafiledattenteparlintermdiairedelinstructionRECEIVE.Cetteinstructionpermetde
rceptionner un ou plusieurs messages prsents dans la file dattente et relatif la mme conversation. Les
messagessontlusetsupprimsdanslordrespcifiparleparamtremessage_sequence_order.
Syntaxe
- 3 - ENI Editions - All rigths reserved
[ WAITFOR ( ]
RECEIVE [ TOP (n) ] listeDeColonnes
FROM nomFileAttente
[ INTO tableDeStockageMessages ]
[ WHERE {conversation_handle = identifiantConversation
| conversation_group_id = idGroupeConversation } ]
[ ), TIMEOUT dlai ]
WAITFOR
Permetdeforcerlaprocdureattendrelaprsencedunmessagedanslafiledattente,oubienuncertainslapsde
temps, spcifi par TIMEOUT, avant de poursuivre son trai tement. Sans linstruction WAITFOR, si la procdure ne
trouve aucun message dans la file dattente, alors elle sarrte de travailler. Cest pour cette raison, quil est trs
fortementrecommanddinclurelaprocdurederceptiondesmessages(RECEIVE)dansuneboucleWAITFOR.
TOP
Compte tenu que linstruction RECEIVE permet de ramener un ensemble de messages, il est possible de traiter
seulementlesnpremiers.Enspcifiantlavaleur1,lesmessagespeuventtretraitsunparun.
listeDeColonnes
En utilisant le caractre gnrique *, toutes les colonnes prsentes dans la file dattente sont retournes. Il est
possible de slectionner les colonnes pour lesquelles la valeur souhaite tre connue. Il est galement possible
dutilisercescolonnespoureffectuerunerestrictionlaidedelaclauseWHERE.
FROM
Permetdefournirlenomdelafiledattentedepuislaquellelesmessagesserontlus.
INTO
Les informations de chaque message peuvent tre stockes dans une table. Il est alors ncessaire de traiter les
messagesunparun.Ilestpossibledestockerlesinformations,uniquementdansunevariabledetypetable.
WHERE
Laclausewherepermetdenepasliretouslesmessagesmaisuniquementceuxrpondantcertainscritres,comme
lidentifiantduneconversationparexemple.
TIMEOUT
UtilisconjointementavecWAITFOR,TIMEOUTpermetdespcifierenmillisecondes,letempsdattentedelaprocdure
avantdepoursuivresontraitement.Aveclavaleur1,laprocdurevatresuspenduejusqularrivedunmessage
danslafiledattente.
Exemple
Danslexemplesuivant,laboucledelecturedesmessagesvapatienterpendant30secondesavantdesacheverdefaon
dfinitivesiaucunmessagenestprsentdanslafiledattente.
- 4 - ENI Editions - All rigths reserved

a.Vrifierletypedemessageetmettrefinlaconversation
Avantletraitementproprementdit,laprocdurevrifieletypedumessageafindesassurerquelleestcapablede
latraiter.
Enfin,silaprocdurealuettraitlederniermessageduneconversation,ellevamettrefinlaconversationpar
lintermdiairedelinstructionENDCONVERSATION.
END CONVERSATION identifiantConversation
[ WITH ERROR = codeErreur DESCRIPTION = messageErreur ]
[ WITH CLEANUP ]
WITH ERROR
Lorsque la conversation est acheve suite un dysfonctionnement, il est possible de lever une erreur par
lintermdiairedecetteoption.
WITH CLEANUP
Aveccetteoption,touslesmessagesetmtadonnesprsentsdanslesfilesdattentesontsupprims.
Exemple
Laconversationesttermine.
Syntaxe
- 5 - ENI Editions - All rigths reserved

- 6 - ENI Editions - All rigths reserved


Lescertificats
Lorsdelchangedinformationsentreutilisateurs,lesprincipauxproblmesdescuritquiseposentsont:
G Commenttresrquelesinformationsnevontpaspouvoirtreluesparunautreutilisateur?
G Commenttresrdelidentitdelapersonne?
Pourpouvoirrpondrepositivementcesdeuxquestionsetdonctresrdelavaliditdesinformationstransmises,
SQLServerproposedutiliserlescertificats.
Les certificats reposent sur le principe des cls publiques et prives. Lmetteur dun message peut utiliser sa cl
privepourcoderlemessageetseulslesutilisateursdisposantdelaclpubliquepeuventlirelemessage.Cepremier
codagepermetdegarantirloriginedumessage.
Maintenant,siledestinatairetransmetsaclpubliquelmetteur,celuicipeututiliserlaclpubliquedudestinataire
pour coder le message. Seul le destinataire pourra dcoder le message laidedesaclprive.Cesecondcodage
permetdegarantirlefaitquelemessagenepourrapastreluparunepersonneautrequeledestinataire.
SQLServerutiliselescertificatscommemoyendecryptageetdauthentificationentredeuxinstancesServicesBroker.
Cesoprationsdecodage/dcodagedelinformationprenantdutempsetuneprsencetropmarquedescertificats
va alourdir la consommation de temps processeur et donc rendre le serveur moins ractif aux demandes des
utilisateurs.
SQLServerestcapabledegnreretdegrerdescertificats.LescertificatscrsparSQLServersontconformesla
norme X.509v3. Les certificats crs par SQL Server depuis une instruction Transact SQL ou bien SQL Server
ManagementStudio,sontconservsdanslabasededonnescourantedelutilisateurlorsdelacrationducertificat.
Ainsi,silabasededonnesesttransfredunserveurunautre,lescertificatslesontgalement.
ServiceBrokerpeututiliserlescertificatspourtablirunecommunicationscurise.Sitelestlecas,ilfautaupralable
configurer le point de terminaison http (HTTP ENDPOINT) de faon rendre obligatoire lauthentification et
ventuellementutiliserlauthentificationbasesurlescertificats.
Le certificat peut galement tre utilis pour garantir la conformit du code, cr dans la base de donnes, en
garantissantsanonmodification.
Enfin,lesinformationspeuventtrecodeslaideduncertificat.
Uncertificatpeuttrecrdefaonsimplepartirdelinstructionsuivante:
CREATE CERTIFICATE nomCertificat
ENCRYPTION BY PASSWORD=motDePasse
WITH SUBJECT =nomSujetCertificat
Exemple
Creruncertificat
- 1 - ENI Editions - All rigths reserved

Ilnestpossibledesupprimeruncertificatquesilnestpasutilis.
DROP CERTIFICATE nomCertificat;
Exemple

Supprimeruncertificat
- 2 - ENI Editions - All rigths reserved
ServiceBrokerentredeuxbasesdistinctes
Cettefoiscilamiseenplaceestunpeupluscomplexe.Eneffet,ServiceBrokerdoittrecapabledaccderauservice
distantavecuncertaincontextedescurit.Pourcela,illuiestncessairedeseconnecterauserveur.Ilnestpas
possible, ni mme envisageable, de coder en "dur" le mot de passe utiliser pour se connecter au serveur. Cest
pourquoilaconnexionutiliseparServiceBrokerserabasesuruncertificat.
IlestgalementncessairededfinirunerouteauniveaudeServiceBrokerafinqueleserviceinitiateursoitcapable
de localiser le service cible. Ces routes sont tout fait comparables aux routes qui peuvent tre mises en place au
niveaudurseau.
LamiseenplacedecedialogueentredeuxbasesdistinctesdelammeinstanceSQLServerestillustretoutaulong
destapessuivantes.Cettemiseenplacepermetdillustrerdefaonconcrtelutilisationdecertificats.
PourmettreenplaceledialogueServiceBrokerentredeuxbases,ilestncessairederespecterlestapessuivantes:
G CrerlesobjetsspcifiquesServiceBroker:typedemessages,contrat,filedattente,service.

G Dfinirlesroutespourquechaqueservicepuisselocaliserleservicedistant.
RechercherlesidentifiantsServiceBroker.
- 1 - ENI Editions - All rigths reserved

Mettreenplacelesroutes.

G Dfinirleslmentsncessairesscuriserletransport(lestapessontrptersurchaqueinstance).
CreruneMasterKeysurlabasemaster.
- 2 - ENI Editions - All rigths reserved

Crerlecertificatetlepointdeterminaisonquiaccepteuneauthentificationbasesurlescertificats.

Accorderlapermissiondutiliserlepointdeterminaison.
- 3 - ENI Editions - All rigths reserved

G Dfinirleslmentspourscuriserledialogue(lestapessontrptersurchaqueinstance).
CreruneMasterKeysurlabaselocale.

Crerlescertificats.
- 4 - ENI Editions - All rigths reserved

Sauvegarderlescertificats.

Crerlesutilisateursdebasededonnes(sansconnexion)etlescertificatspartirdelasauvegarde.
- 5 - ENI Editions - All rigths reserved

Accorderlapermissiondeseconnecterlutilisateur.

Accorderlapermissiondenvoyerunmessage.
- 6 - ENI Editions - All rigths reserved

Crerunservicedistant.

G Envoyeretrecevoirdesmessages.
Il ne reste plus maintenant qu tester le fonctionnement de larchitecture Service Broker ainsi mise en place. Ainsi,
depuislabasebd1ledialogueestiniti.
- 7 - ENI Editions - All rigths reserved

G Depuislabasededonnescible,ilestpossibledelireetdetraiterlemessagereudelafaonsuivante:

- 8 - ENI Editions - All rigths reserved


Prsentation
LarplicationestunepuissantefonctionnalitdeSQLServerquipermetdedistribuerlesdonnesetdexcuterles
procduresstockessurplusieursserveursdelentreprise.Latechnologiederplicationaconsidrablementvoluet
permet maintenant de copier, dplacer les donnes diffrents endroits et de synchroniser automatiquement les
donnes.Larplicationpeuttremiseenuvreentredesbasesdedonnesrsidantsurlemmeserveurousurdes
serveursdiffrents.Lesserveurspeuventtresurunrseaulocal(LAN),rseauglobal(WAN)ousurInternet.
SQLServerdistinguedeuxgrandescatgoriesderplication:
G larplicationdeserveurserveur,
G larplicationdeserveurclients.
Danslecasdelarplicationdeserveurserveur,larplicationpermetunemeilleureintgrationourapprochement
des donnes entre plusieurs serveurs de base de donnes. Lobjectif de ce type de rplication est deffectuer un
change dinformations entre des serveurs de base de donnes. Les utilisateurs qui travaillent sur les bases qui
participentlarplicationpeuventainsiconsulterdesdonnesdemeilleurequalit.
Larplicationdeserveurclientsconcerneprincipalementlesutilisateursdconnectsdurseaudelentrepriseetqui
souhaitenttravailleravectoutoupartiedesdonnesdelentreprise.Lesutilisateurstravaillentavecuneapplication
spcifique et utilisent SQL Server comme serveur de base de donnes local. Lorsquil se connecte sur le rseau, la
synchronisationdesdonnesentreleurposteetlinstanceSQLServercentraleestpriseencompteparlemcanisme
derplicationdeSQLServer.
Lagestiondelarplicationatsimplifiepourpermettreunemiseenplaceetunemaintenanceplusfacile.Pourles
solutionslespluscomplexesetquincessitentuneintgrationcomplteunlogiciel,SQLServerproposelAPIRMO
(ReplicationManagementObject).CetteAPIpermetdemanipulerparprogrammationtousleslmentsdelarplication.
LAPIRMOestdisponiblepourleslangagessappuyantsurleframework.Net.
La notion de schma qui permet un regroupement logique des objets dans la base est prise en compte par la
rplicationaveclapossibilitderaliserdeschangementsdeschmas.
- 1 - ENI Editions - All rigths reserved
Lesbesoinspourlarplication
Larplicationestunetechnologiecomplexeetilnepeutexisterunesolutionuniquepourcouvrirtouslesbesoins.SQL
Serverproposediffrentestechnologiesderplicationquilestpossibledadapteretdecombinerpourrpondreleplus
exactementpossibleauxbesoinsdesapplications.Chaquetechnologieprsentesesavantagesetsesinconvnients.
Lestroiscritresprincipauxpourslectionnerunetechnologiederplicationsont:
G lacohrencedesdonnesrpliques,
G lautonomiedessites,
G lepartitionnementdesdonnespourviterlesconflits.
Il nest pas possible doptimiser les trois critres simultanment. Ainsi une solution qui favorisera la cohrence des
donnesdevralaisserunefaibleautonomieauxsitesafindeconnatrechaqueinstantlensembledesmodifications
quiontlieusurlesdonnes.
1.Cohrencedesdonnesrpliques
Ilexistedeuxprincipauxtypesdecohrence:
G lhomognitdestransactions
G laconvergencedesdonnes.
Lacohrencedesoprationsdistribuestellequelarplicationestbeaucoupplusdifficilemaintenircomparela
cohrence des transactions locales dont il suffit de respecter le test ACID (Atomicit, Cohrence, Isolement et
Durabilit).
Lhomognit des transactions dans la rplication impose que les donnes soient identiques sur tous les sites
participantlarplication,commesilatransactionavaittexcutesurtouslessites.
Laconvergencedesdonnesquantellesignifiequetouslessitesparticipantauxrplicationstendentpossderle
mmejeudedonnesquinestpasncessairementceluiobtenusitouteslesrplicationsstaientdroulessurle
mmeserveur.
a.Cohrencedestransactions
Dans tous les cas, les sites contiennent un jeu de valeurs identique celui sur lequel toutes les oprations de
modificationonttouauraientputreeffectues.
Avecunetellecohrencetouslessitesparticipantlarplicationontlagarantiedetoujoursvoirlesmmesvaleurs
au mme moment. Pour assurer la cohrence transactionnelle, SQL Server dispose dun protocole de validation
deuxphasesavectouslessitesparticipants.Lesmodificationssonteffectuessurtouslessitesousuraucun.Une
telle solution est bien sr limite dans la ralit, car les problmes du rseau interdisent toute validation de
transactiontantqueleserveurnestpasreconnectaurseau.
Cohrencetransactionnelleimmdiate
- 1 - ENI Editions - All rigths reserved

Danslexemplecidessus,leclienteffectueunetransactionsurleserveurauquelilestconnect.Cettetransaction
neseravalidequesielleaputreexcuteavecsuccssurtouslesserveursquiparticipentlarplication.
Lacohrencelatentedestransactionsgarantitquetouslesparticipantsobtiendrontlesmmesvaleursquecelles
contenuessurlesitedepublicationuninstantdonn.Undlaipeutscoulerentrelinstantolatransactionest
jouesurleserveurdepublicationetlinstantolesmodificationssontrflchiessurlesautressites.

Danscetexemple,leclientenvoieunetransactionauserveur,elleestimmdiatementexcutelocalement.Puissur
une base de temps rgulire, les serveurs participant la rplication, rejouent localement lensemble des
transactionseffectuessurleserveurprincipal.
Cohrencetransactionnellelatente
- 2 - ENI Editions - All rigths reserved
b.Convergencedesdonnes
Avecuntelprocessus,touslessitesfinissentparobtenirlemmejeudedonnes,cequinauraitpeuttrepaspu
treobtenusitouteslesmodificationsavaienttjouessurunseulserveur.Touslessitesvoluentlibrementet
indpendamment les uns des autres. La convergence des donnes est mise en place laide de la rplication de
fusionquitendamenertouslessitesquiyparticipentverslagestiondummejeudedonnes.

Touslesserveurssontaccessiblesenlecture/criture,lestransactionssontexcuteslocalement,puisleprocessus
de rplication rejoue les transactions sur les autres serveurs en tenant compte des modifications qui ont pu
intervenirlocalement.
2.Autonomiesdessites
Lautonomiedessitesestmesureparlimpactquepossdeuneoprationeffectuesurunsitesurlesautressites.
Lautonomie est parfaite lorsquun site peut voluer totalement librement. Le site autonome ne se soucie pas des
oprationsquipeuventintervenirsurlesautressites.Parexemple,lorsquelarplicationgarantitlaconvergencedes
donnes,lautonomiedessitesestsonmaximum,carchaqueserveurSQLpeutvoluerlibrementparrapportaux
autressites.linverse,lacohrencetransactionnelleimmdiateimposeuneautonomiequasimentnulledessitesqui
y participent car une transaction doit tre approuve par tout le monde avant dtre valide. Si un seul serveur ne
peutpasalorslatransactionnestvalidenullepart.
3.Partitionnementdesdonnes
Il est possible de rpartir les donnes sur plusieurs sites afin que chaque site travaille avec son propre jeu de
donnes,rigoureusementdistinctslesunsdesautres.Ainsi,lestransactionsintervenantsurchaquesitenemettent
enjeuquelesdonnesdusiteetlacohrenceglobaleestconserve.Siparexemple,chaqueagencepossdeun
fichierclientsurunezonegographiquebiendtermine,unclientnepeutalorstregrqueparuneseuleagence
ettoutesourcedeconflitestalorsexclue.
Lepartitionnementdesdonnespermetdviter tout conflit de donnes, ce qui est prfrable car la rsolution des
conflits est un processus lourd, qui demande beaucoup de temps machine. Plus les conflits sont nombreux, plus la
situationestdifficilegrer.
Lepartitionnementdesdonnespermetdefonctionneravecunecohrencedesdonneslatentecarchaquesitene
modifiequesonproprejeudedonnes.Lapplicationdecettecohrenceestmoinslourdemettreenuvrequela
cohrencetransactionnelleimmdiatequireposesurunprocessusdevalidationdeuxphases.
- 3 - ENI Editions - All rigths reserved
Ce type de partitionnement nest pas confondre avec le partitionnement de tables. Dans le cadre de la
rplication,cestunepartitionlogiquequiestdfinie,alorsquedanslecadredunetablepartitionne,cest
unepartitionphysiquedelatablequiestdfinie.
Exemples:
Exempledepartitionnementhorizontal
Desbilletsdespectaclessontvendusenplusieurspointsdevente.Afinquelammeplacenesoitpasvenduedeux
fois,loprationlaplussimplemettreenuvreconsisteattribuerpourchaquepointdeventeuncertainnombre
deplaces.Lasalleestdoncpartitionneenfonctiondespointsdevente.Parlasuitechaquepointdeventegrede
faonautonomelesplacesquiluionttattribues.Parcontrechaquepointdeventepeutconnatrelesplacesnon
encorevenduesparlesautres,icilacohrencetransactionnellelatentesuffitamplement.
- 4 - ENI Editions - All rigths reserved
Exempledepartitionnementvertical
Chaquepointdeventedunechanedemagasinsderparationautomobilegresonproprestockdemarchandiseset
parlebiaisdelinformatiqueconnatlestockdespointsdeventequiluisontleplusproches.Laconnaissancedece
stockserautiliselorsquunepiceestmanquanteetquilfautsatisfaireleclientauplusvite.Iciencore,lacohrence
transactionnelle immdiate nest pas ncessaire car cest une connaissance gnrale du stock voisin (accessible
uniquementenlecture)quiestdemande.
4.Typesderplication
IlexistetroistypesderplicationfournisparSQLServer:
G Captureinstantane,
G Transactionnelle:captureinstantanepuismisejourimmdiatedesabonns,
G Fusion.
Chacun des types de rplication rpond un besoin bien prcis. Suivant la mthode choisie, soit les donnes
convergent,soitlacohrencedestransactionsestgarantie.
- 5 - ENI Editions - All rigths reserved

Touteslesmthodesderplicationfournissentdesfonctionsetdesattributspourgreraussibienlacohrencedes
donnes que lautonomie des sites. La gestion du partitionnement est laisse sous lentire responsabilit du
programmeuretaucunemthodederplicationnetouchececritre.
Il est important de signaler quune mme application peut mettre en uvre simultanment, mais sur des donnes
diffrentes plusieurs modes de rplication. Toutes les donnes ne ncessitent sans doute pas la cohrence
transactionnelleimmdiate,parfoisunecohrencetransactionnellelatentesuffitlargement,etpourcertainesvaleursil
peuttreopportundemettreenplaceunerplicationdefusionafinquelesbasestendentgrerlemmejeude
donnes.
Letypederplicationchoisiserafonctiondesexigencesentermedecohrencedesdonnes,dautonomiedessites
maisaussientenantcomptedesressourcesmatriellestellesquelacapacitdurseau,cederniertantfortement
utilislorsdunecohrencetransactionnelleimmdiate.
- 6 - ENI Editions - All rigths reserved
Lesmodlesdelarplication
Dans SQL Server, les diffrents modles de rplication utilisent la mtaphore "EditeurAbonn" afin de concevoir au
mieuxlesmodlesderplication.
1.Lesprincipauxcomposants
a.LEditeur
Comme un diteur de livres ou de journaux, un serveur Editeur met la disposition des autres serveurs des
donnespourmettreenuvrelarplication.Lditeurconservetoutelesdonnespublies(cellesquiparticipent
larplication)ettientjourlesmodificationsintervenuessurcesdonnes.Pourlesdonnespublies,lditeurest
toujoursunique.

b.LeDistributeur
Il sagit du serveur SQL qui contient la base de distribution, cestdire celle qui contient toutes les informations
utilisesparlesabonnspourtenirjourlesdonnesquilscontiennent.
Cesdeuxrlespeuventtretenusparlammemachine.

c.LesAbonns
CesontlesserveursSQLquistockentunecopiedesinformationspubliespuisreoiventlesmisesjourdeces
donnes.Danslesversions6.xdeSQLServer,ilntaitpaspossibledemodifierlesdonnessurlesabonns.Ilest
maintenantpossibledemodifierlesdonnespubliessurlabonn.Unabonnpeutdevenirditeurpourdautres
abonns.
Comme pour un magazine, les abonns doivent passer des abonnements pour recevoir des donnes publies. Il
existedeuxtypesdabonnement:
- 1 - ENI Editions - All rigths reserved
Dans un tel cas, cest le distributeur qui se charge denvoyer la mise jour des donnes distribues tous les
abonns.Cetypedabonnementestparticulirementbienadaptlorsqueletempsdemisejourdesabonnsdoit
trerduitauminimum.
Aveclesabonnementsenvoys,lesabonnspeuventnepastredesbasesSQLServermaisOraclepar
exemple.
Cest labonn qui dcide de souscrire ou non un abonnement. Cest par la suite labonn qui va demander
rgulirementdesmisesjour.Cetypedabonnementconvientbienlorsquelesabonnssonttrsnombreux,car
lachargedetravailseraittropimportantepourleserveurDistributeur.Lesabonnementsextraitssontgalement
bienadaptsauxutilisateursnomades,carlorsquelutilisateurvientsereconnecteraurseaudelentreprise,cest
sonpropreserveurquidemandelamisejourdesesdonnes.

d.LesAgents
Pour fonctionner correctement, la rplication ncessite que certains programmes sexcutentdefaonrcurrente.
Cesprogrammesportentlenomdagentetleurexcutionrptitiveestpossiblecarilsapparaissentsousformede
tcheplanifie.LesagentsderplicationfonctionnentdoncsouslecontrledeSQLServerAgent.
Lesagentsderplicationsont:
G Lagent de capture instantane : son rle est de fournir une image exacte de la base rplique un
instantprcis.Cetteimageprendencomptelesstructuresetlesdonnes.Latotalitdecettecaptureest
stocke dans des fichiers de capture instantane et des informations de synchronisation sont stockes
danslabasededistribution.Cetagentsexcutesurledistributeur.
G Lagentdelecturedujournal:cetagent,actifuniquementdanslecadredelarplicationtransactionnelle,
scrute le journal de base de donnes laquelle il est attach et copie les transactions qui concernent la
rplication vers la base de distribution. Si des rplications transactionnelles sont dfinies sur plusieurs
bases,alorschacunedentreellepossdesonpropreagentdelecturedujournal.Cetagentsexcutesur
ledistributeur.
G Lagentdedistribution:excutsurleserveurdedistribution(abonnementpouss)oubiensurlabonn
(abonnement extrait), lagent de distribution a en charge dappliquer la capture instantane et les
transactions enregistres dans la base de distribution. Chaque abonn dispose dune instance spcifique
delagentdedistribution.
Abonnementenvoy
Abonnementextrait
- 2 - ENI Editions - All rigths reserved
G Lagent de fusion : spcifique la rplication de fusion, il se charge tout dabord dappliquer la capture
instantane sur labonn. Par la suite, il se connecte au serveur de publication et labonn pour
rapprocher les informations. Par dfaut, il tlcharge les modifications de labonn sur le serveur de
publication,puisilreportesurlabonnlesmodificationsintervenuessurleserveurdepublication.Chaque
abonnunerplicationdefusionpossdesonpropreagentdefusion.
G Lagentdelecturedelafiledattente:spcifiquelarplicationtransactionnelleavecloptiondemise
jourenattente,cetagentsexcutesurleserveurdedistribution.Ilnenexistequuneseuleinstancequel
que soit le nombre dabonns. Lagent de lecture de la file dattente, va reporter les modifications
effectuesauniveaudesabonnssurleserveurdepublication.
LesagentsderplicationssontgrssoitparSQLServerManagementStudio,soitparlemoniteurderplicationde
SQLServer.
2.Rplicationdecaptureinstantane
Cette rplication consiste prendre une image instantane des donnes publies dans la base. Ce type de
rplicationdemandeunesurchargedetravailpeuimportantepourleserveurditeurcarloprationestponctuelle.
Les abonns sont mis jour en recopiant la totalit des donnes publies plutt que deffectuer uniquement les
modifications(INSERT,UPDATEetDELETE)quisontintervenues.Cetterplicationconvientbienpourdespublications
depetitvolumesinonlesmisesjoursdesabonnspeuventncessiterdesressourcesrseauimportantes.
Cetterplicationestgalementbienadaptedanslecasdediffusiondungrandvolumedinformationsmisesjour
de faon ponctuelle et globale. Cest par exemple le cas dun catalogue de produits dit par un fournisseur. Ce
catalogueestimportantetilestmisjour(changementdetarifs,modificationdedescription,ajoutsdenouveaux
produits,suppressiondanciensproduits)defaonglobaleetponctuelle(parexempledeuxfoisparan).Ladiffusion
decesnombreuxchangementsestplusrapideparunecaptureinstantane.
Cetterplicationestlaplussimpleetellegarantitunecohrencetransactionnellelatente.
Larplicationdecaptureinstantaneestsouventutiliselorsquelesabonnsontbesoindaccderauxinformations
uniquementenlectureetquilsnontpasbesoindeconnatrelesinformationsentempsrel.
Cest lagent de capture instantan qui se charge deffectuer le travail pour prparer les fichiers contenant les
schmasetlesdonnesdestablespublies.Cesfichierssontstockssurledistributeur.

Chaque fois que lagent de capture instantan sexcute, il commence par vrifier sil existe de nouveaux
abonnements.Sicenestpaslecas,alorsaucunscript,niaucunfichierdedonnes,nestgnr.
Silapublicationestcreavecloptiondecrationimmdiatedunepremirecaptureinstantane,alorsdenouveaux
fichiersdedonnesetdenouveauxschmassontcrschaquefoisquelagentdecaptureinstantansexcute.
- 3 - ENI Editions - All rigths reserved
Touslesfichiersetlesschmassontstocksdansledossierdecaptureinstantane,puislagentdedistributionou
defusiontransfertverslabonn,moinsdedciderderalisercettetapemanuellement.
Lagent de capture instantane ajoute des informations dans la tableMSrepl_commands pour indiquer
lemplacement du jeu de synchronisation, et dans la table MSrepl_transactionspour prciser la tche de
synchronisationdelabonn.Cesdeuxtablessesituentdanslabasededonnesdedistribution.
Laprocduresp_replcmdspermetdeconnatrelalistedescommandespourlestransactionsmarquespour
larplication.
Lacaptureinstantaneestlepointdedpartdelarplication.
Lesscriptscorrespondantcettecaptureinstantanesontnormalementstockssurledistributeur.Ilestpossible
dedfinirunautreemplacementenplusoulaplacedelemplacementpardfautafinderduirelachargedetravail
dudistributeur.Cetautreemplacementpeutcorrespondreunrpertoirepartagsurunautreserveuroubienun
support amovible tel quun CDRom. Ce dernier type de support peut tre trs apprciable dans le cas de la
rplication dune base de donnes volumineuse, afin de ne pas surcharger le rseau. Cet autre emplacement est
conservcommeunepropritdelapublication.
Avec ce type de rplication, la base de donnes de distribution nest pas utilise et ne contient aucune donne
utilisateur.
Selon la configuration de la rplication pour laquelle la capture instantane est effectue, les fichiers gnrs ne
serontpaslesmmes.
Silacaptureinstantaneconcerneunerplicationtransactionnelleouunerplicationdefusionsanspublicationavec
filtre paramtr, alors la capture instantane contient la structure et les donnes dans des fichiers au format bcp
(copieparbloc).
Dans le cas contraire (rplication de fusion avec une publication qui possde un filtre paramtr), alors la capture
instantane est ralise en deux temps. Tout dabord, la structure est capture, puis les donnes sont captures
pourchaqueabonnlafusionafindetenircomptedufiltrageparticulierdesdonnes.
3.Rplicationtransactionnelle
Ellepeuttreutilisepourrpliquerdestables(intgralementoupartiellement)etdesprocduresstockes.
Les rplications transactionnelles utilisent le journal pour connatre les modifications apportes aux donnes
publies. Ces modifications sont stockes tout dabord sur la base de distribution avant dtre envoyes sur les
abonns.
Touteslespublicationspossdentunditeur.Lesmodificationsapporteslditeursontrecopiesdanslabasede
distributionavecunlapsdetempsplusoumoinslong.Dansunenvironnementolesconnexionssontoptimales,le
tempsdelatenceentrelditeuretlesabonnspeuttretrsfaible.
Cetterplicationfonctionneaussibienavecdesabonnementsenvoysquedesabonnementsextraits.
- 4 - ENI Editions - All rigths reserved

Larplicationtransactionnelleesttoujoursmiseenuvresuiteunecaptureinstantaneafinquetousles
abonnspartentsurlammebasedinformation.
En fonction du type de publication, la rplication transactionnelle peut permettre la mise jour des informations
directement sur les abonns avec un report de la transaction sur le serveur afin de la diffuser vers les autres
abonnsdanslecadreclassiquedelarplicationtransactionnelle.
4.Rplicationdefusion
Ilsagiticidesurveillerlesmodificationsdunebasededonnessourceetdesynchroniserlesvaleursentrelditeur
etlesabonns.Cesdernierspeuventtouseffectuerdesoprationsdemisejoursurlesdonnesdistribues.Si
lditeur conserve la matrise de la publication, ce nest pas toujours les oprations effectues sur lditeur qui
prennentlepassurcelleseffectuessurlabonn.Touteslesmodificationsapporteslabaseciblesontreportes
danslabasesource.
Touteslestablesquiparticipentunepublicationdefusionpossdentunecolonneuniqueidentifieraveclaproprit
ROWGUIDCOL.Danslecascontraire,unecolonnerowguidestajouteautomatiquement.

Larplicationdefusionnecommencepastoujoursparunecaptureinstantane.

- 5 - ENI Editions - All rigths reserved


5.Lesmodlesphysiquesderplication
Tous les modles physiques prsents ciaprs sont indpendants du type de rplication choisi. De plus leur
prsentationreposeentirementsurlamtaphore"diteur/distributeur/abonn".
a.Editeurcentralabonnsmultiples
CestlemodlepardfautdansSQLServer.Leserveurditeurjouegalementlerlededistributeur.Lditeuret
le distributeur peuvent sexcuter sur deux serveurs diffrents. Il est galement possible dutiliser le mme
distributeurpourplusieursditeurs.
Leserveurdepublication(lditeur)estlepropritairedetouteslesdonnesrpliques.Leserveurdedistribution
stockelesdonnesenattendantquellessoientenvoyessurlesabonns.Lesdonnesreuessurlesabonns
doiventtreaccessiblesenlectureseule:touslesutilisateursnepossdentquelapermissionSELECT.

- 6 - ENI Editions - All rigths reserved

Si le serveur et le distributeur sont sur deux machines distinctes, la plus grosse partie du travail de
rplicationestpriseenchargeparledistributeur.
b.Abonncentralditeursmultiples
Danscecas,plusieursditeursrpliquentlesdonnesversunabonncentral.Labonncentraliselesinformations
detouslesditeurs.Ilpossdeunevueglobaledelasituationtandisquechaquediteurpossdeunevuelocale
de linformation. tant donn que plusieurs diteurs vont inscrire de linformation dans la mme table
dabonnement,afindviterlapertedinformation,ilestimportantquechaquedonnesoitclairementpossdepar
unseulditeur.Lemoyenleplussimplemettreenuvreestunfiltragehorizontaldesdonnes.
Exemple:
Ce mode de rplication peut tre mis en uvre par une entreprise qui souhaite tre au courant des oprations
menessurtouslespointsdevente.
- 7 - ENI Editions - All rigths reserved

c.diteursmultiplesabonnsmultiples
Dans ce cas, les diteurs sont galement des abonns multiples. Ce cas pourrait se produire par exemple entre
plusieurspointsdeventetravaillantindpendammentlesunsdesautresmaissouhaitantconnatrelesdiffrents
stocksdespointsdeventes.

Touslesmodlesphysiquesderplicationpeuventtreassocisauxdiffrentstypesderplicationquiexistent.
Exemple:
Unloueurdeskidisposedeseptmagasinsrpartiscommesuit:
G troismagasinsdanslastationAaltitude1800,
G deuxmagasinsdanslastationAaltitude1600,
- 8 - ENI Editions - All rigths reserved
G deuxmagasinsdanslastationB.
LeloueurhabitedanslevillageVetsouhaiteconnatretouslessoirslesrsultatsdesesdiffrentsmagasins.
Afinderpondrelemieuxpossibleauxexigencesdesclients,lesmagasinssitusdansunemmestationetune
mmealtitudeconnaissenttouslesstocksconcernantcevillageetcettealtitude.Quelmodleettypederplication
fautilmettreenplace?

Unerplicationtransactionnellesansautoriserlesmisesjoursurlesabonnsvatremiseenplacedanschaque
station, puis chaque magasin va mettre en place une rplication transactionnelle vers le serveur utilis par le
loueur.
- 9 - ENI Editions - All rigths reserved
Planification
Lamiseenplacedelarplicationncessiteuneplanificationrigoureusedestchesmenerafindutiliseraumieuxles
ressources fournies par SQL Server tout en rduisant les ressources matrielles (temps UC, rseau) utilises par la
rplication.
1.Optionsgnralesdeplanification
a.OptionNOTFORREPLICATION
LoptionNOTFORREPLICATIONpermetdedfiniruncomportementdiffrentdesoptionslorsqueletraitementest
faitdanslecadredelarplication.Cetteoptionestpositionnablesur:
G lescolonnesdetypesidentity,
G lescontraintesdevalidation(CHECK),
G lescontraintesdecltrangre(FOREIGNKEY),
G lesdclencheursdebasededonnes.
b.Typededonnesuniqueidentifier
Le type de donnes uniqueidentifier est utilis avec la colonne ID et avec la fonction NEWID() qui permet de
gnrerunnouvelIDpourchaquenouvelleligne.
AvantagesduGUID:
G leGUIDesttoujoursuniqueetainsidenombreuxconflitssontvits,
G lenombredeGUIDnestpaslimitcontrairementauxidentits.
Cependant,cetteoptionnestpasintressantelorsquelesutilisateursnevoientpasounutilisentpaslesvaleurs
duGUID.Eneffetlesvaleursdetypeuniqueidentifierprsententdesinconvnientsquilnefautpasngligerlors
delamiseenplaceduneapplication.
G lamanipulationparunutilisateurestdifficile(formattroplong),
G lesvaleurssontalatoiresetnepossdentaucunesignification,
G les valeurs uniqueidentifier ne sont pas ncessairement disponibles pour les applications existantes qui
sontconstruitespartirdevaleursdidentificateursincrmentielles.
Enrsum,ilestpossibledeprciserquelesvaleursdetypeuniqueidentifiersontbienadapteslorsquellessont
utilises directement par SQL Server ou bien par lapplication, car elles permettent de manipuler un identifiant
unique mais leur manipulation par lutilisateur final est malaise. Ces valeurs sont notamment utilises dans le
processusderplicationpourlestockageinternedinformations.
c.Filtragedesdonnes
Pardfautlorsquunetableparticipeunepublication,lintgralitdesdonnesquellecontientestrpliquesur
les postes distants. Cependant, les postes distants nont pas forcment besoin de connatre lintgralit des
valeurs,ilsnesontparfoisintresssqueparunsousensembledelignesetoudecolonnes.Onparleraalorsde
filtrage.
La filtrage permet de rduire le volume des donnes publies et par ce fait, la rplication rclame moins de
ressourcesauniveaudesserveurslamettantenuvre(tempsUC,espacedisque...)etauniveaudurseaucarle
volumedinformationtransmettrechaqueabonnestmoindre.
- 1 - ENI Editions - All rigths reserved
Ilsagitdanscecasdepublierunsousensembledeslignescontenuesdanslatablepublie.Labonnnerecevra
queleslignesdelatabledelditeurquicontiennentdelinformationleconcernant.
Cependantlefiltragehorizontalprsentequelquesinconvnients.Danslecasdunerplicationtransactionnelle,la
clause de filtrage doit tre value pour chaque ligne journalise concernant la publication. Si lvaluation est
positive,alorslinformationesttransmiseaudistributeur,sinonilnesepasserien.Cettesurchargedetravailest
assure par lditeur. Le cot de cette charge supplmentaire de travail sur le serveur doit tre largement
compens par les gains sur les abonns et lallgement du trafic rseau. Si ce nest pas le cas, il est prfrable
dviterunfiltragehorizontal.
Ilsagitdanscecasdepublieruniquementcertainescolonnesdelatablequiparticipelapublication.Cefiltrage
possde une influence directe sur la structure de la table gnre sur labonn qui est diffrente de la table sur
lditeur.
Contrairementaufiltragehorizontal,lefiltrageverticalnevapasaffecterdefaonsignificativelesperformancesde
lditeurcarlachargesupplmentairedetravailesttrsfaible.
Ilestbiensrpossibledecombinerunfiltragehorizontaletunfiltrageverticalsurunemmetable.
2.Rplicationdecaptureinstantane
Ilexistedeuxcritresprendreencompteafinquecetterplicationsedroulecorrectement.
Cestlagentdecaptureinstantanequisechargedemenerbienlacaptureinstantanedelapublication.Lorsde
lexcutiondesontravail,lagentverrouillelatableeteffectueunecopieenblocdesdonnes.Tantquelatableest
verrouille par lagent, aucun autre utilisateur ne peut accder en modification (INSERT, UPDATE, DELETE) aux
donnes quelle contient. Afin de rduire la nondisponibilit de la table visvis des utilisateurs, la capture
instantanedoitsexcuterunmomentolesutilisateursnecherchentpasmodifierlesvaleursdelatable.
Pour planifier au mieux lexcution de la capture instantane, il faut connatre la dure approximative du temps
ncessairepourraliserlacapture.Commelagentdecaptureutilisebcp,leplussimpleestdefaireunecopiepar
blocsdestablespubliesafindestimerletempsrequis.Silejeudedonnesesttrsvolumineux,ilestplussimple
defaireunbcpsurunchantillonpuisdvaluerletempsglobal.
Le rsultat de la capture instantane est stock, sous forme de fichiers, sur le distributeur dans un rpertoire
partag.Commelesfichierscontiennenttouteslesdonnesprsentesdanslatable,satailleseraprochedecellede
latableetilestainsifaciledeconnatrelespacedisquerclamparlesfichiersdecaptureinstantane.
Les fichiers de capture instantane sont stocks par dfaut dans un dossier local, gnralement ddi
lhbergement des fichiers de capture installs, du type : C:\Program Files\Microsoft SQL
Server\MSSQL1O.MSSQLSERVER\MSSQL\ReplData
Lagent de capture instantane doit disposer des privilges suffisant pour crire dans ce dossier. Par contre, le
compteWindowsassocilagentdefusionetderplicationdoitdisposerdesprivilgesdelecture.
3.Rplicationtransactionnelle
Cettefoisciquatrelmentssontprendreencompte.
Il ne faut pas oublier que la mise en route dune rplication transactionnelle commence toujours par une
captureinstantane.
Lagentdelecturedujournalscrutelejournaldelabasepublieettransfretouteslestransactionssurlesdonnes
publiesverslabasededistribution.Lataillerclameparlejournalestenrglegnralelgrementsuprieure
celledunebasenesupportantpaslarplication.Eneffetsilabasededistributionnestpasaccessibleousilagent
Filtragehorizontal
Filtragevertical
Filtragemixte
Planificationrigoureusedescapturesinstantanes
Espacedisquepourledossierdecapture
Espacedujournal
- 2 - ENI Editions - All rigths reserved
de lecture du journal est dsactiv, le journal ne peut pas tre vid tant que la transaction la plus ancienne
concernantlarplicationnapasttransfreverslabasededistribution.
Surledistributeur,labasededistributionpermetdestockeretdetransmettreauxabonnstouteslesinformations
ncessairesafindemettrejourlesdonnesrpliques.Lapremireoprationralisesurlabonnestlacapture
instantane de la publication. Cette opration de capture instantane est toujours gre sous forme de fichiers
stocksendehorsdelabasededistribution.
La base de donnes de distribution va conserver toutes les oprations de modifications des donnes rpliques
depuisladernirecaptureinstantane.Ainsi,siunnouvelabonnarrive,ilserapossibledemettrejourlestables
contenantlesdonnespubliespartirdelacaptureinstantaneprsentesurlesserveursdedistributionpuisen
rejouanttouteslestransactionsdontlabasededistributionconserveunetrace.
Afinquelabasededistributionconserveunetailleraisonnable,ilestprudentdeplanifierrgulirementunenouvelle
capture instantane. Le travail de nettoyage de la base de distribution commence ds que la nouvelle capture
instantaneesttermine.
La gestion des cls primaires est assure si toutes les tables participant la rplication en possdent une. Il est
possibledemettreenplaceuneclprimairesurunetableexistantelaidedelacommandeALTERTABLEoubienen
utilisantSQLServerManagementStudio.
Lesdonnesdetextedegrandedimensionetdimagesontprisesenchargeparlarplicationtransactionnelle.
Pourseprmunirdetousproblmes,ilestimportantdeserappelerquelarplicationtransactionnellesappuiesurle
journal des transactions par lintermdiaire de lagent de surveillance du journal et donc seules les oprations
journalisespeuventtreprisesencomptedansleprocessusderplication.
Leparamtreduserveurmaxtextreplsizepermetdespcifierlataillemaximale(enoctets)desdonnes
textouimagepouvanttrerpliques.Siunecommandedpassecettelimitealorsloprationchoue.
4.Rplicationdefusion
La rplication de fusion ne prend pas en charge les colonnes de type timestamp (estampille de temps), car ces
colonnessontgnresautomatiquementparleserveurlocaletnegarantissentlunicit quauseindunebasede
donnes spcifique. Il nest donc pas possible quune modification de la valeur timestamp sur un serveur soit
appliquelacolonnetimestamp dunautreserveur.Cestpourquoilescolonnesdetypetimestamp doivent tre
supprimesdetouteslestablesparticipantlarplicationdefusion.
Commelarplicationdefusionpublielesmodificationsintervenuessurlabonn,labasedecedernierdoitpermettre
de garantir lintgrit des donnes et donc la totalit des tables ncessaires pour garantir lintgrit des donnes
doittreprsentesurlabonn.
Si les tables qui participent la rplication comportent des contraintes de rfrences, alors les tables rfrences
doiventgalementparticiperlapublication.Ceseraitparexemplelacasdune tablecommandesquirfrencela
clprimairedelatableclients.Cettederniretablenedoitparticiperlarplicationdefusionquepourautoriserla
crationdecommandessurlabonn.Silabonnsecontentedemodifierdesrenseignementscontenusdanslatable
commandessanstoucherlacolonnequirfrenceleclient,alorslaprsencedelatableclientsnestpasncessaire.
Dansunerplicationdefusion,ilestpossiblederajoutermanuellementdenouvellestablestoutmoment.
LabasededonnesDistribution
Lesclsprimaires
Lestypestextetimage
Colonnestimestamp
Intgritdesdonnes
Rfrencesdeclprimaire
- 3 - ENI Editions - All rigths reserved
Laccsaurseau
Afin que le processus de rplication se droule sans encombre, certaines conditions lmentaires doivent tre
satisfaitessurlaccsaurseau:
G si les serveurs SQL participant la rplication se situent dans des domaines diffrents, des relations
dapprobationdoiventtretabliesentrecesdomaines.
G lagentSQLServerdoitsexcuterdanslecontextedun compte dutilisateurdudomaine.Sipossible,lagent
SQLServerdesdiffrentsserveursSQLparticipantlarplicationutilisetoujourslemmecomptedutilisateur.
CecomptedutilisateurdudomainedoittremembredugroupelocalAdministrateursafindefaireprofiterdes
privilgesadministratifsauserviceSQLServerAgent.
IlestpossibledeconnatreetdemodifierlaconfigurationdeceserviceparSQLServerConfigurationManager.
VrificationdespropritsdelagentSQLServer
Lagent SQL Server ne doit utiliser ni un compte local system ni un compte dutilisateur local, car ces deux
comptesnepermettentpasdaccderauxressourcesdurseau.
- 1 - ENI Editions - All rigths reserved
Miseenuvre
Quels que soient le modle et le type de rplication choisis, la mise en uvre doit toujours respecter les mme
tapes:
G lamiseenuvredudistributeur,
G lamiseenuvredelditeur,
G lamiseenuvredesabonns,
G ladfinitiondespublications.
CommeSQLServerconsidrepardfautquelditeuretledistributeurrsidentsurlemmeserveur,linstallationde
cesdeuxtatsestconfondue.
Pourpouvoirmettreen uvrelarplicationpartirdeSQLServerManagementStudio,touslesserveursSQLquiy
participentdoiventytreinscrits.
SQL Server Management Studio propose diffrents assistants graphiques pour mettre en place, surveiller et
paramtrer lenvironnement de rplication. Tous ces lments sont accessibles depuis le nud Rplication de
lexplorateurdobjetsdeSQLServerManagemmentStudio.

1.Ledistributeur
Ilsagitdupostequivagrerlerpertoirepartagpourlacaptureinstantaneainsiquelabasededistribution.Le
distributeurstockelesmodificationseffectuessurlesdonnespuislestransmetauxabonns.
a.Lesconcepts
Le distributeur doit tre install avant de mettre en place les diteurs qui lutilisent. Pour crer un distributeur, il
faut tre administrateur du systme (membre du groupe local Administrateurs et par le biais des connexions
approuvesseconnecterSQLServerentantquadministrateur).Lorsqueledistributeurestinstall,ilestpossible
deconnatresespropritslocalesetdistantes.
Labasedistribution
- 1 - ENI Editions - All rigths reserved
Ellecontienttouteslestransactionsquisontenattentedenvoiverslesabonns.Danslecadredunerplication
transactionnelleelleestalimenteparlagentdesurveillancedujournalquiytransfretouteslestransactionsqui
interviennent sur des donnes rpliques. Cette base est automatiquement cre lors de la configuration du
distributeur,maisilestpossiblede:
G spcifierunserveurdedistributiondistantlorsdelinstallationdelditeur,
G dfinirplusieursbasesdedistributionpourunmmediteur.
Le rpertoire de distribution, utilis par la rplication de capture instantane, doit tre disponible pour tous les
agentsdedistributionquisontsusceptiblesdelutiliser.Cetteutilisationestfonctiondutypederplicationmisen
uvreetneseposequelorsdelutilisationdunserveurdedistributiondistant.
La mmoire vive prsente sur le distributeur doit tre en quantit suffisante afin de rpondre promptement aux
diffrentes demandes des abonns. La quantit de mmoire ncessaire est fonction du volume des donnes
rpliquesetdunombredabonns.
Il est possible de dsinstaller un distributeur par le biais de lassistant Rplication, Dsactiver lassistant
PublicationetDistribution.Leseffetssontlessuivants:
G lesbasesdedonnesdistributionduserveursontsupprimes,
G touslesditeursquiutilisentcedistributeursontdsactivsettouteslespublicationssontsupprimes,
G touslesabonnementssontsupprims,maislesdonnesdabonnementrestentsurlesabonns.
b.Lamiseenplace
La mise en place dun distributeur demande des privilges dadministrateur, cestdire tre membre du rle de
serveursysadmin.Lacrationdudistributeurseferasoitparlebiaisdesprocduresstockes,soitparlebiaisde
SQLServerManagementStudio.
LaconfigurationdudistributeurestaccessiblepardeuxcheminsdiffrentsdansSQLServerManagementStudio.
G SoitenslectionnantexplicitementlechoixConfigurer la distribution dans le menu contextuel associ au
nudRplicationdepuislexplorateurdobjets.
G Soit en demandant la cration dune nouvelle publication (choix Nouveau Publication) depuis le menu
contextuelassociaunudRplication.Lassistantdecrationdunepublicationestalorsexcutetcet
assistantpermetdeslectionner/configurerundistributeurpourlarplication.
Accsaurpertoirepartag
Lammoire
Ladsinstallation
- 2 - ENI Editions - All rigths reserved
Lassistantdepublicationseproposedecrerundistributeur
Danslecasolademandeportesurlaconfigurationdeladistribution,lassistantdeconfigurationdeladistribution
estexcut.Cetassistantvatoutdaborddemanderdeprciserleserveurquivajouerlerlededistributeur.Ilest
alorspossibledeslectionnerleserveurquihbergeragalementlespublications(diteur/distributeur)oubiende
slectionnerundistributeurdistant.
ltape suivante, lassistant permet de spcifier le dossier utilis pour les fichiers de capture instantane. Un
dossierlocalestpropospardfaut.Silarplicationdecaptureinstantanedoittreaccessibledepuislerseau,il
estncessairedeprciserunnomdecheminrseau.Lavertissementsituenbasdelafentreporteprcisment
surcepoint.

- 3 - ENI Editions - All rigths reserved


Puislassistantpermetdeprciserlenomdelabasededistributionainsiquelemplacementphysiquedufichierde
donnes et du journal. Comme le montre lcran cidessous, la base se nomme par dfaut distribution et les
dossiersproposssontceuxspcifispardfaut.

Ensuite,lassistantdemandedeprciserquelssontlesditeursautorisstravailleraveccedistributeur.

Enfin, lassistant offre la possibilit soit de raliser la paramtrage immdiatement, soit de gnrer les scripts
TransactSQLcorrespondantauxdiffrentschoixspcifisaveclassistant,pouruneexcutionultrieuredelamise
enplacedudistributeur.
- 4 - ENI Editions - All rigths reserved

Tantquelassistantnestpastermin,aucunemodificationnesteffectuesurleserveur.

Apparitiondelabasededonnedistribution
LesoptionsaccessiblesdepuisSQLServerManagementStudiosontlgrementdiffrentesafindepourvoirraliser
toutes les oprations lies ladministration du serveur de distribution. Ces nouvelles fonctionnalits sont
principalementaccessiblesparlemenucontextuelassociaunudRplicationdelexplorateurdobjets.
- 5 - ENI Editions - All rigths reserved

Lemenucontextuelproposedevisualiserlespropritsduserveurdedistribution.Lespropritsduserveurde
distributionpermettentdeparamtrerladistributionenellemmecommeladuredertentiondestransactionset
celle de lhistorique. Il est galement possible de modifier la liste des diteurs autoriss utiliser ce serveur de
distribution.

Ilestgalementpossibledelancerlemoniteurderplicationafindesuivreletravaileffectuparchaqueagentqui
participelarplication.Lemoniteurderplicationpermetdeconnatreltatdechaqueabonnetdesuivreles
oprationsdesynchronisation.
Lemenucontextueloffregalementlapossibilitdedsactiverladistribution.
Toujours depuis lexplorateurdobjets,ilestpossibledevisualiserlabasededonnessystmedistributionquia
tcrelaidedelassistant.
- 6 - ENI Editions - All rigths reserved
2.Lditeur
Aprslacrationdudistributeur,ilestpossibledecrerunditeurquiutiliseracedistributeur.
Undistributeurpeuttrecommunplusieursditeursetunditeurpeututiliserplusieursdistributeurs.
Lorsdelajoutdunditeuronpeut:
G activerlditeuretlautoriserutiliserledistributeur.
G afficheroumodifierlesoptionsdelditeur.
Lajout,lasuppressionetlamodificationdunditeurpeuventtreralissdediffrentesfaons:
Cestpartirdespropritsdudistributeurquilestpossibledegrer(ajouter/supprimer)lesserveursdepublication
(diteur)quisontautorissutilisercedistributeur.

Il est possible dajouter un distributeur SQL Server ou Oracle. Les procdures dinscription tant diffrentes, le
boutonAjouterproposelechoixentrelesdeuxtypesdditeuravantdelesautoriserutiliserledistributeur.
Pour supprimer lautorisation accorde un distributeur, il faut dsactiver le serveur de publication depuis les
propritsduserveurdedistribution.
Lesoprationsrelativeslajoutetauretraitdunditeursurledistributeursontpossiblesparlintermdiairedes
procdures:
G sp_adddistpublisherpourajouterunnouveauserveurdepublicationsurledistributeur.Lutilisationdecette
procdure rclame lexcution de la procdure sp_get_distributor afin de dterminer si linstance de SQL
Serverestconfigureounonentantquedistributeur.
SQLServerManagementStudio
TransactSQL
- 7 - ENI Editions - All rigths reserved
G sp_dropdistpublisherpoursupprimerleserveurdepublicationdudistributeur.
Si un diteur change de base de distribution, cela revient tout recommencer depuis le dbut soit : dsactiver
lditeur,lesupprimerdelabasededonnesdedistributioninitiale,activerlditeuravecuneautrebasededonnes
dedistribution.Surlditeur,ilconvientdecrerlespublicationsetlesarticlesetdactiverlesabonnsquipeuvent
recevoirdesdonnesenprovenancedelditeurvialedistributeur.
3.Lespublications
Ilexistedeuxsortesdepublications,cellesdedonnesetcellesdeprocduresstockes.
Une publication, dans le cadre de la rplication SQL Server, correspond un ensemble dlments (articles) qui
participent la rplication. Suivant le type de rplication choisi, ces articles peuvent tre des tables, des tables
partitionnes,desprocduresstockes,desfonctions,desvues,desvuesindexes,destypesdedonnesdfinis
parlutilisateur.
Lorsquunetableparticipeunepublication,elleestnommearticle.Larticlecorrespondlatotalitdelatableou
bien un sousensemble de lignes ou de colonnes. Un article peut galement correspondre lexcution dune
procdurestocke,cependantcettefonctionnalitnestpasdisponibledanslacadredunerplicationdefusion.
Cest lors de la cration dune publication que lditeur va utiliser les ressources mises sa disposition par le
distributeur pour hberger les fichiers de capture instantane ainsi que la copie des transactions sur la base de
distribution.
Aumomentdelacrationdunepublication,leslmentssuivantsdoiventdonctrersolus:
G lenomdelapublicationetsadescription,
G leserveurdedistributionutiliser,
G letypederplication(captureinstantane,transactionnelleoufusion)laquellelapublicationvaparticiper,
G lesarticles.
Tousceslmentsvontdevoirtrespcifislorsdelexcutiondelassistantdecrationdunepublication.
Lacrationdunepublicationparlepropritairedelabasededonnes(ouunutilisateurmembredurledb_owner)
nest possible que si ladministrateur du serveur a activ la base pour participer une rplication. Lors de cette
activation, ladministrateur prcise si les publications dfinies sur la base peuvent sinscrire dans une rplication
transactionnelleoudefusion.
Lactivation de la publication sur les bases est possible depuis la fentre prsentant les proprits du serveur de
publication.LechoixPropritsduserveurdepublicationdepuislemenucontextuelassociaunudRplication
delexplorateurdobjetspermetdaffichercettefentre.
Modificationdelabasededonnesdedistribution
Crationetmodification
- 8 - ENI Editions - All rigths reserved
LabaseGescomestactivepourlarplicationtransactionnelle
LacrationdunepublicationestgalementraliseparlintermdiairedunassistantsousSQLServerManagement
Studio.Pourcrerunenouvellepublication,ilfautslectionnerNouvellepublicationdanslemenucontextuelassoci
aunudRplicationPublicationslocalesdelexplorateurdobjets.
La premire tape de lassistant consiste slectionner la base de donnes qui contient le ou les objets qui vont
participerlapublication.Cettebotededialoguemontretouteslesbasesdedonnesutilisateurs,quellessoientou
nonactivespourlarplication.
Dans lexemple cidessous, seule la base Gescom est active pour la rplication, alors que toutes les bases sont
prsentesdanslafentre.
- 9 - ENI Editions - All rigths reserved

Lassistantdemandealorsdeprciserletypederplicationlaquellecettepublicationvaparticiper.
Danslexemplecidessous,lapublicationestdfiniedanslecadredunerplicationtransactionnelle,cestdireque
lesdonnessontmodifiessurlditeuretquecesmodificationssontreportessurlesabonnsparleprocessusde
rplication.
Lechoixseportesurunecaptureinstantane
- 10 - ENI Editions - All rigths reserved
Aprsqueletypederplicationestdfini,ilestpossibledeslectionnerleslmentsdelabasequiparticipent
cettepublication,cestdiredfinirlesarticles.
Danslexemplecidessous,lapublicationvacompterunseularticle:latabledesclients.
Choixdesarticlespublier
Seuleslestablesquipossdentuneclprimairepeuventparticiperunepublicationentantquarticle.

Pourchaquearticlepubli,ilestintressantdaffichersespropritsafindesaisirunedescriptionpourchaquearticle
etfixerleschmaetlenomdelatablededestination.
- 11 - ENI Editions - All rigths reserved
Fixerlespropritsgnralesdechaquearticle
Les proprits de larticlepublipermettentdedfinirlecomportementadoptersurlesindex,lesindexXML,les
valeurspardfaut,lesautorisations.
Lassistantoffreensuitelapossibilitdedfinirdesfiltrespourlimiterlevolumededonnespublies.Parexemple,
estil ncessaire de publier la totalit de la table clients ou bien fautil limiter la rplication aux seuls clients dune
zonegographiquebiendfinie?
- 12 - ENI Editions - All rigths reserved

Ltapesuivantepermetdedfinirsilestncessaireounonderaliserunecaptureinstantaneetventuellement
de planifier la cration rgulire de nouvelles captures instantanes. Ce dernier point est particulirement
intressantlorsquelevolumededonnesmodifiesestimportantoubienquandlesabonnementsnesontpastous
souscritslammepriode.
Danslexempleciaprs,lacrationdunecaptureinstantaneestdemandeetcettecaptureseraeffectueunefois
parmois.

- 13 - ENI Editions - All rigths reserved


Parlasuite,lassistantdemandedespcifierlescomptesdescuritquivonttreutilissparlesagentsdecapture
instantaneetdelecturedujournalpourseconnecterauserveur.

AvantdecliquersurTerminerpourcrerlapublication,lassistantoffrelapossibilitdecrerlesscriptsTransactSQL
relatifslacrationdecettenouvellepublication.

Laderniretapedelassistantpermetdenommerlapublication,puisdedemandersacration.
Aprsleurcration,ilestpossibledevisualiseretdemodifierlespublicationsdepuisSQLServerManagementStudio.
Ilestpossibleparlintermdiairedespropritsdelapublication,demodifierleschoixdfinislorsdelexcutionde
lassistantdecrationdelapublication.
- 14 - ENI Editions - All rigths reserved
LesdiffrentespublicationsdansEnterpriseManager
Lesarticlesdunepublicationpeuventtredediffrentstypes.Ilestpossibledemodifierlesarticlesparticipantune
publicationparlintermdiairedespropritsdelapublication.ceniveau,ilestfaciledajouter,demodifieroubien
desupprimerdesarticles.

Lesarticles
- 15 - ENI Editions - All rigths reserved
4.Lesabonnements
Sabonnerunepublicationsignifiequelabonnacceptelesdonnesrpliquessurunebasededestination.
Lorsdelamiseenplacedelabonnement,ilestncessairededfinirletypedelabonnement,cestdirepoussou
tir.
Labonnementpousssignifiequelagentdedistributionestexcutsurleserveurdedistribution.Lesinformations
sontdoncpoussesdepuisleserveurdedistributionverslabonnparlagentdedistribution.
Danslecadredelabonnementtir,chaqueabonnexcutesonpropreagentdedistribution.Cestdonclabonnqui
supportecettechargedetravailsupplmentaire.Lagentdedistributionvatirerlesinformationsdepuisleserveurde
distributionverslabonn.
LesabonnementsanonymesnesontplusdisponiblesdepuisSQLServer2005.

Lorsquelesabonnementssontmisenplace,alorsintervientunetapedesynchronisationafindemettreaumme
niveau lditeur et labonn, sa base de destination va recevoir le schma et les donnes publies. La base de
destinationpeutcontenirdautrestables.
Unabonnementnepourratrecrquesilapublicationetlabasededonnesdedestinationexistent.
a.Utilisationdesassistants
SQLServerManagementStudioproposeunassistantpourcrerdenouveauabonnements.Ilestpossibledelancer
cet assistant en slectionnant loption Nouveaux abonnements dans le menu contextuel attache soit depuis le
nudRplicationAbonnementslocaux,soitassociunepublication.Cestdailleurscettedernirepossibilitqui
estillustreparlcrancidessous:

Aprsuncrandaccueil,lassistantdemandedeslectionnerlapublicationconcerneparcenouvelabonnement.
Danslexemplesuivant,cestlapublicationcreprcdemmentquiestconcerneparlenouvelabonnement.
- 16 - ENI Editions - All rigths reserved

Ensuite,lassistantdemandedeprciserletypedelabonnementcestdiresilabonnementseradetypepouss
(avecexcutiondelagentsurledistributeur)oubientir(avecexcutiondelagentsurlabonn).Danslexemple
prsent,cestunabonnementdetypepoussquiestslectionn.

Lassistantpermetensuitedeslectionnerlabonn.Silabonnnapparatpasdanslalistepropose,ilfaututiliser
le bouton Ajouter un abonn pour inscrire le serveur et ainsi avoir la possibilit de le slectionner en tant
quabonn.Lorsdelaslectiondunserveurabonn,ilfautgalementspcifierlabasededonnesdestinatricede
labonnement.Silabasenexistepas,ilestpossibledelacrerceniveau.Danslexemplecidessous,cestune
instancediffrentedeSQLServerquiestslectionneentantquabonn.
- 17 - ENI Editions - All rigths reserved

Ensuite,lassistantdemandedeprciserlescomptesdescuritquiserontutilissparlagentdedistributionpour
seconnecterauserveurdedistributionetsurlabonn.

Par la suite, lassistant demande de prciser le mode dexcution de lagent de distribution. Dans lexemple
prsent cidessous, lagent est excut en continu de faon reporter le plus rapidement possible les
modifications intervenues sur le serveur de publication vers les abonns. Cependant, laide dune planification,
lagentpeutsexcuterunepriodeidentifiecommetantmoinscharge,commelanuitparexemple.
- 18 - ENI Editions - All rigths reserved

Le mme type de question est pos par lassistant pour lexcution de la capture instantane, qui peut tre
excutesoitimmdiatement,soitlorsdelapremiresynchronisation.

Comme pour la cration de la publication, lassistant donne la possibilit de gnrer les scripts Transact SQL
correspondants.
- 19 - ENI Editions - All rigths reserved

Puislassistantprsenteuncrandesynthseavantdeterminerlacrationdelabonnement.
DepuisSQLServerManagementStudio,ilestpossibledevisualiserlensembledesabonnementsdfinisparrapport
unepublicationmaisaussilesabonnementssouscritslocalementparleserveur.

b.Surveillerlarplication
Le moniteur de rplication peut tre lanc depuis le distributeur pour suivre le droulement et lexcution des
diffrentsagentsdelarplication.CemoniteurestaccessibleenslectionnantLancerlemoniteurderplication
depuis le menu contextuel associ au nud Rplication de lexplorateur dobjets de SQL Server Management
Studio.
- 20 - ENI Editions - All rigths reserved

Lemenucontextuelassocilapublicationpermetgalementdobtenirlescomptesrendusdexcutiondesagents
decaptureinstantaneetdelecturedujournal.

c.Suppression
Lasuppressiondunabonnementempchelesnouvellesmisesjourdelabasededestination,maispourautant
cettedernirenestpassupprime,nimmenettoye.Ilreviendraunadministrateurduserveurdedestination
desupprimerleschmacrparlamiseenplacedelapublication.
- 21 - ENI Editions - All rigths reserved
Laccsauxdonnesdistantes
SQLServerpermetunutilisateurconnectlocalement,dexcuterunerequtesurunserveurdistant.Ceprocessus
sappuiesurlaliaisonentrelesserveurs.Lorsquelaliaisonesttablieentredeuxserveurs,leserveurquirceptionne
delapartdelundesesutilisateursunedemandedexcutiondunerequtesurunautreserveur,transmetlarequte
auserveurdistant.
Dansleschmasuivant,unutilisateurconnectsurserveur1peutdemanderlexcution dunerequtesurserveur2
sans avoir se connecter sur serveur2. En effet, comme les deux serveurs sont lis, cest serveur1 qui se charge
dexcuterlarequtesurserveur2.

Lavantagedesserveurslisestquecestleserveurquiprendenchargelaconnexionsurleserveurdistant.Cette
oprationesttransparentepourlutilisateurfinal.
Avantdepouvoirtravailleravecunserveurli,ilfautlinscriresurleserveurlocalpuisdfinirunepolitiquedegestion
desconnexionstabliessurleserveurli.
LanotiondeserveurslispermetSQLServerdtablirunerelationdeconfianceavecdessourcesOLEDBquioffrent
lavantagedaccderauxserveursdistants,dmettredesrequtes,desoprationsdemisesjour,descommandes
etdestransactionspartagessurdessourcesdedonneshtrognes.
1.Ajouterunserveurli
Depuis SQL Server Management Studio, il est facile de dfinir une nouvelle liaison avec un serveur distant en
slectionnant loptionNouveau serveur li dans le menu contextuel associ au nud Objets serveur Serveurs
lisdelexplorateurdobjets.

Labotededialoguerelativelinscriptiondunnouveauserveurliestalorsexcute.Lestroispagesdelafentre
- 1 - ENI Editions - All rigths reserved
permettentdeconfigurercompltementcetteliaison.Siuneerreurouunoubliestfaitcettetape,ilestpossible
dyremdierenmodifiantlespropritsduserveurli.

IlestgalementpossiblederalisercesoprationsenTransactSQLaveclaidedesprocduressp_addlinkedserver
pourajouterunnouveauserveurli,etsp_dropserverpoursupprimerlaliaisonavecunserveur.
2.Grerlesutilisateursdistants
Leserveursourcenepeutouvrirunesessionsurleserveurciblequesicedernierautoriselesconnexionsdistantes.
Pourouvrirlasessionsurleserveurdistant,leserveursourceutiliseralesinformationsdescuritrenseignesau
niveaudelaliaisondesserveurs.
Pourconfigurerleserveurcibleaccepterlesconnexionsralisesdepuisunautreserveur,ilfautactiverlaproprit
Autoriser les accs distants ce serveur au niveau du serveur. Cette opration est ralise depuis la fentre
daffichagedespropritsduserveur,pageConnexionsdanslazoneConnexionsauserveurdistant.
- 2 - ENI Editions - All rigths reserved

Pourqueleserveurdoriginepuisseouvriruneconnexionsurleserveurli,ilestncessairededfinirunmappage
entre les utilisateurs locaux et les utilisateurs distants. Ainsi, seuls certains utilisateurs locaux ont la possibilit
daccder aux donnes distantes. De plus, les oprations ralises sur le serveur li restent dans le contexte de
scuritutilispourtablirlaconnexiondistante.Plusieursutilisateurslocauxpeuventaccderauserveurliense
servantdummecomptedeconnexion.
DepuisSQLServerManagementStudio,cemappagedecompteestralisablepartirdelafentredespropritsdu
serveurli,surlapageScurit.
Danslexemplesuivant,lesconnexionslocalesAdrienetPierresontassocieslaconnexiondistanteAccesNiveau1.
Lesautresutilisateurslocauxnepeuventpasaccderauserveurli.
- 3 - ENI Editions - All rigths reserved

Toutes ces oprations peuvent galement tre ralises en Transact SQL laide des procdures stockes
sp_addlinkedsrvloginetsp_droplinkedsrvlogin.
3.Excutiondunerequtedistribue
Les clients qui sont connects au serveur SQL sur lequel les serveurs lis sont dfinis, peuvent excuter des
requtesquivontinterrogerlesdiffrentessourcesdedonnesgresdirectementparleserveurouaccessiblespar
lintermdiairedunserveurli.lintrieurdunemmerequte,ilestbiensrpossibledefaireappeldesdonnes
provenantindiffremmentdemultiplessourcesdedonnes.
Pour accder des donnes stockes sur un serveur li, il faudra donner le nom complet des objets auxquels on
souhaiteaccder.
Laccsauxdonnesnestpossiblequesileserveurliestconfigurpourpermettrecetaccs.
- 4 - ENI Editions - All rigths reserved

Dsqueceparamtrageesteffectu,ilestpossibledaccderauxinformationslaidedunomcompletdesobjets
cestdireserveur.base.schma.objet.
Exemplederequteutilisantdesdonnessurdesserveurslis
- 5 - ENI Editions - All rigths reserved
Les fonctions OPENQUERY et OPENROWSET permettent daccder des sources de donnes OLE DB sans
avoirlierlesserveurs.
- 6 - ENI Editions - All rigths reserved
Introduction
Lagestiondessauvegardesresteunedestcheslesplusimportantesquidoittreraliseparladministrateurde
bases de donnes. Si les oprations de sauvegardes sont planifies avec exactitude et rigueur, il est tout fait
envisageablederaliserlessauvegardessousformedetravauxautomatissetleresponsableseraprvenupare
maildubondroulementdesoprations.
Lessauvegardessontralisespourseprmunirdespertesdedonnessuite:
G unepannedesupport,
G deserreursutilisateur,
G unepertepermanenteduserveur.
Les sauvegardes SQL Server permettent de sauvegarder la base de donnes alors que des utilisateurs y sont
connects.Cettesauvegardevaprendreencomptetouslesfichiersconstituantlabasededonnesetvaenregistrer
leuremplacement.Leprocessusdesauvegardeassurelacohrencedesdonnesetdesjournauxencapturanttoutes
lesactivitssurvenantdurantleprocessusdesauvegarde.
Bienquelabaseresteaccessibledurantlasauvegarde,certainesoprationssontimpossibles,savoir:
G la cration ou la modification dune base de donnes (notamment lextension automatique du journal des
transactions),
G lacrationdunindex,
G lexcution doprations non journalises car le processus de sauvegarde utilise le journal pour garantir la
cohrencedesdonnes.
- 1 - ENI Editions - All rigths reserved
Planification
La planification des oprations de sauvegarde entrane galement celle de la restauration, en effet lune ne va pas
sanslautre.Cesontlesexigencesenmatirededisponibilitdesdonnesquivontconstituerlecritredterminant
pourlamiseenplacedessauvegardes.Pourralisercetteplanificationilfautrflchirtouslesincidentsquipeuvent
survenir et connatre quels seront les besoins en sauvegarde pour restaurer au mieux linformation. Il sera ensuite
possible dautomatiser tous ces travaux de sauvegarde, et des tests de restauration valideront le bon droulement
desprocduresdesauvegarde.
1.Lesquestions
Lesprincipalesquestionsquilfautseposerpourplanifieraumieuxlessauvegardessont:
G Quelleestlatailledechacunedesbasesdedonnes?
G Quelestlevolumedesmodificationsdedonnes?
G Certainestablessontellesplussujettesquedautresauxmodifications?
G Combiendetempslabasededonnespeutelleresterindisponible?
G Lapertedemodificationsestellecruciale?
G Estilfacilederecrerlesdonnesperdues?
G Quellessontlespriodesimportantesdutilisationdelabasededonnes?
G La base subitelle des surcharges de travail ponctuelles pendant lesquelles il nest pas envisageable de
lancerunesauvegarde?
G Lesutilisateursdoiventilscontinueraccderauxdonnespendantlesoprationsdesauvegarde?
G Quel est le laps de temps entre les troncatures (suppression de la partie inactive) du journal des
transactions?
G Lessauvegardessontellesconservesdefaoncyclique?
G LeserveurSQLestilencluster?
G LeserveurSQLestildansunenvironnementmultiserveuravecuneadministrationcentralise?
La dure des oprations de sauvegarde va dpendre principalement du support sur lequel les sauvegardes sont
effectues.Deuxsupportssontpossibles:lesbandes(conditionquelelecteurdebandesoitinstallsurleserveur
SQL)etlesfichiers.
2.Choisirunestratgiedesauvegarde
Pour chaque base de donnes, il faut choisir une stratgie de sauvegarde qui va tre une combinaison de
sauvegardes compltes de bases de donnes et de sauvegardes du journal des transactions. Pour amliorer les
performancesdesauvegardes,SQLServerproposedessauvegardesdiffrentielles.Deplus,toutescesoprations
peuventtreralisessurlatotalitdelabaseousurungroupedefichiersuniquement.
Une bonne connaissance des diffrentes mthodes de sauvegarde, permet de mettre en uvre le plan de
sauvegardequirpondaumieuxfaceauxexigencesconstateslorsdelaplanification.
La stratgie de sauvegarde doit tre fixe base par base en fonction des besoins et des volutions de
chacunedentreelles.
- 1 - ENI Editions - All rigths reserved
a.Sauvegardedunebasededonnes
La sauvegarde totale dune base de donnes permet de fournir un point de dpart pour les restaurations. Si
uniquementdessauvegardescompltesdebasededonnessonteffectues,encasdeproblme,lestransactions
validesdepuisladerniresauvegardecomplteserontperdues.
Lessauvegardescompltesncessitentuntempsrelativementlongetoccupentsurlesupportdesauvegardeun
espace consquent. Cestpourquoi,mmesiellesconstituentunpointdedpartobligatoiretoutestratgiede
sauvegarde,lessauvegardescompltesdebasededonnesrestentbienadaptesauxbasesdefaiblesvolumes
etpourlesquellesilestpossibledereproduirefacilementtouteslestransactionsquionteulieudepuisladernire
sauvegardecomplte.

b.Sauvegardedujournaldestransactions
En complment des sauvegardes compltes, il est toujours possible de mettre en place une politique de
sauvegardedesjournauxdetransactions.Lasauvegardedesjournauxprsentedeuxavantagesmajeurs.
Il est possible de rcuprer la totalit ou une grande partie des transactions valides depuis la dernire
sauvegardecompltedelabase.
Latailledufichierjournalnerisquepasdegrandirdefaonanarchiquecarlorsdechaquesauvegardedujournal,il
estpossiblededemanderdeletronquer.Lerisquedesaturerledisquesuitelextension du fichier journal est
ainsi diminu. La sauvegarde des journaux peut tre ralise par un travail qui est planifi pour une excution
rgulire.

SQL Server gnre des points de contrle synchronisation (CHECKPOINT) automatiques. Le but de ces points de
synchronisation est de stocker sur disque lensemble des transactions valides pour lesquelles les modifications
sontencoreenmmoire.Ainsiencasderestaurationautomatiquesuiteunarrtbrutalduserveurlevolumedes
donnes restaurer sera faible car il ne concernera que les donnes appartenant des transactions valides
depuisledernierpointdesynchronisation.
Le point de synchronisation peut tre dclench ponctuellement par lintermdiaire de linstruction Transact SQL
CHECKPOINT.
CHECKPOINT [valeur][;]

Syntaxe
- 2 - ENI Editions - All rigths reserved
Valeur
PrciselenombredesecondesdontdisposeSQLServerpourterminerlepointdesynchronisation.
Exemple
Danslexemplesuivantlepointdesynchronisationestralisdansles5secondes.

Lepointdesynchronisationpeutgalementtreralisdefaonautomatiqueenfonctiondecertainscritres:
G lerespectdesparamtresfixslaidedeloptionrecoveryinterval,
G le journal est rempli plus de 70 % alors que la base est configure pour tronquer le journal lors de
lexcutiondespointsdesynchronisation,
G lemoteurdebasededonnesestarrt,saufsicetarrtestdemandaveclinstructionSHUTDOWNWITH
NOWAIT.
Loption RECOVERY INTERVAL permet de dfinir au niveau du serveur le nombre maximal de minutes que peut
prendre une restauration automatique de la base depuis le dernier point de synchronisation. La frquence des
pointsdesynchronisationestfixeparSQLServerenfonctiondelactivitdemisejoursurlabase.Pardfaut,la
valeur de ce paramtre est 0, ce qui signifie que SQL Server gre automatiquement la frquence des points de
synchronisation.Ilestrecommanddeconservercettevaleur.Cependant,silespointsdesynchronisationsontmal
adapts par rapport lactivit du serveur, il est possible de modifier la valeur de ce paramtre soit avec la
procduresp_configure,soitdepuislafentredespropritsduserveurdepuisSQLServerManagementStudio.
Commelillustrelcransuivant,lintervalledercuprationestfixsurlapageParamtresdebasededonnes.
- 3 - ENI Editions - All rigths reserved

Si la base de donnes utilise le mode de rcupration simple, le journal nest utilis que lors des rcuprations
automatiques,ilestdoncinutiledeconserverlesinformationssurlestransactionsquiontprisfinavantledernier
pointdesynchronisation.Pourviterquelatailledujournalcroissedefaonillimite,SQLServerliminelapartie
inactivedujournallorsdechaquepointdesynchronisation.
c.Lessauvegardesdiffrentielles
Silessauvegardesdujournalsontdesoprationslourdescarlevolumedesjournauxpeutrapidementdevenirtrs
important, une alternative intressante peut tre mise en place avec les sauvegardes diffrentielles. Les
sauvegardesdiffrentiellesnevontprendreencomptequelesdonnesmodifiesdepuisladerniresauvegarde
complte.
Les sauvegardes diffrentielles sont plus rapides et moins volumineuses que les sauvegardes compltes, et
associesauxsauvegardesdujournaldestransactions,ellespeuventconstituerunesolutiondesauvegardela
foisrapideetperformante.

d.Lessauvegardespargroupedefichiers
Silabasededonnesreprsenteunvolumeimportantdedonnes,lessauvegardescompltesetdiffrentielles
- 4 - ENI Editions - All rigths reserved
peuvent demander un temps dexcution trs long. Pour rduire ce temps, il est possible de sauvegarder les
donnes par groupes de fichier. Une telle opration est bien sr possible si lors de la cration de la base, des
groupesdefichiersonttdfinis.

e.Lescombinaisonspossibles
La bonne solution pour raliser des sauvegardes passe par une combinaison des diffrentes mthodes de
sauvegarde.
Parexemple,ilestpossibledecombinerlessauvegardescompltes,lessauvegardesdujournaldestransactionset
les sauvegardes diffrentielles pour minimiser la fois le volume et le temps des sauvegardes, et la perte des
transactionsvalides.Enmettantenplacecesoprationssousformedetravauxplanifisavecnotificationenfin
dexcution, les oprations de sauvegardes peuvent se drouler automatiquement sans effort de la part de
ladministrateur.

- 5 - ENI Editions - All rigths reserved


Si une base stend sur plusieurs groupes de fichiers (primary, donnes...), il est alors possible de raliser les
sauvegardespargroupesdefichiers.Pourchaquegroupedefichiers,ilfautappliquerunestratgiedesauvegarde
(complte, diffrentielle et journaux de transactions). Il nest pas ncessaire deffectuer simultanment le mme
typedesauvegardesurtouslesgroupesdefichiers.
Dans la combinaison prsente cidessus, les trois types de sauvegarde sont utiliss. La sauvegarde complte
constituelepointdedpartobligatoire.Parlasuite,lesjournauxsontsauvegardsrgulirementafindeperdrele
minimumdedonnes.Pourminimiserlestempsderestauration,unesauvegardediffrentielleesteffectueafindy
conservertouteslesmodificationsquisontintervenuesdepuisladerniresauvegardecomplte.
Touteslesstratgiesdesauvegardecommencenttoujoursparunesauvegardecompltedelabase.

- 6 - ENI Editions - All rigths reserved


Lamiseenuvredessauvegardes
LesoprationsdesauvegardepeuventtremisesenplacesoitpartirdeSQLServerManagementStudio,soitlaide
deprocduresstockesenTransactSQL.Commetoujours,lasolutiongraphiqueproposelafacilitdemiseenuvre
maislescommandesTransactSQLpermettentquantellesdaccderlatotalitdesoptionsproposes.
1.Lesmodesdercupration
Les possibilits offertes au niveau de la sauvegarde et donc de la restauration sont directement lies au mode de
configuration dfini au niveau de chaque base de donnes. Les trois modes de rcupration quil est possible de
configurersont:
G lemodedercuprationsimple:lejournalestutilisuniquementpourgarantirlapersistancedesoprations
apportessurlesdonnes.Ilesttronqulorsdechaquepointdesynchronisation.
G lemodedercuprationcomplet:danscemode,touteslestransactionssontconsignesdanslejournalet
y restent enregistres mme aprs le point de synchronisation. En cas dchec, la perte de donnes est
rduitecarloprationderestaurationestpossiblejusquaupointdedfaillance(sousrservedavoiradopt
labonnepolitiquedesauvegarde).Ilsagitdumodedercuprationpardfautdfiniauniveaudesbasesde
donnesutilisateur.
G le mode de rcupration journalis en bloc : dans ce mode de rcupration avanc, non seulement les
informationsrelativesauxtransactionssontenregistresdanslejournal,maisgalementcertainesoprations
affectantlesdonnes,commelacrationdindex.
Pourconfigurerlemodedercupration,ilestpossibledexcuterlinstructionALTERDATABASE.
ALTER DATABASE nomBaseDeDonnes
SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }
IlestgalementpossibledemodifierlespropritsdelabasedepuisSQLServerManagementStudio.Cederniercas
estillustrcidessouspourconfigurerlabaseGescomenmodedercuprationcomplet.
Syntaxe
- 1 - ENI Editions - All rigths reserved

2.Ladestinationdessauvegardes
Lessauvegardespeuventtredirigessurdiffrentssupports:bande,disquedur.

a.Disquedur
Les sauvegardes sur disques sont ralises lintrieur de fichier du systme dexploitation. La sauvegarde peut
treralisesurundisquelocalousurundisquedistant.PourqueSQLServerpuisseaccderunpartagerseau,
celuicidoittremappunlecteurrseauauniveaudelutilisateurWindowsdanslecontexteduquel,leservice
sexcute.Ilestpossibledutiliserlaprocdurexp_cmdshellpourdfinircelecteurrseau.
- 2 - ENI Editions - All rigths reserved
Ilestprfrablederaliserlessauvegardessurundisqueautrequeceluiquicontientlesfichiersjournaux
etdedonnesdelabaseafindeseprmunirdespannesdisque.
Lorsque la sauvegarde sur fichier est termine, il est prudent de sauvegarder ce fichier sur un support amovible
(bande,disquettedetypezip...)afindestockerlessauvegardesdansunlieudistinctdeceluioestleserveur.
b.Bandes
Lesbandesreprsententunmoyenconomiqueetefficacepourconserverlessauvegardes.Deplusellespossdent
unvolumeimportantdestockage.Ilestfaciledelesconserverendehorsdusitedeproductionpourunemeilleure
qualitdessauvegardes.
LagestiondesbandespourlessauvegardesnestenvisageablequesilelecteurdebandeestlocalauserveurSQL.
Lorsdunesauvegardesurbande,SQLServerenregistreautomatiquement:lenomdelabasededonnes,ladate,
lheureetletypedesauvegarde.
IlexistedesinstructionsTransactSQL:
G UNLOAD:rembobineetjectelabande.
G NOUNLOAD:pasderembobinageetpasdjection.
G BLOCKSIZE:tailledesblocsphysiquesenoctets.
G FORMAT:critunenttedanslesfichiersutiliss.
G SKIP:ignorerlestiquettesdebandeANSI.
G NOSKIP:lirelestiquettesdebandeANSI.
G RESTART:reprendreloprationdesauvegardepartirdupointdinterruption.
G REWIND:rembobineetlibrelabande.
G NOREWIND:SQLconservelabandeaprslafindeloprationdesauvegarde.
LesbandespeuventconteniraussibiendessauvegardesSQLServerquedessauvegardesWindows.
3.Lesprincipauxparamtres
La mise en place des sauvegardes peut tre ralise soit par des procdures stockes, soit par SQL Server
ManagementStudio.Lorsquelestapesconstituantuneoprationdesauvegardesontvalides,ilestpossibledeles
runirpourconstitueruntravailplanifietdoncgrparlAgentSQLServer.
a.Lespermissions
Pour raliser une opration de sauvegarde, lutilisateur doit possder certains droits. Trois rles prdfinis
contiennentlesautorisationssuffisantespoursauvegarderunebasededonnes.Ilestbiensrpossiblededfinir
sespropresrlesetdyaccorderlesautorisationsncessaires.
Lesutilisateursmembresdundesrlessuivantssontcapablesderaliserunesauvegardedebasededonnes:
G rledeserveursysadmin,
G rledebasededonnesdb_owner,
G rledebasededonnesdb_backupoperator.
- 3 - ENI Editions - All rigths reserved
b.Lasauvegardedesbasesdedonnessystme
Labasededonnessystmequicontienttouteslesinformationsrelativesaubonfonctionnementduserveurestla
base Master. Cette base doit tre sauvegarde aprs chaque modification, surtout aprs la cration de base de
donnesutilisateur.EneffetsilabasenestpasrfrencedansMaster,ilestimpossibledyaccder.Ilnefautpas
oubliernonplusquelabaseMastercontientladfinitiondetouteslesconnexions,ainsiquetouteslesrfrences
verslesserveurslis.
Pour reconstruire les bases de donnes systme, il faut passer par le programme dinstallation et choisir
loptionREBUILDDATABASE.
LabaseMSDBcontienttouslestravauxplanifis,leslotsSSISetlesoprationsderplicationainsiqueladfinition
desalertesetdesoprateurs.
LabaseMODELsertdebasededpartpourtouteslesbasesdedonnesutilisateur.
Cesbasesdedonnessystmesontsauvegarderaprschaquemodification.Enpriodedefonctionnement,les
modificationsapportessurcesbasessontnormalementassezraresetilnestdoncpasutiledelessauvegardersi
labasenapasvolu.Ilestainsipossiblederduirelestempsdesauvegarde.
c.Lasauvegardedesbasesdedonnesutilisateur
Cesontlesbasesquisontleplusconcernesparlessauvegardescarellescontiennenttouteslesinformationsde
lentreprise.Selonlimportancedesdonnesquiysontstockesetlenombredemodificationsquiysontapportes
unplandesauvegardevatredploy.Ilesttoutdemmeintressantdenoterquelquestapesquincessitent
unesauvegardetotaledelabase:
G Aprslacrationdelabase.
G Aprs la cration dun index : en effet le journal des transactions mmorise la cration de lindex, mais
parfoislacrationdunindexpeutdemanderplusdetempsquederestaurerlatotalitdelabase.
G Aprs la suppression du contenu du journal des transactions, une sauvegarde totale permet de ne pas
perdrededonnes.
G Aprslexcutiondunecommandenonjournalise.
d.Lesfichiersdesauvegarde
SQL Server ne travaille pas avec la notion de fichiers de sauvegarde, mais plus exactement des units de
sauvegarde.Ilexistedeuxcatgoriesdunitdesauvegarde:
G lesunitsdesauvegardelogique,
G lesunitsdesauvegardephysique.
Ladistinctionentrefichieretunitdesauvegardeprovientdufaitquuneunitdesauvegardepeuttrecompose
deplusieursfichiers.
Uneunitdesauvegardepeutcontenirplusieurssauvegardesduneoudeplusieursbasesdedonnes.
UneunitdesauvegardephysiquecorrespondaunomcompletdufichiersousWindows.Uneunitdesauvegarde
physiquecorrespondleplussouventuneutilisationponctuelledunsupportdesauvegarde.Parexempleavantde
raliseruneoprationsensiblesurlabase,unesauvegardecompltedelabasepeuttreralisedansuneunit
desauvegardephysique.
Lunit physique est rfrence directement dans les options de linstruction BACKUP, ou bien le nom de lunit
physiqueestprcissurlafentreSauvegarderlabasededonnesdeSQLServerManagementStudio.
Lesunitsphysiques
- 4 - ENI Editions - All rigths reserved

EnTransactSQL,lunitphysiqueestrfrencedirectementparlinstructionBACKUP.

Si la dure de validit de la sauvegarde, que ce soit en nombre de jours ou en date de fin de validit, nest pas
spcifie, alors SQL Server utilise la valeur dfinie au niveau du serveur par lintermdiaire du paramtre de
configuration media retention. Cette proprit est une proprit avance et nest donc accessible quaprs
lexcutiondelinstructionshowadvancedoption.
- 5 - ENI Editions - All rigths reserved
Derrire une unit de sauvegarde logique, il se cache une unit physique. Les units de sauvegarde logique
permettentderfrencerlogiquementlesdiffrentssupportsdesauvegardequipeuventtreutilissauniveaude
labase.Parexemple,dansunepolitiquedesauvegardequicontientunesauvegardecompltechaquejouretune
sauvegarde diffrentielle toutes les 4 heures, il est possible de dfinir les units de sauvegarde completLundi,
diffLundi, completMardi, diffMardi... de faon utiliser des units diffrentes chaque jour de la semaine. Les
oprations de sauvegarde utilisent un nom logique, cestdire quil ne leur est pas ncessaire de connatre
lemplacementphysiquedesfichiers.
DepuisSQLServerManagementStudio,ilestpossibledecreruneunitlogiquedesauvegardeenslectionnant
loption Nouvelle unit de sauvegarde depuis le menu contextuel associ au nud Objets serveur Units de
sauvegardesdelexplorateurdobjets.

Danslexemplesuivant,lunitTestestcreensappuyantsurunfichierphysique.

Lesunitslogiques
- 6 - ENI Editions - All rigths reserved
Lafentredespropritsdelunitdesauvegardepermetdeconnatrelecontenuduneunit.
LemmetypedoprationpeuttreralisenTransactSQL.
Cestlaprocduresp_addumpdevicequipermetdedfinirdenouvellesunitslogiques.

Les units logiques permettent une gestion simplifie des sauvegardes au travers de SQL Server Management
Studio.Ellespermettentgalementderutiliserplusefficacementlespacedisquedesanciennessauvegardes,tout
enfacilitantlamiseenplacedeprocduresautomatiquessurlesoprationsdesauvegarde.
4.LinstructionBACKUP
Linstruction BACKUP permet de sauvegarder aussi bien la base de donnes que le journal de transaction. Les
oprationsdesauvegardepeuventtreralisesenTransactSQLparlintermdiairedecetteinstruction,maisilest
possibledepasserparlinterfacegraphiquedeSQLServerManagementStudio.
LcrancidessousillustrecommentdemanderlexcutiondunesauvegardedepuisSQLServerManagementStudio.
- 7 - ENI Editions - All rigths reserved

Lafentredecrationdunenouvellesauvegardepermetdedfinirtouteslesoptionsrelativeslexcutiondecette
sauvegarde.

- 8 - ENI Editions - All rigths reserved


Touteslesoptionsdeloprationdesauvegardesontdisponiblesparlintermdiairedelapageoptions.
Dans le cadre de la rutilisation dun fichier existant, il est possible, soit dajouter la sauvegarde celles dj
contenuesdanslefichier,soitaucontrairedeffacertouteslesdonnesprsentesdanslefichier.
Dans le cas o linstruction BACKUP est utilise directement, la rutilisation dun fichier entrane trois options
possibles:
G INIT:pourremplacerlecontenudunfichierpermanent,conditionqueladatedexpirationdelasauvegarde
soitdpasse(optionEXPIRATE)etquelefichiernesoitpasmembredunjeudesauvegarde.
G NOINIT:pourajouterlasauvegardecellesdjprsentesdanslefichier.
G FORMAT:pourpouvoirrutiliserunfichierquiaparticipunesauvegardesurplusieursfichiers.
a.Sauvegardecomplte
Cestlepointdedpartpourtoutestratgiedesauvegarde.
Demandedesauvegardecomplte
- 9 - ENI Editions - All rigths reserved
SauvegardecompltedeGescomenTransactSQL
b.Sauvegardediffrentielle
Ce type de sauvegarde nest possible que si une sauvegarde complte a t pralablement effectue. Seules les
pagesmodifiesdepuisladerniresauvegardecompltesontsauvegardes.Pourconnatrecespages,SQLServer
utilise le numro de squence du journal (LSN : Log Sequence Number) de la page quil compare avec celui de la
synchronisationdeladerniresauvegardecomplte.
- 10 - ENI Editions - All rigths reserved
SauvegardediffrentielledepuisSQLServerManagementStudio
SauvegardediffrentielleenTransactSQL
c.Sauvegardedujournaldestransactions
Le journal des transactions peut tre sauvegard. Cest linstruction BACKUP LOG qui est utilise. Aprs sa
sauvegarde,lapartieinactivedujournalestautomatiquementtronque.LoptionNO_TRUNCATEpermetdenepas
tronquerlejournal.Cetteoptionestparticulirementutiledanslecadreduneoprationderestauration.
- 11 - ENI Editions - All rigths reserved
SauvegardedujournaldestransactionsdepuisSQLServerManagementStudio
SauvegardedujournaldestransactionsenTransactSQL
d.Sauvegardedefichieroudegroupedefichiers
- 12 - ENI Editions - All rigths reserved
Ce type de sauvegarde est particulirement intressant pour des bases de trs grand volume (VLDB : Very Large
Database) lorsque les temps de sauvegarde sont longs. Si les objets sont crs sur des groupes de fichiers bien
spcialiss, les sauvegardes peuvent tre optimales au niveau du temps. Les politiques de sauvegarde possibles
sontlesmmesquecellesauniveaudelabase.
Demandedesauvegardedunfichieroudungroupedefichiers
e.Lasauvegardesurplusieursfichiers
Toujoursdanslesoucidacclrerlessauvegardes,ilestpossiblederaliserdessauvegardesenutilisantplusieurs
fichierssimultanment.Lescrituressonteffectuesdefaonparallle.Cestlensembledesfichiersquiconstituela
sauvegarde. Bien que cette mthode permette dacclrer considrablement les temps, les sauvegardes sont
nettementplusfragilescarlapertedunseuldesfichiersempchelutilisationdelatotalitdelasauvegarde.Les
fichierssontindiffremmentdesfichierstemporairesoupermanents.
Quelqueslimitesapparaissent:
G touslesfichiersdoiventtresurlemmetypedesupport(bande,disque),
G siunfichierestmembredunjeudesauvegarde,ilnepeutltrequedanslecadredecejeudesauvegarde.
Linstruction BACKUP possde loption MEDIANAME permettant de nommer un jeu de sauvegarde. Il est ainsi plus
aisdelemanipuler.Lenomestlimit128caractres.
- 13 - ENI Editions - All rigths reserved

5.Lamiseenmiroirdessauvegardes
Possderuneseuleversiondufichierdesauvegardepeutsavrerdangereux.Ilestprfrabledenavoirplusieurs.
Ainsi,silorsdelarestaurationdelabase,unfichiersetrouveillisible,ilestpossibledesappuyersurunautrefichier
aveclemmecontenu.Lamiseenmiroirdessauvegardesproposedemettreenplacecemultiplexagedesfichiers.
- 14 - ENI Editions - All rigths reserved
Lamiseenmiroirdesfichiersdesauvegardeestunrelgaindanslafiabilitdesunitsdesauvegarde.Eneffet,une
unit de sauvegarde permet de rpartir la sauvegarde sur plusieurs fichiers. Mais cest lensemble des fichiers qui
constituelasauvegarde.Unproblmesurunseulfichierempchelarestaurationdelabase.
LamiseenmiroirdesfichiersdesauvegardeestmiseenplaceparloptionMIRRORTOdelinstructiondesauvegarde
BACKUP,commelillustrelexemplecidessous:

Lamiseenmiroirestdisponiblequelquesoitlesupportchoisipourlesfichiersdesauvegarde(disqueoubande).
6.Vrifierlintgritdesauvegarde
Si loption TORN_PAGE_DETECTION ou CHECKSUM est active au niveau de la base de donnes, les sauvegardes
ralisespartirdecettebaseintgrentlavalidationdelintgritdespagesdedonnesdanslasauvegarde.Cette
optionestdfinieauniveaudelabase.
- 15 - ENI Editions - All rigths reserved

Lorsdeladfinitiondunesauvegarde,ilestpossiblededemanderlavrificationdelacohrencedecettesauvegarde
depuislapageoptions.
- 16 - ENI Editions - All rigths reserved

IlestgalementpossibledevrifierlacohrencedujeudesauvegardeslaidedelinstructionRESTOREVERIFYONLY.
7.Compresserlessauvegardes
Afinderduirelespaceoccupparlessauvegardes,quecesoitsurdisqueoubiensurbande,SQLServerproposede
compresserlessauvegardes.CettepossibilitnestoffertequeparlditionentreprisedeSQLServer2008,toutefois
toutes les ditions de SQL Server 2008 sont en mesure deffectuer une restauration partir dune sauvegarde
compresse. Le fait de compresser la sauvegarde va entraner une charge de travail plus importante au niveau
serveur.Heureusement,ilestpossiblededfinircetteoptiondecompressionsauvegardeparsauvegarde.Deplus,la
consommationauniveauprocesseurpeuttrelimiteparlegouverneurderessources.
Lors de la cration dune sauvegarde en mode graphique, il sagit dun simple choix dans une liste droulante
slectionnerdepuislapageOptions.
- 17 - ENI Editions - All rigths reserved

Au niveau Transact SQL, il est ncessaire dutiliser les paramtres WITH COMPRESSION ou WITH NO_COMPRESSION pour
activerounonlacompressiondelasauvegarde.

- 18 - ENI Editions - All rigths reserved


Vuedensembleduprocessusderestauration
Larestaurationreprsenteloprationinversedunesauvegarde.Leprocessusderestaurationnepeutpastreutilis
pourraliserdesmigrationsdebasededonnes.
CetteoprationpeuttreralisesoitlaidedescommandesTransactSQL(RESTORE)soitparlintermdiairedela
console dadministration SQL Server Management Studio. Quelle que soit la base restaurer, il est indispensable
dinstallerSQLServerpourremonterlesdonnessurlamachine.
Lesimplefaitdereplacerlesfichiersconstituantlesdonnesetlejournalneconstitueenaucuncasunerestauration,
puisqueSQLServernestpascapabledaccdercesfichierstantquilsnesontpasrfrencsdanslabaseMaster.
Leprocessusderestaurationpeutintervenirdansdeuxcas:
G suiteunedemandeexplicitedelapartdunutilisateur,
G lorsdunredmarrageduserveurquifaitsuiteunarrtbrutal,onparleraalorsderestaurationautomatique.
1.Larestaurationautomatique
Ceprocessusintervientlorsdechaquedmarrageduserveur.Ilsassurequeladernireoprationinscritedansle
journal est un point de synchronisation. Si ce nest pas le cas, alors le journal est relu depuis le dernier point de
synchronisation et toutes les transactions valides sont rejoues tandis que toutes les autres modifications sont
annules.Cetteoprationestncessaireafindegarantirlacohrencedesdonnes.
2.OprationsexcutesautomatiquementparSQLServer
SQLServerraliseautomatiquementuncertainnombredoprationsafindacclrerleprocessusderestaurationet
derduireaumaximumletempsdindisponibilitduserveur.
Lintrtprincipaldececontrledescuritestdeseprmunirdesrestaurationsaccidentelles,quipeuventcraser
unebaseexistantepourremonteruneversionprcdentedelabase.Demme,lecontrledescuritvasassurer
quilpossdetouslesfichiersparticipantunjeudesauvegarde.
Le contrle de scurit interdira galement la restauration de la base si le jeu des fichiers constituant la base est
diffrentdeceluienregistrparlejeudesauvegarde.
Danslecadredunerestaurationpartirdunesauvegardecompltedelabase,SQLServersechargederecrerla
baseetlesfichiersquilacomposent.Lesobjetssontcrsetlesdonnessonttransfres.Leschmadelabasede
donnesestdoncreconstruitautomatiquementdurantlaprocdurederestaurationetnencessitepasdoprations
manuelles.
3.Oprationsprliminaires
Avantderaliserunerestauration,ilestimportantderaliserquelquesoprationsprliminairesafindesassurerdu
bondroulementduprocessus.
a.Lavrificationdessauvegardes
Cetteoprationdevraitnormalementintervenirlafindechaquesauvegarde.Ici,lebutestderetrouverlaoules
sauvegardesquivonttrencessairespourrestaurerlabaseenrduisantaumaximumlestempsderestauration
etlevolumedesdonnesperdues.
Il existe quatre instructions, qui sont dtaills ciaprs mais il est galement possible de passer par SQL Server
ManagementStudio.
Lecontrledescurit
Reconstructiondelabasededonnesetdesfichiersassocis
RESTOREHEADERONLY
- 1 - ENI Editions - All rigths reserved
Permetdeconnatrelesinformationscontenuesdanslenttedunfichieroudunjeudesauvegarde:
G lenometladescriptiondufichieroudujeudesauvegarde,
G lesupportutilis(disqueoubande),
G ladateetlheuredelasauvegarde,
G lamthodedesauvegardeutilise(complte,diffrentielle,journalpargroupedefichiersoucomplet),
G latailledelasauvegarde,
G lenumrosquentieldelasauvegardedansunechanedefichiersdesauvegarde.
Cetteinstructionpermetdobtenirdesrenseignementssurlesfichiersdedonnesetjournauxconstituantlabase
dedonnesutilisantcefichierdesauvegarde.Lesinformationsretournessont:
G lesnomslogiqueetphysiquedesfichiersdedonnesetdesfichiersjournaux,
G letypedechaquefichier(donnesoujournal),
G legroupedefichiersauquellefichierappartient,
G lataillemaximaledechaquefichierexprimeenMgaOctet,
G latailledujeudesauvegardeexprimeenMgaOctet.
Permetdobtenirquelquesinformationssurlefichierdesauvegarde.
Cette instruction, qui ne vrifie pas la cohrence des sauvegardes, nest utilise que dans le cadre de jeu de
sauvegardepoursassurerquetouslesfichiersquiconstituentcejeusontprsents.
Cesquatreinstructionspermettentdevisualiserlecontenudunjeudesauvegardeetfournissentdoncbeaucoup
dinformationsurlastructurelabasededonnesrestaurer.SeulslesutilisateursdisposantduprivilgeCREATE
DATABASEsontenmesuredexcutercesinstructions.CeniveaudeprivilgeestncessairepartirdeSQLServer
2008.
b.Lestchesspcifiques
Avantdelanceruneoprationderestaurationsurunebasededonnes,ilfautsassurer,silabaseexistedjque
personnenetravailledessus,puisdansundeuximetemps,sauvegarderlapartiedujournaldestransactionspour
laquelleonnepossdepasdesauvegardeafindeminimiserlapertededonnes.
Ilestpossibleeninterrogeantlavuesystmesys.dm_exec_sessionsdtablirlalistedesutilisateursactuellement
connects la base. Lexemple cidessous permet de connatre la connexion, le nom du programme et le poste
utilispourtablirlesconnexionsutilisateur(is_user_process=1).
RESTOREFILELISTONLY
RESTORELABELONLY
RESTOREVERIFYONLY
Sassurerquaucunutilisateurnetravaillesurlabase
- 2 - ENI Editions - All rigths reserved

Aprsstreassurquilneresteplusdutilisateursconnectslabase,ilestncessairedegarantirlefaitquede
nouvellesconnexionsnepeuventpastretabliesenplaantlabaseenmodemonoutilisateur.
Cestunadministrateurdelabasededonnesquipeutenrestreindrelaccs,soitunseulutilisateur,soitaux
seulsutilisateursquipossdentleprivilgedouvrirunesessionlorsquelabasesetrouveenmoderestreint.
ChangementdumodedaccsenTransactSQL
LinstructionALTERDATABASEGESCOMSETMULTI_USERpermetderevenirenmodedaccsnormal.

- 3 - ENI Editions - All rigths reserved


ChangementdumodedaccsdepuisSQLServerManagementStudio
Lorsquecetteoprationestpossible,elleestfaiteparlintermdiaireduneinstructionBACKUPLOG.
Sauvegardedujournaldestransactionsencours
Sauvegardedujournaldestransactions
- 4 - ENI Editions - All rigths reserved
- 5 - ENI Editions - All rigths reserved
Restaurationdessauvegardes
Suivantlasauvegardeeffectue,lamthodederestaurationvatrelgrementdiffrente.
1.LinstructionRESTORE
EnmodeTransactSQL,cestlinstructionRESTOREquipermetderemonterunesauvegardefaiteparSQLServer.
RESTORE DATABASE {nom_base |@var_nom_base }
[FROM unite_de_sauvegarde [,...n ] ]
[WITH
[{CHECKSUM | NO_CHECKSUM }]
[[,] { CONTINUE_AFTER_ERROR | STOP_ON_ERROR } ]
[[,] FILE = numro_fichier]
[[,] KEEP_REPLICATION]
[[,] MEDIANAME = nom_support]
[[,] MEDIAPASSWORD = mot_de_passe_media]
[[,] MOVE nom_logique TO nom_physique] [,...n]
[[,] PASSWORD = mot_de_passe]
[[,] PARCIAL]
[[,] {RECOVERY|NORECOVERY|STANDBY = nom_fichier_annulation}]
[[,] REPLACE]
[[,] RESTRICTED_USER]
[[,] {REWIND|NOREWIND}]
[[,] STATS [ = pourcentage]]
[[,] {STOPAT = date_heure |
STOPATMARK = {marque|lsn:numro_lsn }
[ AFTER date_heure] |
STOPBEFOREMARK = { marque | lsn:numro_lsn }
[ AFTER date_heure]}]
[[,] {UNLOAD|NOUNLOAD}]
]
[;]

LacommandeRESTOREdoittoujourstrelancedepuislabaseMaster.

Syntaxe
- 1 - ENI Editions - All rigths reserved
Pour restaurer le journal des transactions, il est ncessaire dutiliser linstruction RESTORE LOG qui possde un
paramtragesimilaireceluideRESTOREDATABASE.
Sur une base de donnes endommage, la restauration permet de retrouver un ensemble cohrent de donnes.
Ltapederestaurationsechargederecrerautomatiquementlesfichiersetlesobjetsdelabase,sanspourautant
quilsoitncessairedesupprimerlabasededonnesauparavant.
2.LesoptionsdelinstructionRESTORE
IlexistedenombreusesoptionssurlinstructionRESTORE,seulescertainessontdtaillesici.
Toutdabordlorsquelarestaurationutiliseplusieurssauvegardes(unecompltepuisunediffrentielleetenfincelle
desjournauxdetransactions)ilestimportantqueSQLServernerendepaslabaseaccessibleauxutilisateurstant
queladernirerestaurationnapasteffectue.Pourcela,linstructionRESTOREproposelesoptionsRECOVERYet
NORECOVERY.
Cest loption pas dfaut qui est utilise par SQL Server. Avec cette option, la fin de la restauration, SQL Server
passeenrevuelejournaldetransactionsafindannulertouteslestransactionsnonvalidesdepuisledernierpoint
desynchronisationetdeconfirmertouteslestransactionsvalides.Unefoiscesoprationstermines,labaseest
accessibleparlesutilisateurs.
Cetteoptiondoittrespcifiepourtouteslestapesdelarestaurationsaufladernire.SQLServernetouchepas
aujournaldestransactionsetlabasededonnesnepeutpastreutilise.
Cetteoptionestutiliseuniquementlorsquelefichierdesauvegardecontientplusieurssauvegardes.Ellepermetde
prciserlenumrodelasauvegardequelonsouhaiterestaurer.
Pardfautlesfichiersdelabasededonnessontrestaursaummeendroitqueceluidfinilorsdelasauvegarde.
Silonsouhaiteprciserunchemindiffrentilfaututilisercetteoption.
Cetteoptionpermetderestaurerunebaseencrasantlabaseexistantpralablementsurleserveur.Cetteoption
estdsactivepardfaut.
Cetteoption,disponibleuniquementsilabaseestconfigureenmodederestaurationcomplte,permetderejouer
les transactions enregistres dans le journal jusqu une date et heure spcifies au format varchar, char,
smalldatetimeoudatetime.
Cesoptionssontdisponiblesuniquementsilabaseestconfigureenmodederestaurationcomplet.Ellespermettent
derestaurerlestransactionsjusquunetransactionmarqueoubienunnumrodenregistrement(LogSequence
Number).
3.Larestaurationdesdiffrentstypesdesauvegarde
Touteslespolitiquesderestaurationcommencentncessairementparlarcuprationdunesauvegardecompltede
labase.Unefoiscepointdedparttabli,ilestpossibledecumulerlesdiffrentesrestaurations.
a.partirdunesauvegardecomplte
La restauration partir dune base complte est une opration simple raliser et rapide. Sil est possible de
raliserunesauvegardecompltetouslesjours,ilfaudralefairecarcestcettemthodequipermetdobtenirles
tempsdindisponibilitduserveurlespluscourts.
RECOVERY
NORECOVERY
FILE
MOVE...TO
REPLACE
STOPAT
STOPATMARK,STOPBEFOREMARK
- 2 - ENI Editions - All rigths reserved
SQLServerreplacetouslesfichiersdedonnesetlesfichiersassocisleursemplacementsdorigine.Demme,
lensembleduschmadelabaseestrcuprautomatiquement.
Une telle opration de restauration est ralise lorsque le disque physique contenant les fichiers de la base de
donnes est endommag, ou bien lorsquune partie des fichiers est corrompue ou perdue. La restauration dune
sauvegarde complte est galement envisageable lorsque lon souhaite restaurer les donnes sur un deuxime
serveur(ceserveurpeutdevenirunserveurdesecoursparexemple).
RestaurationdepuisSQLServerManagementStudio
- 3 - ENI Editions - All rigths reserved
Restaurationsansmiseenlignedelabase
Les options de rcupration RECOVERY ou NORECOVERY devront tre prcises surtout si dautres restaurations
suivent.
b.partirdunesauvegardediffrentielle
Cetypederestaurationnepeutintervenirquesuitecelledunesauvegardecomplte.
Siplusieurssauvegardesdiffrentiellesexistentpourlammebasededonnes,ilsuffitderestaurerlaplusrcente
carunesauvegardediffrentiellecontienttouteslesmodificationsintervenuessurlesdonnesdepuisladernire
sauvegardecomplte.
Larestaurationramnelabasededonnesltatdanslequelelletaitlorsquelasauvegardeateffectue.
La restauration dune telle sauvegarde est bien sr beaucoup plus rapide que celle de tous les journaux de
transactions.
Restaurationdunesauvegardediffrentielle
- 4 - ENI Editions - All rigths reserved
Restaurationdiffrentiellepartirduneunitdesauvegarde.Onutiliseicilapremiresauvegarderalisedans
cetteunit.
Encoreunefois,silasauvegardediffrentielleestladerniredontondisposepourlabasededonnes,ilfaudra
excuter lordre RESTORE avec RECOVERY. Dans tous les autres cas (on dispose de sauvegardes du journal des
transactions),ilfaututiliserloptionNORECOVERYpourtremmederestaurerlabaseaumieux.
c.partirdunesauvegardedujournaldestransactions
Lejournaldestransactionsestledernierlmentrestaurer.Ilvapermettredelimiterlapertedesinformations
modifiesdanslabasedepuisladerniresauvegardecomplteoudiffrentielle.
Il peut ventuellement y avoir plusieurs fichiers journaux restaurer, dans ce cas ils doivent ltre dans lordre
chronologique.
TouslesordresderestaurationdesjournauxdoiventcomprendreloptionNORECOVERY,lexceptiondecelledu
dernierjournaloloptionserasoitomise,soitRECOVERY.
- 5 - ENI Editions - All rigths reserved
DemandederestaurationdujournaldepuisSQLServerManagementStudio

Lors de la restauration des journaux, il est possible de rejouer les transactions jusqu une date et heure bien
prcises. Pour bnficier de cette fonctionnalit il faut utiliser loption STOPAT en association avec loption
RECOVERY.
Cettefonctionnalitpermetderestaurerunebaseensarrtantuninstantbienprcisetdoncdenepasrejouer
destransactionsdsastreuses.
- 6 - ENI Editions - All rigths reserved
DepuisSQLServerManagementStudio,ilestpossiblelorsdelarestaurationdunjournaldespcifierlalimitedans
letempsdepuislafentreLimitederestaurationdansletemps.

d.partirdunesauvegardedefichieroudungroupedefichiers
Les oprations mener et leur ordre sont les mmes que dans le cadre dune restauration totale de la base de
donnes. Linstruction RESTORE se complte aprs le nom de la base avec le nom du groupe de fichiers qui est
concernparlarestauration.
4.Restaurationdesbasesdedonnessystmeendommages
Suivantlagravitdesvnementquisontsurvenus,plusieurspossibilitssontenvisageables.
a.Restaurationpartirdunesauvegarde
Sileserveurpeuttredmarr,ilestpossiblederestaurerlesbasesdedonnessystmelaidedunecommande
RESTOREDATABASE.
- 7 - ENI Editions - All rigths reserved
b.Reconstructiondebasesdedonnessystme
Lareconstructiondesbasesdedonnessystmeestpossibleenlanantdenouveauleprocessusdinstallationde
linstanceSQLServer.
Lareconstructiondesbasessytmecraselesbasesmaster,msdbetmodelexistantes.

Lorsquelesbasessystmesontreconstruites,ilestalorspossiblederedmarrerlesservicesetdeprocderla
restaurationdepuisunesauvegardevalide.
5.Restaurationenligne
LapossibilitderestaurationenlignenestdisponiblequedanslditionEntreprisedeSQLServer.
La restauration en ligne, cestdireeffectueruneprocdurederestaurationdelabasealorsquedesutilisateurs
continuent de travailler sur la base, nest possible que si le groupe de fichiers primaire est intact, cestdire que
loprationderestaurationvaconcernerdautresgroupesdefichiers.
Commetoutprocessusderestauration,ilsedrouleendeuxtemps:
G restaurerlesinformationspartirdeladerniresauvegardecomplte,
G rejouerlestransactionsprsentesdanslejournaletrestaurerledernierjournalavecloptionRECOVERY.
Leprocessusderestaurationenlignepeutengendrerdestransactionsditesdiffres,cetypedetransactionpeut
apparatrelorsquecertainesinformationsnesontpasaccessibleslorsdudmarragedelabase.Latransactionne
peutdoncpartrerejouedefaonautomatique.LemoteurSQLServeressayeradexcutercettetransaction,qui
manipulelesdonnesaffectesparloprationderestauration,lorsqueleprocessusderestaurationserafinalis.
Cest,enfait,suiteundmarragedelabasededonnessanserreurdentre/sortiequelestransactionsdiffres
peuventtrelimines.
Danslecasounfichierestendommagsurunebase,ilestpossiblederestaurercefichieruniquement,puisilfaut
sauvegarder le journal des transactions courant. Et enfin, restaurer les diffrents journaux de transaction pour
mettreniveaulesinformationscontenuesdanslefichier.
Ce type de processus va tre illustr sur la base GESCOM en simulant la perte dun fichier nappartenant pas au
groupePRIMARY.
Lapremiretapeconsisterestaurerlefichierfichier1partirdeladerniresauvegardecomplte.
Lunitdesauvegardedoitsetrouverdanslerpertoirepardfautdesfichiersdesauvegarde,sinonloprationde
restaurationenlignenestpaspossible.
Miseenplacedunerestaurationenligne
- 8 - ENI Editions - All rigths reserved

Ensuite,ilestncessairedesauvegarderlejournaldestransactionsencoursafindeneperdreaucunetransaction.

Enfin,ilestpossiblederestaurerlesjournauxetrendrelabasepleinementfonctionnelle.
- 9 - ENI Editions - All rigths reserved

- 10 - ENI Editions - All rigths reserved


Serveurdesecours
Unserveurdesecoursprsenteundoubleavantage.Toutdabord,iloffreunesolutiondedpannageextrmement
rapide en cas de dfaillance du serveur principal tout en minimisant la perte des donnes. Ensuite, le serveur de
secours tant aliment par les sauvegardes ralises sur le serveur principal, il permet donc de valider toutes les
sauvegardes,cequiestunpointimportant.Encontrepartie,leserveurdesecoursreprsenteuninvestissementnon
ngligeable,carcettemachinenepeutpasservirdanslecadredelexploitationsilonsouhaiteobtenirunesolutionde
remplacementtrsrapidemettreenuvre.
1.Installationduserveurdesecours
Le serveur de secours est un deuxime serveur SQL qui contient une image miroir du serveur de production. Le
serveurdesecourspeuttreutilisenlectureseulepourrduirelachargedetravailduserveurdeproduction,ou
bien pour remplacer le serveur de production lorsque ce dernier est dfectueux. Le serveur de secours peut tre
galementutilispourexcuterdesinstructionsDBCC,cequipermetdevrifierlacohrencedelabasesansajouter
unechargedetravailsupplmentairesurleserveurdeproduction.
Initialement,ilfautrestaurerunesauvegardedetouteslesbasesduserveurdeproduction.Silesrpertoiressont
diffrents,ilfaututiliserloptionMOVETOdelacommandeRESTOREpourchangerlechemindesfichiersdelabase.
TouteslesrestaurationsdoiventcomporterloptionNORECOVERYouSTANDBY.Cettedernireoptionestdtaillepar
lasuite.
Leserveurdesecoursseramisjourparlintermdiairedessauvegardesdujournaldestransactions.
2.Utilisationduserveurdesecoursenlectureseule
Etantdonnqueleserveurdesecoursestuneimageduserveurdeproduction,ilestpossibledutiliserceserveur
pour les clients qui ralisent uniquement des requtes de lecture (SELECT). Cela va permettre de dcharger le
serveurdeproductiondelagestiondesrequtesdinterrogations,quipeuttretrslourde,notammentdanslecas
danalyse.
Danscecas,ilestncessairequelinstanceSQLServerdesecoursdisposedunelicencedexploitation.linverse,si
aucunutilisateurnestconnectsurleserveurdesecours,linstanceSQLServerestcouverteaveclutilisationdela
licenceduserveurprincipal.
Leproblmequiseposeestdeceluidelarestauration.EneffetloptionNORECOVERY,quipermetderestaurerles
journaux, nautorise personne utiliser la base. Pour viter ce problme, il existe loption STANDBY qui autorise
uniquement les oprations de lecture sur la base de donnes. Cette option ncessite lutilisation dun fichier qui
serviraannulerlesmodificationsapportesparlarestaurationdautresjournauxdetransactions.
3.Miseenplacedunserveurdesecours
Lepointdedpartdelamiseenplacedunserveurdesecoursest,commecelaestsouventlecas,unesauvegarde
compltedelabasedorigine.
Danslexempleciaprs,lasauvegardedelabaseGescomestfaitedestinationduneunitphysique.
- 1 - ENI Editions - All rigths reserved

Dans un deuxime temps, cette sauvegarde doit tre restaure sur le serveur de secours. tant donn que les
emplacementsdesfichiersphysiquesnesontpasncessairementlesmmes,loptionMOVETOestutiliselorsdu
processusderestauration.
Danslexemplesuivant,cestuneautreinstanceSQLServerquisertdeserveurdesecours.

Afin de simplifier les lments de syntaxe, la base Gescom initiale ne contient pas de catalogue de texte
intgral.
Ensuite,lessauvegardesdesjournauxdelabaseprincipalesontrestauressurleserveurdesecoursavecloption
STANDBYouNORECOVERY.
Ce processus denvoi des fichiers journaux peut tre automatis avec SQL Server 2008 en configurant le serveur
principalpourquilplaceunesauvegardedujournaldansundossieraccessibleparleserveurdesecours.
DepuisSQLServerManagementStudio,laconfigurationdelenvoiautomatiquedesjournauxseffectuedelafaon
suivante.
- 2 - ENI Editions - All rigths reserved

Ilfautalorsdfinirlabasededonnesentantquebasededonnesprimaire,puisdfinirlecheminlocaletrseau
daccslasauvegardedujournal.Ilestensuitepossiblededfinirleoulesserveursquilacopiedujournalva
tre envoye ainsi que le mode de restauration souhait du journal. Les oprations de sauvegarde et de
restaurationsontplanifies.
- 3 - ENI Editions - All rigths reserved

Touteslesoprationsrelativeslenvoidesjournauxpeuventtresuiviesparunebasededonnestmoinquiva
consignertouslesvnementsrelatifscetteopration.
Laprocduredenvoiautomatiquedesjournauxestmiseenplacepourdesbasesdontlastructurephysiquereste
raisonnableentermedecomplexit(quelquesfichiers).
Bienvidemment,ceprocessussappuiesurdestravauxplanifis,etSQLServerAgentdoittreactif.
4.Miseenrouteduserveurdesecours
Sileserveurdeproductiontombeenpanne,leserveurdesecoursdoitprendrelerelaisauplusvite.Unedmarche
rigoureuseestindispensableafindeperdreleminimumdedonnes.
a.Connexion
Sauvegardedujournaldetransactions
Si lopration est possible, le journal des transactions doit tre sauvegard afin que les transactions valides
depuisladerniresauvegardenesoientpasperdues.
Dconnexion
Afindvitertoutconflit,leserveurdeproductiondoittrephysiquementdconnectdurseau.
Nomduserveur
Serveurdeproduction
Serveurdesecours
- 4 - ENI Editions - All rigths reserved
Afindepasperturberlesclientsquiutilisentleserveur,lechangementdenompermetunerelativetransparence
visvisdesapplications.
Restaurationdujournal
Le journal qui a t sauvegard sur le serveur de production doit tre restaur avec loption RECOVERY afin de
rendrelabaseaccessibleenlectureetencriture.
b.Restaurationduserveurdeproduction
Lorsqueleproblmeestrsolusurleserveurdeproduction,ildoitreprendresonrleinitial.
G Raliserunesauvegardedelabasededonnesetdetouslesjournauxdetransactions.
G Dconnecterphysiquementleserveurdurseau.
G Restaurer les sauvegardes de la base de donnes et des journaux de transactions, puis reconnecter le
serveuraurseau.
c.RtablissementdelordinateurSQLServerdesecours
Le serveur de secours doit changer de nom avant sa connexion au rseau. Pour quil devienne une image du
serveur de production, le plus simple est de raliser une sauvegarde complte de la base de donnes et de la
restaureravecloptionSTANDBYouNORECOVERY.
Serveurdesecours
Serveurdeproduction
- 5 - ENI Editions - All rigths reserved
AuditdelactivitdeSQLServer
SQL Server dispose de nombreux outils de suivi des performances du serveur et de lactivit des utilisateurs. Cette
surveillanceestimportantecarellepermetdedtecterlesgouletsdtranglementetdamliorerauplusvitelestemps
derponseduserveur.
Avantdelancerlasurveillance,ilconvientdedfinirclairement:
G lesobjectifsrecherchs.
G loutillemieuxappropri.LesplussouplessontSQLProfileretlAnalyseurdePerformancesWindows.
G silfautsurveillerSQLServerousonenvironnementpouratteindrelesobjectifs.
SQL Server 2008, dans son dition entreprise, propose loutil SQL Server Audit afin dtre en mesure de dfinir son
propreprocessusdaudit.
Cet audit peut tre dfini soit au niveau de linstance SQL Server, soit au niveau dune ou de plusieurs bases de
donnes. Laudit va pouvoir suivre des vnements et enregistrer la survenue de ces vnements dans le journal
daudit. Ce journal daudit peut tre un fichier, le journal des vnements de scurit ou bien le journal des
vnements dapplications Windows. Quelle que soit la cible de laudit, le fichier doit tre sauvegard de faon
rgulireafindegarantirlespacencessaireaujournalpourenregistrerlesvnements.
LcrituredanslejournaldescuritnestpossiblequesilecontextedescuritdanslequelsexcuteleserviceSQL
Serverdisposedeceprivilge.Cestlecaspardfautdescomptessystmelocal,servicelocaletservicerseau.Pour
lesautrescomptes,ilestncessairedappliquerlargleGnrerdesauditsdescurit.
Pourpouvoirraliser,oumodifier,unaudit,ilfauttremembredurlesysadmin.Ilestgalementpossibledauditer
chaquemodificationdelaudit.
Il est noter que la mise en place dun audit peut avoir un effet ngatif sur les performances, car lactivation des
compteurs daudit consomme des ressources sur le serveur et il y a donc moins de ressources disponibles pour
rpondreauxdemandesdesutilisateurs.
1.Dfinirunauditauniveauserveur
LamiseenplacedecetypetypedauditpassetoutdabordparlacrationetlaconfigurationdunobjetdetypeSQL
ServerAudit.Cetobjetvapouvoirtreutilisparlasuitepourdfinirquelaspcificationdecetauditestdeniveau
serveur.
La cration dun objet de type SQL Server Audit est possible depuis le nud Scurit Audit de lexplorateur
dobjets.IlestbiensrncessairedeslectionnerloptionNouvelAuditdepuislemenucontextuelassociaunud.
Labotededialoguededfinitiondunnouvelauditestalorsaffiche.
- 1 - ENI Editions - All rigths reserved

Cest ce niveau que la destination de laudit est spcifie ainsi que le comportement de laudit sur linstance sil
vientmanquerdelespacedanslejournal.
Il est alors possible de dfinir une spcification daudit de niveau serveur par lintermdiaire du choix Nouvelle
Spcification de laudit du serveur depuis le menu contextuel du nud Scurit Spcifications daudit du
serveur.
- 2 - ENI Editions - All rigths reserved

Ladfinitiondelaspcificationpermetlaslectiondesvnementsaudits,ainsiquedeprciserlauditutilis.
2.Dfinirunauditauniveaubasededonnes
Auniveaudelabasededonnes,commeauniveauserveur,ladfinitiondunnouvelauditreposesurlesobjetsSQL
Server Audit ainsi que les spcifications. Si les objets SQL Server Audit sont dfinis au niveau du serveur, les
spcificationssontquantellesdfiniesauniveaudelabasededonnes.Labotededialoguequipermetdecrer
unenouvellespcificationdauditdebasededonnesestaccessibledepuislenudScuritSpcificationdaudit
debasededonnes.

Aprs avoir associ la spcification un objet SQL Server Audit, il est possible de slectionner un ou plusieurs
- 3 - ENI Editions - All rigths reserved
vnementsauditer.
3.Afficherlejournaldaudit
Les journaux daudit sont accessibles depuis le nud Scurit Audit de lexplorateur dobjets. Il est ensuite
ncessaire de slectionner laudit dont on souhaite visualiser le journal puis de slectionner loption Afficher les
journauxdauditdepuislemenucontextuelassoci.

Lavisionneuseestalorsexcuteetilestainsipossibledeparcourirlejournaldaudit.
4.Auditc2
Legnrateurdeprofilsstockelensembledesdonnesauditesdansdesfichiersjournaux.Lataillemaximaledun
fichier journal est de 200 Mo. Lorsque cette limite est atteinte, le fichier est ferm et un nouveau fichier est
automatiquementcretouvert.LorsquilnyaplusdespacelibresurledisquelinstanceSQLServerestarrte.Il
faudra donc par la suite librer de lespace sur le disque o les fichiers daudit sont stocks avant de redmarrer
linstanceSQLServer.
Il est possible dans SQL Server dutiliserloptionMode audit c2pourauditerlestentativesensuccsouenchec
dutilisationdordresDMLoubiendobjetsdelabase.Lanalysedesinformationsainsicollectespermetdemettreen
placeunestratgiedescuritempchanttouteslesviolations.Cemodedauditestgalementunbonmoyenpour
connatrelactivitdelabase.
- 4 - ENI Editions - All rigths reserved
Les informations sont stockes dans des fichiers de 200 Mo maximum lintrieur des rpertoires mssql
($nom_instance)\data. Si laudit reste en activit un certain temps, les informations seront rparties
automatiquementdansplusieursfichiers(crationdunnouveaufichierdsquelefichiercourantatteintles200Mo).
Lauditdeniveauc2resteactivtantquelonnedemandepassadsactivationoubientantquelonnarrtepas
SQLServer.Seulslesmembresdurlesysadminpossdentlepouvoirdactiver/dsactiverlauditdeniveauc2.
Lamiseenplacedelauditdeniveauc2estraliseaveclaprocduresp_configure.LacommandeRECONFIGURE
permetdeprendreencomptelesmodificationsdeconfigurationdefaonimmdiatesansavoirarrteretdmarrer
leservice.
Lamiseenplacedelauditniveauc2
Il est galement possible dactiver cette option au niveau de la page Scurit de la fentre des proprits du
serveur,encochantlacaseActiverlesuividauditC2.
- 5 - ENI Editions - All rigths reserved

La mise en place dun audit de niveau c2 peut dgrader les performances du serveur tant que laudit est
activ.
Silerpertoiredestockagedesfichiersdauditestplein,alorsSQLServersarrteautomatiquement.Silauditnest
pasconfigurendmarrageautomatique,ilestalorspossiblederedmarrerSQLServer.Danslecascontraire,ilest
ncessaire de librer de la place sur le disque dur afin que laudit puisse enregistrer ses informations ds le
dmarrage de SQL Server. Il est toutefois possible de dmarrer SQL Server en ligne de commande avec loption f
pourempcherledmarrageautomatiquedelaudit.
SilauditempchelebondmarragedelinstanceSQLServer(vnementMSG_AUDIT_FORCED_SHUTDOWNinscrit
danslejournal)alorsilestncessairededmarrerlinstanceenmodemonoutilisateuravecloptionm.Eneffet,en
mode monoutilisateur, laudit ne peut pas bloquer le dmarrage, toutefois lvnement
MSG_AUDIT_SHUTDOWN_BYPASSserainscritdanslejournal.
- 6 - ENI Editions - All rigths reserved
Gnrateurdeprofils
Le gnrateur de profils propos par SQL Server est un outil qui permet de capturer les instructions soumises au
serveur.Cettecaptureestenregistredansunfichierappelfichierdetrace.CestloutilSQLServerProfilerquipermet
dedfinirlesoptionsdecettecaptureetdenregistrerlefichierdetrace.Ilestgalementpossibledecapturerunflux
dvnementsdansunfichierdetracelaidedeprocduresstockes.
SQLServerProfilerpermetgalementdanalyserunetracecapture.
LacapturedufluxdetravailsoumisSQLServerpeuttremiseenplacepourplusieursraisons:
G Analyserlachargedetravailduserveur,
G Validerlastructurephysiquedelabaseparrapportlachargedetravail,
G Identifierlesrequteslongueset/oubloquantes,
G Servirdebaseunauditdescurit.
Lorsdelamiseenplacedunecapture,ilestncessairedeprciserleslmentsquidoiventtreenregistrsdansle
fichier de trace : sur quels critres sontils slectionns ? Quelles informations fautil conserver...? Pour dfinir
prcismentlesoptionsdecapture,SQLServerProfilerutilisesesproprestermes:
G Evnement:ilsagitduneactionproduitesurlinstanceSQLServer.Cetteactioncorresponduneinstruction
Transact SQL simple comme INSERT, UPDATE, DELETE par exemple. Pour chaque vnement, une ligne
dinformationestproduiteetenregistredanslatrace.
G Classedvnements:ilsagitdunregroupementlogiquedvnementsquipeuventtreenregistrsdansla
trace.Parexemple,laclasseAudit:Loginregroupetouslesvnementsrelatifslouverturedesessionsur
linstanceSQLServer.
G Catgoriedvnements:reprsentelorganisationlogiquedesclassesdvnementstellequelleestmiseen
placedansSQLServerProfiler.
G Colonnededonnes:reprsenteunattributdelaclassedvnementsprsentdanslatrace.
G Modle:correspondlaconfigurationpardfautdunecapture.Lemodleregroupeleslmentssurveiller
etletypedesinformationsenregistrer.
G Trace : reprsente lensemble des informations captures. Une trace peut tre dfinie localement ou bien
partirdunmodle.
G Filtre : lors de la dfinition dun modle ou bien dune trace, il est possible de filtrer les informations lies
lvnementquiserontgardes,afindviterquelefichierdetracenegrossissetropvite.
- 1 - ENI Editions - All rigths reserved
Legnrateurdeprofils
1.Capturerlactivitcouranteduserveur
Pourcapturerlactivit,ilfautcrerunenouvelletrace.Latracedoittretotalementdfinieavantdecommencerla
capture.
Pourcrerunenouvelletrace,ilestpossibledesappuyersurunmodledetracedjdfini.Lesdiffrentsmodles
detracesont:
G Standard:ilsagitdumodlepardfaut.
G Sp_counts:tracelecomportementdesprocduresstockes.
G TSQL:poursuivrelesinstructionsTransactSQLenvoyesauserveur.
G TSQL_Duration:enregistreenplusletempsdexcutiondechaqueinstruction.
G TSQL_Grouped:permetdesuivrelesinstructionsTransactSQLetdelesregrouperpardemandeur.
G TSQL_Replay:capturedesinformationsdtaillessurlesinstructionsTransactSQL.
G TSQL_SPs:capturelesinformationsdtaillessurlesprocduresstockesexcutes.
G Tuning : capture les lments en vue dune analyse ultrieure par lAssistant de paramtrage de base de
donnes.
Chaquetraceestparfaitementidentifieparsonnom.
Lcran suivant illustre la fentre qui apparat lorsque la cration dune nouvelle trace est effectue par Fichier
Nouvelletrace.
- 2 - ENI Editions - All rigths reserved

Ilfautenplusprciserlemodedestockagedelatraceetsataillemaximaleainsiquuneventuelleheuredarrt.Il
nestpasncessairededfiniruneheurededbutcarlacapturecommenceaussittaprsavoirvalidladfinition
delatrace.
Avant de commencer dfinir des traces, il est possible de dfinir des valeurs par dfaut par lintermdiaire des
optionsdugnrateurduprofilaccessiblesdepuislemenuOutils.

La seconde tape consiste slectionner les vnements tracer et pour chaque vnement quelles sont les
informations conserver. Ce paramtrage est dfini depuis longlet Slection des vnements de la bote de
dialoguedesPropritsdelatrace.
- 3 - ENI Editions - All rigths reserved

Dans cet cran, les vnements sont regroups par classe et, lors du survol avec le curseur de la souris des
diffrents vnements, une brve description est affiche dans la zone basse de la fentre. Le mme type de
descriptionestralislorsdusurvoldesdiffrentescolonnes.
Par dfaut, seuls les vnements prsents dans la trace sont affichs, mais il est possible de connatre les autres
vnements et den ajouter dautresenactivantlacasecocher Afficher tous les vnements. La case cocher
Afficher toutes les colonnes permet dobtenir le mme type de comportement mais au niveau des colonnes de
donnes.
Pour dfinir un comportement commun pour tous les vnements au niveau des colonnes, il suffit de dfinir un
nouveaufiltreencliquantsurleboutonFiltresdecolonnes.

lafindesacration,latraceestdmarreautomatiquement.
- 4 - ENI Editions - All rigths reserved

Ilestpossibledarrteretdedmarrerunetracedepuislabarredoutils.
IlestpossiblededfinirunetraceenTransactSQL,ilfautalorssappuyersurquatreprocduresstockesdistinctes
ettravailleren4tapesquisont:
I Crerlatraceavecsp_trace_create.
I Ajouterlesvnementsparlintermdiairedesp_trace_setevents.
I ventuellementdfinirunfiltreenexcutantsp_trace_setfilter.
I Utilisersp_trace_setstatuspourdmarrer,arrteretfermerlatrace.
LexemplesuivantillustreladfinitiondunetraceenTransactSQL.

DfinitiondunetraceenTransactSQL
- 5 - ENI Editions - All rigths reserved
2.Utiliserlesdonnescaptures
Aprsavoircapturlesvnements,ilfautpossderunpuissantoutildanalyseafindenretirertoutelinformation
ncessaire.
La relecture des traces est possible dans le gnrateur de profils. Il possde un modle de relecture multithread
permettantdesimulerlesconnexionsetpermetlutilisateurdereproduirelactivitcapturedanslatrace.
Cette relecture de trace prend en charge le dbogage laide de point de rupture et dexcution ce qui facilite
particulirementlanalysedescriptslongs.
Le chargement dune capture seffectue par le menu Fichier Ouvrir. Il faut ensuite slectionner le support qui
contientlacapture,puisindiquerlefichieroulatableenquestion.
Demandedouverturedunetrace
- 6 - ENI Editions - All rigths reserved
Choixdelatrace
Avantdenraliserlanalyse,ilfautdemanderlarelecturedelacapture.
Lecturedunetrace
- 7 - ENI Editions - All rigths reserved
Analyseurdeperformances(MoniteurSystme)
Il sagit de lanalyseur de performances de Windows auquel de nombreux compteurs ont t ajouts lors de
linstallationdeSQLServer.
Enplusdesnombreuxcompteursfournisenstandard,ilestpossiblededfinirdixcompteursutilisateurafindepouvoir
adapterlutilisationdelanalyseurdeperformanceslademande.

LesprincipauxobjetsspcifiquesSQLServersont:
G Agentderplication:surveillerlesagentsderplicationencoursdexcution.
G Basededonnes:surveillerlutilisationdelabasededonnes,commelaquantitdespacejournaldisponible
oulenombredetransactionsactives.
G Captureinstantane:surveillerlacaptureinstantanedesrplications.
G Distributionderplication:surveillerlenombredecommandesetdetransactionsluespartirdelabasede
donnesdistribution.
G Fusionderplication:surveillerlexcutiondechaquefusionquidplacelesmodificationsdedonnes,soitde
labonnverslditeur,soitlinverse.
G Gestionnaire de cache : permet de surveiller la faon dont SQL Server utilise la mmoire pour stocker des
objets(procduresstockes...).
G Gestionnaire de tampon : permet de surveiller la faon dont SQL Server utilise la mmoire pour stocker des
pagesdedonnes.
G Gestionnairemmoire:surveillerlutilisationglobaledelammoire.
G Lecteurdujournaldestransactions:surveillerlagentdelecturedujournaldestransactions.
- 1 - ENI Editions - All rigths reserved
G Mthodesdaccs:surveillerlaccsauxpageslogiques.
G Rservlutilisateur:ladfinitiondescompteurs(10aumaximum)estlachargedelutilisateur.
G Statistiquesgnrales:surveillerlactivitgnraleduserveur.
G StatistiquesSQL:surveillerlacompilationetletypederequtestransmisesSQLServer.
G Unitdesauvegarde:surveillerlesunitsdesauvegardeutilisesdanslesoprationsdesauvegardeetde
restauration.
G Verrous:unnombreminimaldeverrousfavoriselaconcurrencedaccs,cequiamliorelesperformances.
G Verrousinternes:cetobjetpermetdeconnatreletempsmoyendobtentiondunverrousuruneressource,
ainsiquelenombrededemandesdeverrousnepouvanttresatisfaitesimmdiatement.
Les procdures stockes rserves la dfinition des compteurs utilisateur sont sp_user_counter1
sp_user_counter10.Lesrequtesdfiniesdanscesprocduresstockesdoiventtreaussisimplesquepossiblepour
nepasalourdirlachargedetravailexcuteparleserveur.Ilestpossiblededemanderlexcutiondecesprocdures
nimporteo(dclencheur,autresprocdures...).
LescompteurspersonnalisssontdisponiblesdanslobjetUserSettabledelanalyseurdeperformances.
Pour modifier la valeur du premier compteur de performances, il faut excuter la procdure sp_user_counter1 qui
accepteenparamtreunetunseulentier.
Exemple:
Danslexemplesuivant,uneprocdurestockeestcrepoursurveillerlenombredelignesdanslatabledesclients.
Dans le cadre dun serveur de production, il est plus judicieux de placer lappel cette procdure dans les
dclencheursdetypeINSERTetDELETEassociscettetable.Ainsi,laprocdurenestexcutequelorsque
lenombredelignesprsentesdanslatablevolue.
DfinitiondelaprocdureMonCompteur
Silecompteurdoittremisjourdefaoncontinue,ilfautintgrersonexcutiondansuneboucleinfinie.
Danslemoniteursystmeonsurveillelepremiercompteurutilisateur.
- 2 - ENI Editions - All rigths reserved
volutionducompteur
SQLServerintroduitenplusdescompteursdeperformancespoursuivrelabonneapplicationdesnouvellessyntaxes
de commandes et viter de continuer utiliser des fonctionnalits ou lments de syntaxe marqus comme tant
maintenuspourdesraisonsdecompatibilitantrieuremaistantamensdisparatre.IlsagitdescompteursSQL
Server:DeprecatedFeaturesouFonctionnalitsdsapprouves.
- 3 - ENI Editions - All rigths reserved
Optimisationdelammoireetdelunitcentrale
Pardfaut,SQLServergreautomatiquementetdynamiquementlaquantitdemmoirequiluiestncessaire.Cette
option doit tre conserve dans la majorit des cas. Il est pourtant possible de figer les quantits de mmoire
minimum,maximumetlatailledujeudetravail.
Lanalyseur de performances va permettre de surveiller lutilisation de la mmoire afin de sassurer que la
consommation reste dans des limites raisonnables et quaucun processus, y compris SQL Server, ne manque de
mmoire.CescritrescorrespondentauxcompteursPage/setOctetsdisponiblesdelobjetMmoire.
Le compteur Page/s indique le nombre de pages mmoire qui sont extraites ou bien crites sur le disque pour des
raisonsdedfautdepagination.Unevaleurlevepeutindiquerunmanquedemmoirevive.
LecompteurMmoire:Dfautdepages/spermetdesassurerquelactivitdudisquenestpaslieauprocessusde
paginationmmoire.
Surveillancedelammoiredusystme
PourconnatrelaquantitdemmoireutiliseparSQLServer,ilfautsurveillerlescompteurssuivantsdanslanalyseur
deperformances:
G Processus\Plagedetravail.
G SQL Server : Gestionnaire de tampons\Taux daccs au cache des tampons. Indique un pourcentage
reprsentantlenombredefoisolespagesdedonnesdemandessonttrouvesdanslecache.
G SQLServer:Gestionnairedetampons\nombretotaldepages.NombretotaldepagespourSQLServer.
G SQLServer:Gestionnairedetampons\pageslibres.NombretotaldepagesSQLServernonutilises.
G SQL Server : Gestionnaire de mmoire\mmoire totale du serveur (Ko). Cette valeur doit tre en
correspondanceaveclevolumedemmoireattribuSQLServer.
Pour les compteurs Taux daccs au cache des tampons de lobjet Gestionnaire des tampons ainsi que Mmoire
totaleduserveurdelobjetGestionnairedemmoire,lesvaleurssignificativessont:
- 1 - ENI Editions - All rigths reserved
G Taux de prsence dans le cache : 90 % est un taux normal en cours dutilisation, qui assure peu de lecture
physiquedesdonnes.
G Mmoire totale du serveur : si la mmoire utilise par SQL Server reprsente une partie importante de la
mmoireduposte,ilsepeutquelepostemanquedemmoire.

LatailledelammoireduserveurpeuttrefixedefaonstatiquesoitparlintermdiairedeSQLServerManagement
Studiosoitparlaprocdurestockesp_configureavecloptionsetworkingsetsize.
- 2 - ENI Editions - All rigths reserved
ConfigurationdelammoiredeSQLServer
- 3 - ENI Editions - All rigths reserved
Limitationdesressourcesutilisesparunerequte
Lecotdunerequtecorrespondladureestime(ensecondes)pourlexcution.Loptionquerygouvernorcost
limitpermetdespcifierunelimitesuprieurepourlexcutiondunerequte.
Par dfaut cette option reoit la valeur 0, ce qui autorise lexcution de toutes les requtes. Si une valeur positive,
diffrentede0estindique,alorsladministrateurderequtenautorisepaslexcutiondetouteslesrequtesdontle
cotestimdexcutiondpassecettevaleur.
Cette limitation est positionnable sur le serveur par lintermdiaire de sp_configure ou bien sur chaque base de
donnesavecSETQUERY_GOUVERNOR_COST_LIMIT.

LeparamtrageavecloptionSETnestvalablequepourlapriodeactuelledactivitdelinstance.Ceparamtrene
sera pas conserv au prochain dmarrage de linstance. Pour conserver cette valeur, il est ncessaire de configurer
loptionparsp_configureoubienparlespropritsduserveur.
- 1 - ENI Editions - All rigths reserved

LinstructionRECONFIGUREpermetdeprendreencomptelesnouvellesvaleursdesoptionsdeconfiguration
sansavoirredmarrerleserveur.
DepuisSQLServerManagementStudio,cetteoptionestparamtrablepartirdelafentredespropritsduserveur,
sur la page Connexions en activant la case cocher Utiliser lAdministrateur de requtes pour empcher les
requteslonguesetenprcisantlecotmaximumautorisdanslazonedesaisieassocie.
- 2 - ENI Editions - All rigths reserved

- 3 - ENI Editions - All rigths reserved


Leplandexcutiondunerequte
Lesrequtes,procduresetdclencheurssontanalyssparSQLServeretloptimiseurderequtevastockerleplan
dexcutiondanslammoiredeSQLServer.Plusexactementdanslazonemmoireintitulemmoirecacheduplan.Il
estpossibledanalysercetteversioncompiledelarequtepourmieuxcomprendreleschoixfaitsparloptimiseurde
requteetragirpourpermettreuneexcutionplusrapidedelarequte.Cequipeutsetraduireparunenouvelle
crituredelarequte,lajoutdindex,lamisejourdesstatistiques...
Loptimisationdesrequtesnestpasleseulpointprendreencomptepourrsoudrelesproblmesdeperformances,
maiscenestpasnonplusunlmentngliger.Eneffet,sefocalisersurdesproblmesmmoireslorsquelarequte
estmalcritepeutmasquermomentanmentlesmauvaistempsderponse,maisleproblmeseproduiradenouveau
lorsquelevolumededonnesaugmentera.
Ilnestpaspossibledafficherleplandexcutiondundclencheurouduneprocdurestocke.

PourvisualiserleplandexcutionsousSQLServerManagementStudio,ilexistedeuxoptions:
G Afficherleplandexcutionestim,lescriptTransactSQLnestpasexcut,leplandexcutionaffichestissu
delanalysedelarequteparloptimiseurderequte.
G Inclureleplandexcutionrel,lescriptTransactSQLestexcutetleplandexcutionutilisestaffich.

Lalectureduplandexcutionnestpossiblequepourlesutilisateursquidisposentdesprivilgessuffisants.
Dansuncascommedanslautre,ilfautcliquersurlongletPlandexcutionpourvisualiserleplandexcution.
- 1 - ENI Editions - All rigths reserved

Pourtrecapabledelirecorrectementleplandexcution,ilestncessairedeconnatreleslmentssuivants:
G Lalecturesefaitdegauchedroite.
G Lecotdechaquerequteestexprimsousformedepourcentageparrapportaucottotaldulotanalys.
G Licneprsentesurchaquenudsymboliseloprateurphysiqueet/oulogiqueutilis.
G UnplandexcutionestaffichpourchaquerequtedulotTransactSQLanalys.
Enfaisantglisserlecurseurdelasourissurlesnuds,desinformationsrelativesloprationralisesontaffiches
sousformedinfobulles.Cesinfosbullespeuventcontenirlesinformationssuivantes:
G Oprationphysique:afficheloprateurphysiqueutilis.
G Oprationlogique:prsenteloprateurlogiqueassociloprateurphysique.
G EstimatedRowSize:estimationdelatailleenoctetsdelaligneproduiteparloprateur.
G EstimatedI/OCost:estimationdescotsdelecture/criture.
G EstimatedCPUCost:estimationducotprocesseurpourcetteopration.
G EstimatedOperatorCost:estimationducotpourloptimiseurderequtes.
G EstimatedSubtreeCost:sommedescotsdesoprationsprcdentsetdecetteopration.
G EstimatedNumberofRows:disponibleuniquementlorsquelarequteestexcute,cetlmentpermetde
connatrelenombredelignestraites.
- 2 - ENI Editions - All rigths reserved
IlestpossibledafficherleplandexcutiondefaontextuelleavecSETSHOWPLAN_TEXToubiensousforme
defichierXMLavecSETSHOWPLAN_XML.
Certainesrequtes,pluscomplexesvontavoirdestempsderponsepluslongsquelesautresrequtescarlevolume
dedonnesmanipulesestplusimportantetlestraitementssontnombreux.Pouroptimiserdetellesrequtes,ilest
ncessairedexplorerlesvoiessuivantes:
G Ajouterdelammoiredefaontresrquetouteslesdonnessetrouventenmmoirelorsdelexcution
delarequte.Lobjectifrecherchestdavoirlemaximumdelecturelogiqueavectrspeudelecturephysique.
G Sileserveurdisposedeplusieursprocesseurs,lesystmedoitautoriserSQLServerlesutiliserafindobtenir
uneparalllisationdelarequte.
G crire la requte sous une nouvelle forme en limitant au maximum lutilisation dlments qui rendent
lexcution plus complexe comme les curseurs, lexcution dune requte paramtre dans une boucle,
lutilisation de plusieurs alias pour une mme colonne, lutilisation de fonctions qui ne sont pas absolument
ncessaires.
G Modifierlavaleurdeloptiondeconfigurationquerygouvernordefaonlimiterletempsdexcutionaccord
chaquerequte.
- 3 - ENI Editions - All rigths reserved
Leplandemaintenance
Pourlesoprationsclassiquesdeladministrateurcommedessauvegardesrguliresdelabasededonnesetdes
journaux de transaction, ou bien les oprations de maintenance des index, il est possible de dfinir des plans de
maintenance.Lexcutiondecesdiffrentestchesvatreplanifielorsdeladfinitionduplandemaintenance.
Les plans de maintenance peuvent tre dfinis laide dun assistant mais la cration manuelle dun plan de
maintenanceoffreuneplusgranderichessedeparamtrage.Cestdonccettedernirepossibilitquilfautprivilgier.
Les plans de maintenance sont dfinis sous forme de package SSIS et cest bien entendu SQL Server Agent qui se
chargedexcuterletravailquilancecepackage.Lesplansdemaintenancenepeuventtredfinisquesurdesbases
quiproposentunniveaudecompatibilitsuprieurougal80.
Lutilitaireenlignedecommandesqlmaintestmaintenupourdesraisonsdecompatibilitantrieuremaisilest
recommanddenepaslutiliser.
Ladfinitiondunnouveauplandemaintenancepeutaismenttredfinieenfaisantappellassistantdedfinition
dun nouveau plan. Cet assistant peut tre excut depuis le menu contextuel associ au nud Gestion Plan de
maintenancedepuislexplorateurdobjets.

Le rsultat de lexcutiondesdiffrentestchesrelativesauplandemaintenancepeuttrecritdansunfichierau
format texte ou bien directement dans la base msdb. Dans ce dernier cas, ce sont les tables sysmaintplan_log et
sysmaintplan_logdetailquistockentledtailduplandemaintenance.Lesinformationspeuventtrefacilementlues
enconsultantlhistoriquedepuisSQLServerManagementStudio.
- 1 - ENI Editions - All rigths reserved
AssistantParamtrageMoteurdebasededonnes
Lassistantparamtragedumoteurdebasededonnesapourobjectifdeproposerlastructurephysiqueoptimumen
confrontantlorganisationactuelleavecunechargedetravail.
Ilestpossiblededemanderlexcutiondecetoutilenlignedecommandeavecdta.exe.

LachargedetravailcorrespondsoitunetracecaptureaupralableparlegnrateurdeprofildeSQLServer,soit
unscriptTransactSQL.
partir de cette charge de travail, loutil va ventuellement proposer une rorganisation du schma logique en
ajoutantdesindexsupplmentaires,enpartitionnantcertainestablesoubienencoreenproposantlacrationdevues
indexes.Lespropositionsfaitesparlassistantontpourobjectifderduirelecotestimparloptimiseurderequte
pourlachargedetravailanalyse.
Lorsdelanalysedunechargedetravail,ilestncessairedeparamtrertroislments:
G nommerdefaonuniquelanalyse,
G rfrencerversunfichierouunetablecontenantunechargedetravail,
G slectionnerlaoulesbasesquivonttreconcernesparcetteanalyse.
1.Initialisationdelassistantdeparamtrage
Toutes les informations relatives au paramtrage vont tre stockes dans la base msdb. Pour cela, lors de la
premire excution de lassistant de paramtrage, une structure va tre dfinie dans msdb. Seul un utilisateur
disposantdesdroitsdadministrateurdusystme(sysdamin)peutmenerbiencettetche.Parlasuite,lutilisateur
devraaumoinstremembredurledb_ownerpouranalyseretmettreenplacelespropositionssurunebasede
donnes.
Lassistantdeparamtrageutiliselaprocdurestocketenduexp_msver.
LassistantpeuttrelancdirectementdepuislemenuMicrosoftSQLServer2008Outilsdeperformanceoubien
depuisSQLServerManagementparOutilsAssistantparamtragedumoteurdebasededonnes.
Maislafaonlaplussimpledelancerloutilestsansdoutedeslectionnerunerequteoubienunlotdinstructions
danslditeurderequtedeSQLServerManagementStudioetdeslectionnerAnalyserlarequtedanslAssistant
Paramtragedebasededonnesdepuislemenucontextuel.
- 1 - ENI Editions - All rigths reserved

Il est galement possible de demander lexcution de cet assistant depuis le gnrateur de profil par Outils
AssistantParamtragedebasededonnes.Cettepossibilitestpratiquepouranalyserunetracecapturecette
intention(modleTuning).

2.Analysedunechargedetravail
Lors du lancement de loutil,ilestncessairedidentifierlasessionenprcisantsonnom,loriginedelachargede
travailetsurquellebaselanalysedoitporter.
- 2 - ENI Editions - All rigths reserved

Longlet Options de paramtrage permet de slectionner plus finement le type de structure qui va faire partie de
lanalyseetlamargedemanuvrelaisseloutilpourbtirsarponse.Pourlancerlanalyse,ilfautcliquersurle
boutonDmarrer lanalysedelabarredoutils.Unnouvelongletestalorsaffichafindesuivrelaprogressionde
lanalyse.
la fin de lanalyse, les onglets Recommandation et Rapports sont ajouts. Il est possible dappliquer les
recommandations de faon immdiate ou planifie par lintermdiaire du menu Actions Appliquer les
recommandations.

Depuis longlet Rapports, il est possible dafficher un certain nombre de rapports pour connatre la pertinence des
choixactuelsetdeceuxrecommands.
- 3 - ENI Editions - All rigths reserved

- 4 - ENI Editions - All rigths reserved


LesdclencheursDDL
SQL Server propose les dclencheurs de type DDL. Ces dclencheurs (trigger) de base de donnes fonctionnent
comme les dclencheurs associs une action insert, update ou delete qui peut se produire sur une table donne.
Lexcution du dclencheur DDL est associe lexcution dune instruction CREATE, ALTER, DROP, GRANT, REVOKE,
DENYetUPDATESTATITICS.
Les dclencheurs DDL sont excuts aprs linstruction DDL laquelle ils sont associs. Les dclencheurs DDL
permettent de suivre les modifications apportes au schma ou bien dinterdire certaines modifications qui peuvent
treapportesauschma.
Pour interdire une instruction DDL dans le dclencheur associ, il faut annuler la transaction grce linstruction
ROLLBACK.
Lors de la dfinition dun dclencheur DDL, il faut prciser linstruction DDL qui permet son excution, ainsi que sa
porte,cestdirelendroitilvatreactif.Laportepeutcorrespondreunebasededonnesparticulireoubien
correspondrelatotalitdelinstance.
PourpermettredesuivreaumieuxlesdiffrentesexcutionsdesinstructionsDDL,ilestpossibledutiliserlafonction
EVENTDATA dans les dclencheurs DDL. Cette fonction permet de capturer les informations relatives lexcutiondu
dclencheur.CettefonctionretourneunfluxXML.IlestpossibledextrairedesinformationsdecefluxXML,enutilisant
unerequteXQuery.
IlnestpaspossiblededfinirdesdclencheursDDLdetypeinsteadof.

Les informations relatives lexcution en cours du dclencheur DDL sont disponibles au travers de EVENTDATA. Il
nexistepasdetableinsertedoudeleted.
LesdclencheursdetypeDDLpeuventtredfinissurunebasededonnesoubiensurleserveur.Danslecasdes
dclencheursdfinissurunebase,ladfinitiondudclencheureststockedanscettemmebase.Ladfinitiondes
dclencheursdeniveauserveurestenregistredanslabasemaster.Danstouslescas,ilestpossibledobtenirdes
informationsconcernantcesdclencheurseninterrogeantlavuesys.server_triggers.
CREATE TRIGGER nomDclencheur
ON { ALL SERVER | DATABASE }
[ WITH ENCRYPTION, [EXECUTE AS clause] ]
{ FOR | AFTER } {typeInstruction|groupeInstruction }[ ,...]
AS instructions;
nomDclencheur
Correspondaunomdudclencheur.Chaquedclencheurestparfaitementidentifiparsonnom.
ALL SERVER
Aveccetteoption,ledclencheurestactifsurtoutelinstanceSQLServerdanslaquelleilestdfini.
DATABASE
Aveccetteoption,ledclencheurestdclenchuniquementsurlabasesurlaquelleilestdfini.
typeInstruction
Type de linstruction qui va dclencher lexcution du dclencheur. Le dclencheur est toujours excut aprs
linstructionquiledclenche.LetypedinstructioncorrespondgnralementlinstructionDDLdorigine.Parexemple,
pourassocierundclencheurlinstructionquipermetdecrerunetable(CREATETABLE),letypedelinstructionest
CREATE_TABLE.
groupeInstruction
Groupedinstructionsquiprovoquelexcutiondudclencheur.
instructions
Syntaxe
- 1 - ENI Editions - All rigths reserved
Reprsente lensemble des instructions Transact SQL qui vont tre excutes. Cest la logique applicative du
dclencheur.
Plus gnralement, la porte du dclencheur base ou bien instance va dcider des lments ou des groupes
dlmentsquipeuventprovoquerlexcutiondudclencheur.Letableauavecladescriptiondesgroupesdinstructions
estprsentenannexe.
Exemple
Les crans suivants illustrent la mise en place dun dclencheur DDL qui permet de suivre les connexions des
utilisateurs.
La premire tape consiste dfinir la table qui va contenir toutes les informations de suivi des vnements. Cette
tablecorrespondaujournaldesactionsDDLexcutes.

LasecondetapeconsistecrerundclencheurDDLquiseraactifauniveaudelinstanceetquivatredclench
parlesoprationsdecration,modificationousuppressiondetablesurlabasededonnesGESCOM.Lesinformations
sontconsignesdanslatablejournal.

Aprsquelquestempsdefonctionnement,ilestpossibledinterrogerlatablejournalpoursuivrelactivitdelabase.
- 2 - ENI Editions - All rigths reserved

- 3 - ENI Editions - All rigths reserved


Lesdclencheursdeconnexion
LesdclencheursdeconnexionpermettentdexcuteruneouplusieursinstructionsTransactSQLlorsdelaconnexion
dunutilisateursurleserveur.CetypededclencheurpeuttreconsidrcommeundclencheurDDLparticulier.Ce
dclencheursexcuteaprslavalidationdelauthentificationutilisateursurleserveuretavantqueleserveurdonnela
mainlutilisateur.Laconnexionutilisateurestdonctablieetouvertelorsqueledclencheursexcute.Etantdonn
quelexcutionalieuavantquelutilisateurnobtiennelamainsurlaconsole,lesmessagesquipeuventtreproduits
(erreur,print)sontredirigsdirectementverslejournaldeserreursdeSQLServer.
Lesdclencheursdeconnexionpeuventtreutilisspoursuivreoulimiterlesconnexionsutilisateur.Cestparexemple
ceniveau,quilserapossibledelimiterlenombredesessionsouvertessimultanmentparunmmeutilisateur.Cest
galementceniveauquilestpossibledenregistrerdansunetableladateetlheuredtablissementdelaconnexion.
Danstouslescas,lafonctionEVENTDATApermetdobtenirtouteslesinformationsrelativeslaconnexionquivientde
stablir.
Il est possible de dfinir plusieurs dclencheurs de connexion. Dans ce cas, la procdure stockesp_settriggerorder
permetdedfinirqueldclencheursexcuteraenpremieretendernier.Ilnestpaspossibledefixerlordredexcution
desautresdclencheurs.
SQL Server met en place une transaction implicite avant dexcuter le premier dclencheur de connexion. Cette
transactionestvalideaprslexcutiondudernierdclencheur.Toutefoissiaucoursdelexcutiondesdclencheurs
deconnexion,latransactionestacheveoubienuneerreuravecunegravitsuprieureougale20estleve,alors
ltablissementdelaconnexionutilisateurestimpossible.
CREATE TRIGGER nomDclencheur
ON ALL SERVER [WITH EXECUTE AS contexteExecution]
FOR LOGON
AS
BEGIN
...
END;
Exemple:
Ledclencheursuivantpermetdelimiter3lenombredeconnexionsouvertesparunlutilisateurnommPierre.
Attention toutefois ne pas dfinir ce dclencheur afin quil sexcute pour tous les utilisateurs, y compris les
administrateurs. En effet pour ces derniers, la limite des 3 connexions est trop juste car la ralisation de certaines tches
administrativesenmodegraphiqueestplusconfortableavecunnombresuprieurdeconnexions.

Lesdclencheurspeuventtresupprimslaide de linstructionDROP TRIGGER nom Dclencheur ON {DATABASE | ALL


SERVER}[;]
Syntaxe
- 1 - ENI Editions - All rigths reserved
LePowerShell
Ceshell,introduitavecWindowsServer2008,permetdedfinirdepuissantsscriptsdadministration.Cetteversionde
PowerShellvientsenrichirdoutilsspcifiqueschaqueapplicationserveurditeparMicrosoft.
Ceshellpermetdexcuterdesinstructionsdefaondirecteoubiensousformedescript.
SQLServer2008nchappepaslargleetapportesonPowerShellquiintgretouteslesbibliothquesncessaires
pourdfinirdesscriptsdadministrationefficaces,fiablesetcondenss.LesapportsdeSQLServer2008auPowerShell
sont:
G Lintgration dun fournisseur daccs, ceci afin de pouvoir naviguer dans larborescence du serveur aussi
simplement quil est possible de le faire dans un systme de fichiers, cestdire principalement avec les
instructions cdet dir. Ce fournisseur permet de se connecter des instances SQL Server 2008 ou bien SQL
Server 2005 condition que le Service Pack 2 soit install. Il est galement possible de se connecter une
instanceSQLServer2000munieduServicePack4.BienentendulesinstructionsspcifiquesSQLServer2008
nesontpasapplicablessurlesversionsantrieures.
G Lajout dapplets de commande afin de pouvoir intgrer et excuter une action SQL, notamment des scripts
Transact SQL. Toutes ces applets reposent sur la technologie SMO, aussi seules les instructions prises en
chargeparSMOpeuventltreauniveauduPowerShell.Cesappletsdecommandesontgalementdnommes
commandlet (CmdLet). Comme pour les autres instructions du PowerShell, elles ne sont pas sensibles la
casse.Toutefoislerespectdelacassepermetdefaciliterlalecturedesinstructions.
SiSQLServer2008estinstallsuruneplateformeWindowsServer2003,ilestpossibledetlchargeretde
procderlinstallationmanuelleduPowerShell1.0.
La console PowerShell est lance par loutilsqlps. Il est alors possible dexcuter directement les scripts PowerShell.
Lapplet GetHelp permet, comme toujours, de trouver toutes les informations relatives aux applets de commandes.
PourSQLServer,ilestpossibledemettreenavantdeuxappletsInvokeSqlcmdetInvokePolicyEvaluation.
Par exemple, pour obtenir de laide sur le fournisseur SQL Server, il est ncessaire dexcuter linstruction GetHelp
SQLServeretplusgnralementpourobtenirdelaidesurlensembledesfournisseurs:Get-Help-category provider.
Surlesappletsdecommande,ilestpossibledutiliserlescommutateursFull,-Paramaters *etExamplespourafficher
diffrentsniveauxdaide.
Exemple

LorsdudmarragedesqlpsunmessageconcernantlaversiondeSQLServerestaffich.Cestroislignesde
messagespeuventtresupprimesenexcutantsqlps-nologo.
Lutilitaire sqlps excute la console PowerShell en mode restreint par dfaut, ce qui interdit lexcution de scripts
enregistrs sous la forme de fichiers. Il est possible de modifier ce niveau dexcution en faisant appel lapplet de
commandeSetExecutionPolicy.
- 1 - ENI Editions - All rigths reserved
Enfin, il est possible de dmarrer la console PowerShell directement depuis SQL Server Management Studio en
slectionnant loption Dmarrer PowerShell depuis le menu contextuel dun nud quelconque de lexplorateur
dobjets.

1.LefournisseurPowerShellSQLServer
AveclefournisseurPowerShellSQLServer,ilestpossibledenaviguerlintrieur de la hirarchie du serveur aussi
simplementquesurunsystmedefichiers.
Pourpermettrecela,lefournisseurPowerShellSQLServerproposelelecteurSQLSERVER:.Celecteurestcomparable
aulecteurC:quelonrencontrehabituellementsurlesystmedefichiers.
LelecteurSQLSERVERestcomposdesquatredossierssuivants:
SQL
Reprsente les objets de base de donnes. La navigation dans ces objets sera toujours de la forme :
SQLSERVER:SQL\nomServer\nomInstance,cequidonneparexemplepourtravaillersurlabasegescomprsentesur
linstancepardfautduposteARAVIS:SQLSERVER:SQL\ARAVIS\DEFAULT\Databases\Gescom
SQLPolicy
Pourgrerladministrationparlesrgles.
SQLRegistration
Pourlinscriptiondesserveursetlagestiondesgroupes.
DataCollection
Pourreprsenterlesobjetsducollecteurdedonnes,naviguerdanscettearborescencelesappletsdecommandes
PowerShelloubienleursaliasvonttremiscontribution.Lesprincipalesappletsdecommandesont:
GetLocation
Afficherlenudactuel.
SetLocation
- 2 - ENI Editions - All rigths reserved
Sepositionnersurlenuddontlecheminestpassenparamtre.
GetChildItem
Parcourirlesenfantsdunudcourant.Lesobjetssystmenesontpasrpertorispardfaut,saufsiloptionforce
estactive.
GetItem
Obtenirlesinformationsrelativesaunudcourant.
RenameItem
Renommerlenudcourant.
RemoveItem
Supprimerlenudcourant.
Exemple

IlestainsipossibledefairedenombreusesoprationsdadministrationencombinantlesressourcesSQLServeravec
leslmentsdesyntaxePowerShell.Parexemple,ensepositionnantsurlenudviews,quireprsentelacollection
desvues,ilestpossibledeparcourirchaquevueafindegnrerlescriptdecration.
foreach ($Item in Get-ChildItem){
$Item.Script()|Out-File - FilePath c:\test\creerVues.sql -append}

Lesactionssouslaformedescriptsvontfrquemmentavoirlammebasecible,aussiafindelimiterlalongueuretla
complexit de lappletdecommande SetLocation,ilestpossiblededfinirdeslecteursquiaccdentdirectement
- 3 - ENI Editions - All rigths reserved
une partie larborescence du serveur. Par exemple, il est possible de dfinir le lecteur Gescom comme tant laccs
directlabaseGescom.
Exemple:
New-PSDrive -Name GESCOM -Root SQLSERVER:\SQL\ARAVIS\DEFAULT\Databases\ Gescom

Pourfaciliterlasaisiedeschemins,souventlongs,ilestpossibledutiliserlatouche[Tab]afindecomplterdefaon
automatiquelafinducheminenslectionnantlabonneoptiondanslalisteproposeparPowerShell.Surcertaines
basesquicomportentdenombreuxobjets,lalisteproposepeuttrelongue,aussiilestpossiblederduirelaliste
despropositionsenconfigurantlesvariablessuivantes:
$SqlServerMaximumTabCompletion,$SqlServerMaximumChildItems
et$SqlServerIncludeSystemObjects
Toutes ces connexions linstance SQL Server utilisent par dfaut la scurit Windows intgre. Cela nest pas
obligatoireetilesttoutfaitpossibledetravailleraveclascuritSQLServerpourseconnecteruneinstanceSQL
Server. La fonction dont le script est prsent cidessous permet de dfinir un lecteur qui se connecte par
lintermdiaireduneauthentificationSQLServer(connexionu)linstancepardfautdelordinateurlocal(ARAVIS).Le
motdepasseestdemandlorsdeltablissementdulecteur.
Function lecteurSQL{
Param([string]$nomLecteur,[string]$cnx="u",[string]
$chemin="SQLServer:\SQL\ARAVIS\DEFAULT")
$motDePasse= read-host -AsSecureString -Prompt "MotDePasse"
$credit=new-object System.Management.Automation.PSCredential
argumentlist $cnx,$motDePasse
New-PSDrive $nomLecteur -PSProvider SqlServer -Root $chemin
-Credential $credit -Scope 1
}
lecteurSQL SecuriteSQL
2.Lesappletsdecommandes
Les applets de commandes PowerShell sont toutes formes dun verbe et dun nom. Cette construction permet de
trouversimplementetrapidementlabonneapplet.
En complment des applets fournies en standard par le PowerShell, SQL Server napporte que peu dapplet de
commandes qui lui sont spcifiques. Il est toutefois possible de mettre en avant InvokeSqlcmd, Invoke
PolicyEvalution,EncodeSqlName,DecodeSqlName.
a.EncodeSqlName,DecodeSqlName
Ces deux applets ont pour objectif de traduire les caractres spciaux qui peuvent tre prsents dans certains
identifiants dobjets SQL Server (bien que cela ne soit pas recommand) et qui ne sont pas pris en charge par le
PowerShelloubienmalinterprts.
Exemple
- 4 - ENI Editions - All rigths reserved
Lachanepasseenparamtrelapplet EncodeSqlNameretournestocks%3AdepotsetcellepassedecodeSqlName
retournestock:depot.

b.InvokePolicyEvaluation
Cetteappletdecommandeapourobjectifpremierdesassurerquelaciblepasseenparamtreestbienconforme
auxrglesdadministrationdfinies.Enplusdecettevrification,ilestpossibledefaireappelcettemmeapplet
pourconfigurerlesdiffrentesoptionsdesobjetsciblesafinquilsrespectentlesrglesdadministrationdfinies.
c.InvokeSqlcmd
CetteappletdecommandequipermetdexcuterdesscriptsTransactSQLoubienXQueryfaitappelsqlcmdpour
lesexcuter.Cetteappletpossdesespropresparamtresquinesontpasceuxdesqlcmd.Ilestpossibledefixer
lesparamtresdesqlcmdenlespassantsouslaformedechanedecaractreslappletdecommande.
Exemple

- 5 - ENI Editions - All rigths reserved


Lagestiondesrgles
SQL Server 2008 introduit la notion de gestion par les rgles. Ce type de gestion permet de dfinir des rgles
dadministration et de les appliquer une ou plusieurs instances SQL Server. En effet avec la multiplication des
instancesSQLServer,parfoissurunmmeposte,ildevientncessairedavoirunoutilpoursimplifierladministration
individuelle des diffrentes instances. Les rgles peuvent galement servir administrer les bases de donnes
utilisateur.
Lesrglesvontpermettrededfiniruncomportementcommuntouteslesbases,instancesetserveursSQLServer
enrendantobligatoireounonlactivationdecertainsservicesoubienenforantexplicitementdesrglesdenommage
parexemple.Lesrglesvontpermettre,entreautres,dadopterunestructuresimilairesurdesbasesdistinctscequi
permetunecomprhensionplusfaciledesdiffrentesbasesetfaciliteainsiladministrationcarunsoclecommunest
dfini.
Lagestionparlesrglespeuttredcomposeentroiscomposantsimportants:
G Ladfinitionetlagestiondesrgles
G Lemodedexcutiondesrgles
G Ladministrationdirecte.
Letermerglepeuttreprcisenutilisantlanotiondestratgieetdecondition.
Uneconditionvapermettredesassurerquunouplusieurscritresdeconfigurationsontrespects.Lapplicationdes
conditionsainsidfiniesestconfieauxstratgies.Chaquestratgiepermetdevrifieruneseuleconditionmaisune
condition peut tre rfrence par plusieurs stratgies. En effet, une stratgie permet de dfinir les critres
dapplicationdelaconditioncommelesciblesetlemodedapplicationdelastratgie.
Ladfinitiondesconditionsetdesstratgiesestenregistre.Bienquilsoitplusfaciledexaminerlespropritsdes
conditionsetdesstratgiesdepuisSQLServerManagementStudio,ilestpossibledinterrogerlesvuessystmeafin
detravaillersousformedescripts.
1.Lesconditions
ChaqueconditionestcomposedunoudeplusieurscritrescombinsentreeuxparlesoprateurslogiquesETet
OUafindepouvoirvaluersilaconditionestrespecte.
Les diffrents critres dvaluation sont regroups logiquement sous forme de facette. Ainsi, les diffrents
paramtresdadministrationduserveuretdesbasessontlogiquementorganissetilestplusfaciledetrouverleou
bienlescritrestester.
Chaquefacetteregroupedoncplusieursconditions.
SQL Server propose des facettes prdfinies. Chaque facette correspond un domaine bien particulier de
ladministrationdeSQLServer.
2.Lesstratgies
Unestratgiepermetdemettreenplaceunefacette(cestdireunensembledeconditions)etdesassurerdubon
respectdecellesci.Chaquestratgieestparfaitementidentifieparsonnom.Unestratgiepeuttreactiveounon
etpossdequatremodesdiffrentsdapplication:
G lademande:lastratgienestpasactiveetcestladministrateurdebasesdedonnesquidcidequandil
estncessairedelvalueretdelappliquer
G Selonplanification
G SurmodificationJournal
G SurmodificationEvnement.
Afin de mieux identifier les diffrentes stratgies, il est possible de les organiser en catgories et de saisir une
- 1 - ENI Editions - All rigths reserved
description pour chacune dentre elles. Il est galement possible de saisir lURL dune page web daide ou bien
dexplicationafindepermettrelexplicationdelastratgie.
3.Miseenplace
LamiseenplacedesrglesestfacilitedepuisSQLServerManagementStudioetsopredepuislenudGestion
Gestiondelastratgiedelexplorateurdobjets.ceniveau,troisdossiersapparaissentreprsentantlesfacettes,
lesconditionsetlesstratgies.

Ilestalorspossibleautraversdassistantsdedfiniruneouplusieursconditions.Pourcrerunenouvellecondition,il
estncessairedeslectionnerloptionNouvelleconditiondepuislemenucontextueldunudConditions.
Exemple
LaconditionMaConditionestdfinie.
- 2 - ENI Editions - All rigths reserved

Lorsquelesconditionssontdfinies,ilestpossibledecrersaproprestratgieenslectionnantloptionNouvelle
stratgiedepuislemenucontextueldunudStratgies.Chaquestratgiepermetdevrifierunecondition.Lorsde
ladfinitiondelastratgie,lemodedapplicationestslectionnainsiqueleparamtragedelacondition.
Exemple
Unestratgiedapplicationdelaconditiondfinieaupralableesttablie.

- 3 - ENI Editions - All rigths reserved


Lamiseenmiroir
1.Principesdefonctionnement
Lamiseenmiroirdesbasesdedonnespermetdegarantirunesolutiondehautedisponibilittoutenconservantun
investissementmatrielraisonnable.Eneffet,danscetypedehautedisponibilit,unebaseestmiseenmiroiravec
une autre instance SQL Server. La base de donnes initiale porte le qualificatif de principal tandis que la base de
donnescibleportelequalificatifmiroir.Lerlejouparchaquebaseestspcifiquechaquerelationdemiseen
miroir.Cenestpasparcequuneinstancehbergedesbasesquijouentlerledeprincipaledansunemiseenmiroir,
quellenepeutpashbergerdesbasesmiroirdansdautresrelationsdemiseenmiroir.
Cettesolutiondehautedisponibilitnepermetpasdesepasserdesoprationsdesauvegarde.Ilestprfrablede
voircettemiseenmiroircommeunesolutioncomplmentaireafindegarantirlameilleuredisponibilitpossibledes
donnes.
Lamiseenmiroirdesbasesseffectueautraversdujournaldestransactions.Touteslestransactionseffectuessur
labaseprincipalesontenregistresdanslejournaldestransactions.Cesinformationssontdabordenregistresen
mmoire puis, aussi rapidement que possible elles sont enregistres sur disque. Cest lors de cette criture sur
disque que les informations sont envoyes sur les miroirs. La base miroir enregistre alors ses informations sur
disque. Les transactions seront rejoues par la suite. Les deux bases (principale et miroir) contiennent ainsi les
mmesinformations.
La mise en miroir peut galement tre utilise afin de garantir une forte protection des donnes face un
dysfonctionnementduserveurprincipal.Ladiffrenceentrehauteprotectionethautedisponibilittientaufaitque
danslepremiercasceserauneoprationmanuelledeladministrateurquipermettradepromouvoirlabasecibleen
tant que base principale alors que dans la cas dune solution de haute disponibilit le basculement doit tre
automatique.
Une mme instance SQL Server peut hberger des bases qui ne participent une mise en miroir, des bases qui
possdentlerleprincipal,etdesbasesquipossdentlerlemiroir.

Conjointementcetterelation,ilpeutexisteruntmoinquivapermettredautomatiserlebasculementverslabase
miroirencasdedfaillancedelabaseprincipale.Eneffet,letmoinvaaiderlabaseprincipaleet/oumiroirformer
unquorum.Pourcequorumlescassuivantspeuventtredistingus:
G Le principal ne peut contacter la base miroir, mais le tmoin reste accessible donc le quorum est form du
principaletdutmoin.
G Leprincipalpeutcontacterlemiroirmaispasletmoinalorslequorumestformduprincipaletdutmoin.
G Letmoinetlemiroirnepeuventcontacterleprincipalmaissevoiententreeux.Alorslequorumestformdu
tmoinetdumiroir.Lemiroirpromeutlemiroirentantqueprincipal.
- 1 - ENI Editions - All rigths reserved
Avec lutilisation dun tmoin, la solution de haute disponibilit est garantie et transparente pour les applications
client, car il est possible de prciser linstance de secours directement dans la chane de connexion. Ainsi les
dveloppeursdapplications,nontpasprendreenchargelebasculementverslemiroircarcestlepiloteSQLServer
quisechargedecetteopration.
Exemple
Exempledechanedeconnexion:
Data Source=aravis;Failover Partner=tournette;Initial
Catalog=gescom;Integrated Security=SSPI
Lamiseenmiroirncessitequelquescontraintesauniveaudelaconfigurationdontlesprincipalessont:
G LesdeuxinstancesSQLServerexcutentSQLServer2008.LesditionsWorkgroupetExpressnepeuvent
quejouerlerledetmoin.
G Labaseprincipaledoittreconfigureenmodederestaurationcompletafindepouvoirsuivrelejournaldes
transactions.Lesimportationsenblocs(bulklogged)nepeuventpastrereproduitesdefaonautomatique
surlemiroir.
G Labasemiroirvatreinitialisepartirdunesauvegardedelabaseprincipale.Afindepouvoirrejouerles
journauxissusdelabaseprincipalecetterestaurationdoitlaisserlabasemiroirdansuntatNOREVERY.La
basemiroir,neseradoncpasaccessibledirectementauxutilisateursquiaurontalorslobligationdetoujours
travaillersurlabaseprincipale.
G Labasemiroirdoitpossderexactementlemmenomquelabaseprincipale.
G La mise en miroir va ncessairement affecter un peu les performances de la base principale car lenvoides
journaux sur la base miroir est fait de faon synchrone. Cestdire que la base principale sassure que la
basemiroirabienreuetenregistrlejournalavantdepoursuivresontravail.Cetransfertsurdesjournaux
(carceluidelabasemiroirestsynchroneavecceluidelabaseprincipale)estconfigurdelafaonsuivante
surlabaseprincipale.
ALTER DATABASE basePrincipale SET SAFETY FULL;
Le tmoin va permettre de dclencher le basculement automatique vers la base miroir en cas de dfaillance de la
baseprincipale.
Lamiseenmiroirdunebasededonnesesttoujoursralisedanslecontextedunesessiondemiseenmiroir.Au
coursdecettesession,lesdeuxbasespartenairespossdentuntatafindeconnatreleniveaudesynchronisation.
Cestatssont:
SYNCHRONIZING
Les deux partenaires ne contiennent pas les mmes informations. La base de donnes principale communique les
enregistrementsdujournaldestransactionslabasededonnesmiroirafindereproduirelesmodifications.
SYNCHRONIZED
Lesdeuxpartenairescontiennentlesmmesinformations.
SUSPENDED
Labaseprincipaletravaillesansenvoyerlacopiedujournallabasemiroircarcettedernireestdconnecte.
PENDING_FAILOVER
Unedemandemanuelledebasculementatfaitemaispasencoreaccepteparlespartenaires.
DISCONNECTED
Lecontactaveclepartenaireestperduainsiquventuellementceluiavecletmoin.
2.Lamiseenplace
- 2 - ENI Editions - All rigths reserved
Lamiseenplacedunesolutiondemiseenmiroirestcomposedesprincipalestapessuivantes:
G Identifierlinstanceprincipaleetcellemiroirainsiquecellequivajouerlerledetmoinsicelaestpossible
dansvotresolutiondemiseenmiroir.
G Effectuerunesauvegardecompltedelabaseprincipale.Labaseprincipaleauratconfigureenmodede
restauration complet avant deffectuer la sauvegarde (ALTER DATABASEnomBase SET RECOVERY FULL). Cette
sauvegarde va tre restaure sur le miroir mais la base ne basculera pas en mode recovery, ceci afin de
permettrelarestaurationdefichiersjournauxvenir.Lesfichiersdelabasemiroirdoiventpouvoirstendre
delammefaonqueceuxdelabaseprincipale,carlesdeuxbasesvontoccuperlammequantitdespace
disque.
G Linstance principale et linstance miroir vont communiquer dans ce processus de rplication. Il est donc
ncessairedersoudretouslesproblmesdescuritafindepermettreuneconnexionlinstancedistante.
Silesinstancessesituentdanslemmedomaineoubiendesdomainesapprouvs,ilestpossiblededfinir
une connexion (LOGIN) sur chaque serveur puis daccorder le droit cette connexion de se connecter au
traversdunpointdeterminaison(GRANTCONNECTONENDPOINT).Danslecasolesinstancessesituent
dansdesdomainesdistinctssansrelationdapprobationentrelesdeux,alorslaconnexionsappuierasurun
certificataulieudesappuyersuruncompteWindows.
G Despointsdeterminaison(ENDPOINT)doiventtredfinissurlesdeuxserveurs.Cespointsdeterminaison
serontexclusivementddislamiseenmiroirdelabase.
G BienquetoutescesoprationspuissenttredfinieslaidedescriptTransactSQL,tantdonnquelamise
enmiroirestuneoprationponctuelle,ilpeuttreintressantdesappuyersurlassistantdemiseenplace
propos partir du choix Tches Miroir depuis le menu contextuel de la base de donnes mettre en
miroir. Cette option permet dafficher la page Mise en miroir des proprits de la base. Au niveau de cette
page, il est possible dexcuter lassistant de configuration de scurit mais il est galement possible de
spcifierleserveurtmoin(silexiste)ainsiquelemiroir.

Lorsquequecettetapedemiseenplaceestralise,ilestpossibledesuivrelabonneexcutiondeceprocessus
- 3 - ENI Editions - All rigths reserved
et le basculement ventuel vers un miroir laide du moniteur de mise en miroir de base de donnes. Il est
ncessairedinscriretouteslesmisesenmiroirquelonsouhaitesuivreautraversdecetoutil.
- 4 - ENI Editions - All rigths reserved
RessourcesurleWeb
Adresse Description
http://www.apsql.com InformationsdiversessurSQLServer
http://www.guss.fr GroupedesutilisateursdeSQLServer
http://www.microsoft.com/france/sql SiteWebFranaisdeSQLServer
http://www.microsoft.com/sql SiteWebdeSQLServer
http://msdn.microsoft.com MSDN
http://msdn.microsoft.com/frfr/SQL CentrederessourcesSQLServersurMSDN
http://www.microsoft.com/frfr/default.aspx Technet
http://microsoft.com/express/sql/default.aspx SQLExpress
http://support.microsoft.com SupporttechniquedeMicrosoft
- 1 - ENI Editions - All rigths reserved
Glossaire
ACL:AccessControlList
ADF:ApplicationDefinitionFile
ADO:ActiveXDataObject
API:ApplicationProgrammingInterface
AWE:AddressWindowingExtensions
B2B:BusinessToBusiness
BCM:BulkChangeMap
BLOB:BinaryLargeObject
CLR:CommonLanguageRuntime
COM:ComponentObjectModel
CTE:CommonTableExpression
DCM:DifferentialChangeMap
DDL:DataDefinitionLanguage
DEK:DatabaseEncryptionKey
DML:DataManipulationLanguage
DMV:DynamicManagementView
DTA:DatabaseTuningAdvisor
DSS:DecisionSupportSystem
ETL:ExtractionTransformationandLoad
GC:GarbageCollector
GAC:GlobalAssemblyCache
GAM:GlobalAllocationMap
IAM:IndexAllocationMap
ICF:InstanceConfigurationFile
LCID:LocaleID
MARS:MultipleActiveResultSet
MDAC:MicrosoftDataAccessComponent
ODS:OpenDataServices
OLTP:OnLineTransactionProcessing
OLAP:OnLineAnalyticalProcessing
PFS:PageFreeSpace
RID:RowIdentifier
RMO:ReplicationManagementObject
SCC:SetupConsistencyChecker
SGAM:SharedGlobalAllocationMap
SMO:SQLManagementObjects
SMTP:SimpleMailTransferProtocol
SOA:ServiceOrientedArchitecture
SOAP:SimpleObjectAccessProtocol
SQL:StructureQueryLanguage
TDE:TransparentDataEncryption
- 1 - ENI Editions - All rigths reserved
TSQL:TransactSQL
TVF:TableValuedFunctions
UDF:UserDefinedaggregateFunction
UDT:UserDefinedTypes
WMI:WindowsManagementInstrumentation
XML:eXtensibleMarkupLanguage
- 2 - ENI Editions - All rigths reserved

You might also like