Académique Documents
Professionnel Documents
Culture Documents
Sauve Mss QL
Sauve Mss QL
Diverses mthodes pour dplacer, copier, sauvegarder, restaurer une base de donnes
MS-SQL Server
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
-2Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
un pour le segment de donnes et le segment systme (soit pour stocker les tables )
un pour stocker le journal de transactions
-3Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Ensuite, les assistants se chargent de vous guider dans la cration des travaux de sauvegarde et leur planification.
Se connecter l'instance
Cliquer sur Maintenance
Clic droit sur Database Maintenance Plans
Choisir un nouveau plan de maintenance
Suivre l'assistant
-4Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Les version 2000 et 2005 diffrent et cela que l'assitant de la 2005 vous plonge rellement dans un environnement de
type "workflow" ou les diverses tches sont connectables souhait. Grandement complexifi pour une tche basique,
il apporte sans conteste un plus dans les traitements plus complexes.
il va de soi que toutes ces commandes peuvent tre lances la main via script T-SQL. Utilisez l'assistant en premier
et allez ensuite visualiser les scripts gnrs afin de les remettre " votre sauce".
-5Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Base..syssegments
Description
Liste des bases de donnes
Requte associe
select id, name
from master..sysdatabases
Liste des fichiers physiques select name
disponibles
from master..sysdevices
Table de lien pour
USE master
l'alLocalisation des bases sur GO
les fichiers
SELECT d.name,
v.physname
FROM sysdevices v,
sysusages u, sysdatabases b
WHERE u.vstart BETWEEN
v.low AND v.high
AND u.dbid=b.dbid
Table des segments de
la base devant mixer
avec sysusages.segmaps
(masque de bits)
Une base ne pouvant tre associe un fichier spcifique, seule la sauvegarde de l'instance entire est possible,
et ceci uniquement lorsque l'instance est arrte (shutdown). Tout autre essai vous expose corrompre votre base,
une dsynchronisation mmoire/disque tant quasi sre. La liste des fichiers sauver peut s'afficher grce au T-SQL
suivant (la condition sur status supprime les dump devices):
SELECT physname
FROM master..sysdevices
WHERE status & 16=0
Il devient donc possible de dtacher et d'attacher une base de donnes en se fixant sur ses fichiers.
Afficher les fichiers d'une base
-6Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
USE maBase
GO
SELECT filename
FROM sysfiles
GO
Ds ce moment, la base n'est plus attache serveur SQL et n'est donc plus utilisable. Ses fichiers peuvent par
contre tre copis, au besoin sur un autre serveur ayant une autre instance SQL Server.
Rattacher une base
USE maBase
GO
EXEC sp_attach_db @dbname = N'MaBase',
@filename1 = N'D:\MSSQL\Data\MaBase_Data.mdf',
@filename2 = N'D:\MSSQL\Log\MaBase_log.ldf' ;
GO
-7Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
IV - La sauvegarde logique
L'ide est donc de sauvegarder la base, indpendament des fichiers physiques qui lui sont rattachs. L'avantage est
de ne sauver que les pages alloues de la base.
Pour des raisons de performances, on peut se crer d'autres segmetns particuliers (indexes, tables spcifiques, ...)
Jusqu'en pr-v.2000, il tait fortement recommand de dissocier le segment du journal de transactions des autres
segments, ceci afin de simplifier la rcupration lors de corruptions, mais surtout d'autoriser la sauvegardes du journal,
que l'on peut associer une sauvegarde incrmencielle. Depuis la version 2000, ceci n'est plus ncessaire puisque
le journal se trouve sur un fichier ddi (Nomdebase.ldb).
On peut travailler avec des dumpdevices (cibles de fichiers prdfinies), directement sur bande, etc mais ceci n'est
pas le sujet de ce didacticiel.
Relevons qu'il est tout fait possible d'excuter ce type de sauvegarde chaud = durant l'utilisation courante de la
base. Seules les performances seront sensiblement dgrades.
La rcupration se fait avec la commande RESTORE, en ayant pris soins au pralable de supprimer toute connexion
sur la base remonter. Contrairement la sauvegarde, la rcupration requiert - on peut s'en douter - un accs
exclusif la base.
USE master
GO
SELECT 'kill',spid
FROM sysprocesses
WHERE dbid=db_id('MaBase')
GO
/* Excution de l'output de la commande ci-dessus afin de librer la base */
GO
RESTORE DATABASE MaBase FROM DISK=N'D:\BACKUP\MaBase.bak'
GO
-8Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Imaginons maintenant qu'un crash apparaisse 11h20 du matin. Que devez-vous faire ?
Soit, en T-SQL
USE master
GO
/* Tentative de sauvegarde du dernier journal */
BACKUP TRAN MaBase To DISK=N'D:\Backup\MaBase_crash11h30_20060518.Bak'
SELECT @@error
GO
/* Si mme arborescence disque */
RESTORE DATABASE MaBase FROM DISK=N'D:\Backup\MaBase_20h_20060517.Bak' WITH NORECOVERY
GO
/* Si arborescence disque diffrente, repositionnement sur la nouvelle arborescence */
RESTORE DATABASE MaBase FROM DISK=N'D:\Backup\MaBase_20h_20060517.Bak'
WITH MOVE 'MaBase_Data' TO DISK='C:\MaNouvelleLocalisation\Data\MaBase.mdb' ,
MOVE 'MaBase_Log' TO DISK='C:\MaNouvelleLocalisation\Log\MaBase.ldb' ,
NORECOVERY
GO
/* ...
RESTORE
RESTORE
RESTORE
RESTORE
RESTORE
RESTORE
STOPAT
GO
-9Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Connectez-vous ensuite via votre outil prfr (isql, sqlcmd ou un quivalent graphique) et excutez l'opraton de
restauration
RESTORE DATABASE master FROM DISK='D:\BACKUP\master.bak'
GO
N'ayez pas d'inquitude si la fin de cette commande, vous perdez votre connexion : aussitt la rcupration
effectue, le SQL Server se suicide (shutdown) afin de pouvoir tre redmarr correctement avec le nouvel tat de
sa base master.
net start MSSQL$SQL2005
Il faudra ensuite dtecter, aprs le chargement, les utilisateurs dsynchroniser et les recrer au besoin l'aide de
la prcdure sp_change_users_login.
- 10 Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
V - Dplacement de bases
IV-A - Restaurer physiquement une base sous un autre nom.
BACKUP DATABASE MaBase TO N'D:\Backup\MaBase.BAK'
GO
RESTORE DATABASE MonNouveauNomDeBase
FROM DISK = N'D:\Backup\MaBase.BAK'
WITH MOVE N'MaBase_Data' TO N'D:\MSSQL\Data\MonNouveauNomDeBase_Data.mdf',
MOVE N'MaBase_Log' TO N'D:\MSSQL\Data\MonNouveauNomDeBase_Log.ldf'
GO
ALTER DATABASE MonNouveauNomDeBase MODIFY FILE (NAME=N'MaBase_Data',
NEWNAME=N'MonNouveauNomDeBase_Data')
ALTER DATABASE MonNouveauNomDeBase MODIFY FILE (NAME=N'MaBase_Log', NEWNAME=N'MonNouveauNomDeBase_Log')
GO
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
GO
sp_configure 'allow updates', 1
GO
UPDATE master..sysdevices SET phyname = 'D:\MaNouvelleLocalisation\tempdb.mdf' where name = 'tempdev'
UPDATE master..sysdevices SET phyname = 'D:\MaNouvelleLocalisation\templog.ldf' where name = 'templog'
GO
SHUTDOWN with nowait
GO
Puis copie des fichiers et redmarrage du service MS-SQL Server (ici, non de l'instance = SQL2005)
move "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\tempdb.mdf" D:\MaNouvelleLocalisation
\Data\tempdb.mdf
move "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\templog.ldf" D:\MaNouvelleLocalisation
\Log\templog.ldf
net start MSSQL$SQL2005
- 12 Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/
Dplacement, sauvegardes et restauration de bases sous MS-SQL Server par Fabien Celaia
Dans la ligne startup parameters, remplacer les paramtres -l (pour le log) et -d (pour les data) pour qu'ils
pointent sur votre nouvelle localisation. Dans notre exemple, -dC:\Program Files\Microsoft SQL Server
\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG
\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf est remplac par
-dE:\MaNouvelleLocalisation\Data\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL
\LOG\ERRORLOG;-lD:\MaNouvelleLocalisation\Log\mastlog.ldf
Ne reste plus qu' lancer, via ligne de commande, les copies, base arrte, bien videmment
net stop MSSQL$SQL2005
move "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf" "d:
\MaNouvelleLocalisation\Data\master.mdf"
move "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf" "d:
\MaNouvelleLocalisation\Log\mastlog.ldf"
net start MSSQL$SQL2005
- 13 Copyright 2006 fadace. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de
l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fadace.developpez.com/mssql/sauve/