Accueil > > > SQL SERVER - PROCÉDURE STOCKÉE FAISANT UN BACKUP DE TOUTES LES BASES ET JOURNAUX DE TRANSACTION AUTOMATIQUEMENT
SQL SERVER - PROCÉDURE STOCKÉE FAISANT UN BACKUP DE TOUTES LES BASES ET JOURNAUX DE TRANSACTION AUTOMATIQUEMENT
Information sur la source
Description
Dans le cadre des taches administratives il faut bien sur faire des BackUp des bases et Journaux de transaction de SQL Server. Pour cela le plan de maintenance est utilisable, mais souvent peut poser problème. Voila donc une Procédure Stockée qui permet de faire ces Backup puis d'enchainer par une compression de ces fichiers via les fichier Windows (CAB). Vous pouvez spécifier à la procédure stockée le fait de vouloir ou non archiver les Bases, les Log de transaction et de spécifier le répertoire dans lequel il sauvera les fichiers. Vous pouvez ensuite planifier l'exécution de cette procédure toutes les semaines voire tous les mois, via les jobs de SQL Agent.
Source
- ----------------------------------------------------------------------------------------------------------------
- CREATE PROCEDURE dbo.SP_System_SauvegardesTotales
- /*
- Permet de sauvegarder toutes les bases et logs et de les compresser (CAB)
- de toutes les bases du serveur SQL Server
- */
- @SauvegardeLogs AS int,
- @SauvegardeBases AS int,
- @RepertoireSauvegarde AS VarChar(8000)
-
- AS
-
- -----------------------------------------------------------------
- -- Déclaration des Variables
- DECLARE @name sysname
- DECLARE @status int
- DECLARE @TestAutoTruncate bit
- DECLARE @LaRequette varchar(8000)
- DECLARE @DateJour varchar(20)
- DECLARE @Repertoire varchar(8000)
- DECLARE @RepertoireDefaut varchar(100)
-
- -----------------------------------------------------------------
- -- Initialisation des Variables déclarées
- SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 102), '.', '_')
- SET @RepertoireDefaut = 'C:\BACKUPBASES\'
-
- -----------------------------------------------------------------
- PRINT '-----------------------------------------------------'
- PRINT ' DATE DE LA SAUVEGARDE LANCEE : '+ @DateJour
- PRINT '-----------------------------------------------------'
-
- -----------------------------------------------------------------
- -- Vérification du paramètre du répertoire des Bases et Logs
- IF RTRIM(@RepertoireSauvegarde) != ''
- BEGIN
- PRINT 'Répertoire Fourni à la SP'
- IF RIGHT(@RepertoireSauvegarde, 1) != '\'
- SET @Repertoire = @RepertoireSauvegarde + '\'
- ELSE
- SET @Repertoire = @RepertoireSauvegarde
- END
- ELSE
- BEGIN
- PRINT 'Répertoire Non Fourni à la SP - Création du répertoire par défaut : '+ @RepertoireDefaut
- SET @LaRequette = 'master.dbo.xp_cmdshell ''MKDIR '+ @RepertoireDefaut +''', NO_OUTPUT '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
- SET @Repertoire = @RepertoireDefaut
- END
-
- PRINT 'Répertoire de Sauvegarde des Bases et Logs : '+ @Repertoire
-
- -----------------------------------------------------------------
- -- Déclaration du Curseur sur la liste des Bases de données
- DECLARE TESTCURSEUR CURSOR
- FOR SELECT master.dbo.sysdatabases.name, master.dbo.sysdatabases.status
- FROM master.dbo.sysdatabases
-
- -- WHERE (master.dbo.sysdatabases.status & 8)!= 8
- -- WHERE master.dbo.sysdatabases.name NOT IN ('tempdb', 'model', 'pubs')
-
- -- Ouverture du Curseur
- OPEN TESTCURSEUR
- FETCH NEXT FROM TESTCURSEUR
- INTO @name, @status
-
- -- Bouclage sur le curseur défini
- WHILE @@FETCH_STATUS = 0
-
- BEGIN
- -- Vérifie que la base de transaction n'est pas en mode simple (donc pas de log à sauver)
- SET @TestAutoTruncate = @status & 8
-
- /*
- -- Suivi des valeurs pour tests
- PRINT 'BASE : '+ @name
- PRINT 'TEST TRUNCATE : '+ CAST(@TestAutoTruncate AS VARCHAR)
- PRINT 'Valeur Status : '+ CAST(@status AS VARCHAR)
- */
-
- -----------------------------------------------------------------
- -- Vérification de la sauvegarde des Logs de Bases demandée
- IF (@SauvegardeLogs = 1) AND (@TestAutoTruncate = 0)
- BEGIN
-
- PRINT ''
- PRINT '-----------------------------------------------------'
- PRINT 'BACKUP DU LOG DE LA BASE DE DONNEES : '+ @name
-
- ----------------- LOGS -----------------------------
- -- Sauvegarde du Log de transaction courant dans le Curseur
- SET @LaRequette = 'USE '+ @name +' EXEC sp_addumpdevice ''DISK'', '''+ @name +'Log'', '''+ @Repertoire + @name +'Log.BAK'' BACKUP LOG '+ @name +' TO '+ @name +'Log'
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- -- Suppression du device déclaré dans la table Master.Sysdevices
- SET @LaRequette = 'USE '+ @name +' EXEC sp_dropdevice '''+ @name +'Log'' '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- -- Archivage du fichier BAK avec le format Windows CAB
- SET @LaRequette = 'master.dbo.xp_cmdshell ''C:\WINDOWS\system32\makecab /V[1] /L '+ @Repertoire +' '+ @Repertoire + @name +'Log.BAK '+ @name +'Log_'+ @DateJour +'.cab'', NO_OUTPUT '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- -- Suppression du fichier BAK
- SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'Log.BAK'', NO_OUTPUT '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
- END
-
- -----------------------------------------------------------------
- -- Vérification de la sauvegarde des Bases de données demandée
- IF @SauvegardeBases = 1
- BEGIN
- PRINT ''
- PRINT '-----------------------------------------------------'
- PRINT 'BACKUP DE LA BASE DE DONNEES : '+ @name
- ----------------- BASES ----------------------------
- -- Sauvegarde de la base courante dans le Curseur
- SET @LaRequette = 'USE '+ @name +' BACKUP DATABASE '+ @name +' TO DISK ='''+ @Repertoire + @name +'.BAK'''
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- -- Archivage du fichier BAK avec le format Windows CAB
- SET @LaRequette = 'master.dbo.xp_cmdshell ''C:\WINDOWS\system32\makecab /V[1] /L '+ @Repertoire +' '+ @Repertoire + @name +'.BAK '+ @name +'_'+ @DateJour +'.cab'', NO_OUTPUT '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
-
- -- Suppression du fichier BAK
- SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'.BAK'', NO_OUTPUT '
- PRINT 'Requette : '+ @LaRequette
- EXECUTE (@LaRequette)
- END
-
- PRINT ''
- PRINT '-----------------------------------------------------'
-
- -----------------------------------------------------------------
- -- Avance le curseur d'un Cran
- FETCH NEXT FROM TESTCURSEUR
- INTO @name, @status
-
- END
-
- -----------------------------------------------------------------
- -- Fermeture du Curseur
- CLOSE TESTCURSEUR
-
- -- Libération de la mémoire prise par le Curseur
- DEALLOCATE TESTCURSEUR
-
- -----------------------------------------------------------------
- GO
-
- ----------------------------------------------------------------------------------------------------------------
-
- -- Vous pouvez utiliser cette SP comme suit :
- -- EXEC dbo.SP_System_SauvegardesTotales 1, 0, 'C:\MonBacUpDeBases\' > il archivera les Logs de Transaction sans les bases
- -- EXEC dbo.SP_System_SauvegardesTotales 0, 1, 'C:\MonBacUpDeBases\' > il archivera les bases sans les Logs de Transaction
- -- EXEC dbo.SP_System_SauvegardesTotales 1, 1, '' > il archivera les bases et les Logs de Transaction dans le répertoire par défaut 'C:\BACKUPBASES\'
-
-
-
-
----------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.SP_System_SauvegardesTotales
/*
Permet de sauvegarder toutes les bases et logs et de les compresser (CAB)
de toutes les bases du serveur SQL Server
*/
@SauvegardeLogs AS int,
@SauvegardeBases AS int,
@RepertoireSauvegarde AS VarChar(8000)
AS
-----------------------------------------------------------------
-- Déclaration des Variables
DECLARE @name sysname
DECLARE @status int
DECLARE @TestAutoTruncate bit
DECLARE @LaRequette varchar(8000)
DECLARE @DateJour varchar(20)
DECLARE @Repertoire varchar(8000)
DECLARE @RepertoireDefaut varchar(100)
-----------------------------------------------------------------
-- Initialisation des Variables déclarées
SET @DateJour = REPLACE(CONVERT(VARCHAR, GetDate(), 102), '.', '_')
SET @RepertoireDefaut = 'C:\BACKUPBASES\'
-----------------------------------------------------------------
PRINT '-----------------------------------------------------'
PRINT ' DATE DE LA SAUVEGARDE LANCEE : '+ @DateJour
PRINT '-----------------------------------------------------'
-----------------------------------------------------------------
-- Vérification du paramètre du répertoire des Bases et Logs
IF RTRIM(@RepertoireSauvegarde) != ''
BEGIN
PRINT 'Répertoire Fourni à la SP'
IF RIGHT(@RepertoireSauvegarde, 1) != '\'
SET @Repertoire = @RepertoireSauvegarde + '\'
ELSE
SET @Repertoire = @RepertoireSauvegarde
END
ELSE
BEGIN
PRINT 'Répertoire Non Fourni à la SP - Création du répertoire par défaut : '+ @RepertoireDefaut
SET @LaRequette = 'master.dbo.xp_cmdshell ''MKDIR '+ @RepertoireDefaut +''', NO_OUTPUT '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
SET @Repertoire = @RepertoireDefaut
END
PRINT 'Répertoire de Sauvegarde des Bases et Logs : '+ @Repertoire
-----------------------------------------------------------------
-- Déclaration du Curseur sur la liste des Bases de données
DECLARE TESTCURSEUR CURSOR
FOR SELECT master.dbo.sysdatabases.name, master.dbo.sysdatabases.status
FROM master.dbo.sysdatabases
-- WHERE (master.dbo.sysdatabases.status & 8)!= 8
-- WHERE master.dbo.sysdatabases.name NOT IN ('tempdb', 'model', 'pubs')
-- Ouverture du Curseur
OPEN TESTCURSEUR
FETCH NEXT FROM TESTCURSEUR
INTO @name, @status
-- Bouclage sur le curseur défini
WHILE @@FETCH_STATUS = 0
BEGIN
-- Vérifie que la base de transaction n'est pas en mode simple (donc pas de log à sauver)
SET @TestAutoTruncate = @status & 8
/*
-- Suivi des valeurs pour tests
PRINT 'BASE : '+ @name
PRINT 'TEST TRUNCATE : '+ CAST(@TestAutoTruncate AS VARCHAR)
PRINT 'Valeur Status : '+ CAST(@status AS VARCHAR)
*/
-----------------------------------------------------------------
-- Vérification de la sauvegarde des Logs de Bases demandée
IF (@SauvegardeLogs = 1) AND (@TestAutoTruncate = 0)
BEGIN
PRINT ''
PRINT '-----------------------------------------------------'
PRINT 'BACKUP DU LOG DE LA BASE DE DONNEES : '+ @name
----------------- LOGS -----------------------------
-- Sauvegarde du Log de transaction courant dans le Curseur
SET @LaRequette = 'USE '+ @name +' EXEC sp_addumpdevice ''DISK'', '''+ @name +'Log'', '''+ @Repertoire + @name +'Log.BAK'' BACKUP LOG '+ @name +' TO '+ @name +'Log'
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
-- Suppression du device déclaré dans la table Master.Sysdevices
SET @LaRequette = 'USE '+ @name +' EXEC sp_dropdevice '''+ @name +'Log'' '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
-- Archivage du fichier BAK avec le format Windows CAB
SET @LaRequette = 'master.dbo.xp_cmdshell ''C:\WINDOWS\system32\makecab /V[1] /L '+ @Repertoire +' '+ @Repertoire + @name +'Log.BAK '+ @name +'Log_'+ @DateJour +'.cab'', NO_OUTPUT '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
-- Suppression du fichier BAK
SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'Log.BAK'', NO_OUTPUT '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
END
-----------------------------------------------------------------
-- Vérification de la sauvegarde des Bases de données demandée
IF @SauvegardeBases = 1
BEGIN
PRINT ''
PRINT '-----------------------------------------------------'
PRINT 'BACKUP DE LA BASE DE DONNEES : '+ @name
----------------- BASES ----------------------------
-- Sauvegarde de la base courante dans le Curseur
SET @LaRequette = 'USE '+ @name +' BACKUP DATABASE '+ @name +' TO DISK ='''+ @Repertoire + @name +'.BAK'''
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
-- Archivage du fichier BAK avec le format Windows CAB
SET @LaRequette = 'master.dbo.xp_cmdshell ''C:\WINDOWS\system32\makecab /V[1] /L '+ @Repertoire +' '+ @Repertoire + @name +'.BAK '+ @name +'_'+ @DateJour +'.cab'', NO_OUTPUT '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
-- Suppression du fichier BAK
SET @LaRequette = 'master.dbo.xp_cmdshell ''DEL '+ @Repertoire + @name +'.BAK'', NO_OUTPUT '
PRINT 'Requette : '+ @LaRequette
EXECUTE (@LaRequette)
END
PRINT ''
PRINT '-----------------------------------------------------'
-----------------------------------------------------------------
-- Avance le curseur d'un Cran
FETCH NEXT FROM TESTCURSEUR
INTO @name, @status
END
-----------------------------------------------------------------
-- Fermeture du Curseur
CLOSE TESTCURSEUR
-- Libération de la mémoire prise par le Curseur
DEALLOCATE TESTCURSEUR
-----------------------------------------------------------------
GO
----------------------------------------------------------------------------------------------------------------
-- Vous pouvez utiliser cette SP comme suit :
-- EXEC dbo.SP_System_SauvegardesTotales 1, 0, 'C:\MonBacUpDeBases\' > il archivera les Logs de Transaction sans les bases
-- EXEC dbo.SP_System_SauvegardesTotales 0, 1, 'C:\MonBacUpDeBases\' > il archivera les bases sans les Logs de Transaction
-- EXEC dbo.SP_System_SauvegardesTotales 1, 1, '' > il archivera les bases et les Logs de Transaction dans le répertoire par défaut 'C:\BACKUPBASES\'
Conclusion
En espérant que cette SP vous rende service.
Bon coding
Romelard Fabrice (Alias F___)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Sauvegarde automatique sqlserver 2000 [ par jojos89 ]
Salut a tous,J'ai une base de données en local sur mon pc (avec sqlserver 2000)que je voudrais sauvegardé automatique (tous les soir) s
aide pour SQLSERVER [ par nagrom_om ]
salut,quelqu'un sait il comment peut on avoir un listing des requetes qui sont passées sous SQL Server ??Merci !
ms access - sqlserver - procédurestockée [ par metasky ]
bonjour,je suis actuellement sur une appli liant access et sqlserver...quand je consulte mes procédures stockées dans mon projet access les
sauvegarde access [ par fififoufou2 ]
Bonjour, Est-il possible de sauvegarder une bdd Access à l'aide d'une commande sql. A la limite, en exporter les données au format word, excel ou autr
Backup et restauration avec les recovery model [ par bubix ]
Bonsoir, Je veux réaliser un backup complet de ma base. Ensuite, je veux faire un backup de journal des transactions.J'utilise la commande
procedure stocké sqlhelper [ par htmlchef ]
Bonjour, Je developpe en VB.NET et j utilise la classe Sqlhelper de puis l'éspace de noms Microsoft.ApplicationBlocks.Data pour appeler une Proce
Quel outil pour SqlServer [ par padurand ]
Mon site tourne avec une base de donnees Access, et des pages ASP.Je voudrais remplacer Access par SqlServer ... a priori il ne devrait pas y avoir de
exporter des donnees de sqlserver 2005 vers access (dts) [ par tenrod ]
Salut a tous ,Voila je travail avec une base sql server 2005 et je voudrais exporter le résultat d'une requete (a partir de ma base sql server) d
procedures stockée avec Mysql [ par emna_bz ]
Bonjour ,J'ai crée la procedure stockée suivante: CREATE procedure spGetCategorie(Catlien varchar(30) ,out Name varchar(30) ) BEGI
1ere procedure stockée [ par matlocker ]
Bonjour a tous,Je realise acuellement ma premiere procedure stockée sous SQL Server 2000.Je dois recuperer dans une table la liste des symbol qui
|
Derniers Blogs
QUELQUES TRUCS INTéRESSANTS (05/09/2010)QUELQUES TRUCS INTéRESSANTS (05/09/2010) par coq
Cette fois-ci : .NET Debug / Performance Sécurité SQL Server .NET Determining if a type is defined in the .NET Framework (blog de Scott Dorman) Ha tiens, je n'avais jamais vraiment pensé à utiliser le jeton de clé publique...
Cliquez pour lire la suite de l'article par coq ENUMERABLECOLLECTIONENUMERABLECOLLECTION par Matthieu MEZIL
Prenons le scénario suivant. On utilise MVVM. On a les deux classes suivantes dans le model : public class Child { } public class Parent { private ObservableCollection < Child > _children; public ObservableCollection < Child > Children { get {...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [HS] CHROME 6 + MOI = COUP DE GUEULE ![HS] CHROME 6 + MOI = COUP DE GUEULE ! par JeremyJeanson
Attention, le poste qui suit n'est pas la complainte d'une personne : Qui n'aime pas Chrome. D'un anti Google. D'un développeur qui a un poil énorme dans la main. Ceux qui me fréquentent savent que je change de navigateur favori tous les 2 ou 3 mois afin ...
Cliquez pour lire la suite de l'article par JeremyJeanson [WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7[WP7] UTILISER UN WRAPPANEL DANS UNE APPLICATION WINDOWS PHONE 7 par Audrey
Lors de la réalisation de ma 2ème application Windows Phone 7, j'ai souhaité utiliser un WrapPanel pour afficher plusieurs photos. Mais le contrôle WrapPanel ne fait pas parti de la liste des contrôles inclus dans le SDK de la version Beta des outils pour...
Cliquez pour lire la suite de l'article par Audrey [WP7] BESOIN D'AVOIR DES DONNéES EN CACHE[WP7] BESOIN D'AVOIR DES DONNéES EN CACHE par Nicolas
Les développeurs ASP.NET ont l'habitude de mettre des données en cache pour éviter de requêter a chaque fois la base de données. Et il est toujours utilie de penser que vos utilisateurs mobiles n'ont pas troujours une super connexion 3G/WIFI et un for...
Cliquez pour lire la suite de l'article par Nicolas
Logiciels
WebLogAndPass (1.0.0)WEBLOGANDPASS (1.0.0)WebLogAndPass est un logiciel permettant de mémoriser vos sites préférés et pour chacun d'entre-e... Cliquez pour télécharger WebLogAndPass uTorrent (2.0.4)UTORRENT (2.0.4)C'est un client BitTorrent très puissant et très performant. Comme son nom l'indique, uTorrent (m... Cliquez pour télécharger uTorrent Bureau de Gestion - ERP Devis Facturation (2.02)BUREAU DE GESTION - ERP DEVIS FACTURATION (2.02)- Version gratuite du 10/06/2010
Le Bureau de Gestion est un logiciel dédié à la gestion de l'en... Cliquez pour télécharger Bureau de Gestion - ERP Devis Facturation 4Videosoft Transfert iPod Mac (3.2.08)4VIDEOSOFT TRANSFERT IPOD MAC (3.2.08)4Videosoft Transfert iPod-Mac caractérise principalement à transférer les fichiers iPod vers Mac.... Cliquez pour télécharger 4Videosoft Transfert iPod Mac 4Videosoft HD Convertisseur (3.3.08)4VIDEOSOFT HD CONVERTISSEUR (3.3.08)Etant le meilleur HD Vidéo Convertisseur, 4Videosoft HD Convertisseur, vous pouvez regarder la vi... Cliquez pour télécharger 4Videosoft HD Convertisseur
|