kraps04
Messages postés3Date d'inscriptionvendredi 18 juillet 2008StatutMembreDernière intervention16 janvier 2012 13 janv. 2012 à 14:59
Bonjour,
j'ai testé cette procédure qui fonctionne très bien , seulement moi j'ai décidé d'en faire 2 procédures , une pour la sauvegarde des bases de données et une pour les journaux des transactions afin de sauvegarder les journaux plus régulièrement que les bases .
J'ai donc essayer de rajouter l'heure aux nom des fichier de sauvegardes des logs ,mais en vain ,l'heure s'écrivant sous cette forme HH:MM:SS ,les : ne sont pas utilisable dans un nom de fichier .. si vous auriez une réponse pour me venir en aide s'il vous plait .. merci
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 26 janv. 2010 à 11:14
Bonjour,
Dans ce cas, il faut mettre le nom de la base entre crochets [xxxxxxx]
Cordialement
Fabrice Romelard [MVP]
scub82
Messages postés2Date d'inscriptionsamedi 2 juillet 2005StatutMembreDernière intervention24 octobre 2014 26 janv. 2010 à 10:14
Bonjour,
J'ai testé cette procédure qui marche très bien néanmoins j'ai un problème concernant une des bases. Le back up ne se fait pas car il semble que le nom de a base comporte un espace.
Il y a t il un moyen de régler ce problème?
merci d'avance.
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 24 oct. 2009 à 00:54
Bonjour,
Cela vient du fait que cette procédure utilise après la sauvegarde un module de compression (standard sous Windows - MakeCab).
Pour exécuter cette commande, on doit utiliser la procédure system de SQL Server "dbo.xp_cmdshell" qui permet d'exécuter des fichiers exécutable dans le contexte SQL Server.
Cette procédure stockée est désactivée de base sous SQL Server 2005 et 2008. Il vous faut chercher dans les options pour la réactiver (je ne me souviens plus exactement ou mais ca doit être dans l'outil danalyse de la surface de mémoire).
Si vous ne voulez pas être géné avec ca, il suffit de désactiver (commentaire devant la ligne -- souc SQL Server) les lignes 129 et 134
Cordialement
Romelard Fabrice [MVP]
usager2009
Messages postés1Date d'inscriptionvendredi 23 octobre 2009StatutMembreDernière intervention23 octobre 2009 23 oct. 2009 à 23:07
Bonjour,
J'ai le même questionnement que MATTZ. Est-ce possible d'utiliser cette procédure stockée avec "Microsoft SQL Server Management Studio Express". Si oui, comment faire étape par étape. Moi je réussis seulement à faire un backup de mes BD à partir de l'interface de la console de management ou en générant les scripts, ensuite les exécuter dans des batchs avec la commande sqlcmd. En fait, je me retrouves avec plusieurs batchs et tâches planifiées pour mes backups de BD, ce qui est lourd à gérer. Merci
julius06
Messages postés8Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention21 octobre 2009 21 oct. 2009 à 18:50
Merci beaucoup pour ce script, très pratique, que j'utilise depuis un moment maintenant.
Est-il possible de limiter l'utilisation du cpu par la sauvegarde?
nsegi
Messages postés31Date d'inscriptionmardi 22 juillet 2008StatutMembreDernière intervention20 décembre 2013 24 juin 2009 à 09:36
Bonjour Mr Fabrice. Je trouve que c'est tres genial ce bout de code et tres pratique
mais en fait je ne vois pas le parametrage de temps d'execution (pendant apres tel periode)
Comment le faire?
merci
cs_MattZ
Messages postés2Date d'inscriptionvendredi 30 août 2002StatutMembreDernière intervention12 février 2009 12 févr. 2009 à 15:53
Bonjour,
La procédure ne fonctionne pas chez moi. Je m'y prends peut-être mal.
J'ai déposé la procédure stoquée dans la base master.
Je l'exécute dans Microsoft SQL Server Management Studio Express. Ce qui le fait planter.
Je l'ai ensuite essayée dans Toad 3.1 pour SQL Server avec la commande : EXEC SP_System_SauvegardesTotales 1, 1, 'C:\BackupExpress2\'
Le message suivant apparaît 11 fois :
"Impossible d'effectuer une sauvegarde ou une restauration dans une transaction.
BACKUP DATABASE s'est terminé anormalement."
-----------------------------------------------------
BACKUP DE LA BASE DE DONNEES : tempdb
Requette : USE tempdb BACKUP DATABASE tempdb TO DISK ='C:\BackupExpress2\tempdb.BAK'
Requette : master.dbo.xp_cmdshell 'C:\WINDOWS\system32\makecab /V[1] /L C:\BackupExpress2\ C:\BackupExpress2\tempdb.BAK tempdb_2009_02_12.cab', NO_OUTPUT
Requette : master.dbo.xp_cmdshell 'DEL C:\BackupExpress2\tempdb.BAK', NO_OUTPUT
Et ainsi de suite pour chaque base.
J'ai donc utilisé la fonction DEBUG de TOAD.
Ce qui est intéressant, c'est que la fonction PRINT fonctionne correctement lors du debogage du script jusqu'à la ligne EXECUTE
à la fin de
-- 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)
Ensuite, ça mouline, sans sortie PRINT. Jusqu'au message d'erreur affiché plus haut.
Je ne vois pas comment corriger le tir.
Pour info, je suis sur SQL SERVER EXPRESS 2005 SP3.
Merci pour toute précison
omardelphi2007
Messages postés1Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention 5 octobre 2008 5 oct. 2008 à 15:18
merci et bon courrage
Nic0s
Messages postés10Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention18 décembre 2008 19 sept. 2008 à 18:48
attention le C:\WINDOWS\system32\makecab est à adapter en focntion du systeme utilisé dans mon cas C:\WINNT\system32\makecab
AMEDTIAB
Messages postés1Date d'inscriptiondimanche 21 août 2005StatutMembreDernière intervention24 février 2008 24 févr. 2008 à 11:01
bonjour
la procédure proposée est très instructive et je vous en remercie à titre indivuel, je commence dans le transact SQL et c'est pour moi une veritable bibliothèque.
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 15 janv. 2008 à 13:46
Bonjour,
Ce message n'a aucun rapport avec le sujet de cette source.
Je vous invite à poser votre question sur le forum adéquat.
Cordialement
Romelard Fabrice
nourwahiba
Messages postés82Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention23 juin 2011 15 janv. 2008 à 11:04
bonjour tout le monde
a vous fabrice69
est ce qui'l est possible de protéger ma base de données sous sql server ..je m'explique ...j'ai installer sql server dans un PC SERVER jai ma base "COMMERCAILE08" il ya 3 personnes qui ont le mot de passe du server alors comment faire pour les empécher d'acceder carement a entreprise manager ou bien a ma ma base et la consulter
merci a vous tous et bon courage
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 15 janv. 2008 à 09:43
Bonjour,
Le mode "Simple" de journalisation ne fait pas bouger le fichier des logs de transaction.
De ce fait le backup des log ne peut pas se faire.
Je vous invite à lire la documentation sur le sujet :
- http://sql.developpez.com/sqlserver/log/ Cordialement
Romelard Fabrice
simbole12
Messages postés1Date d'inscriptionmardi 15 janvier 2008StatutMembreDernière intervention15 janvier 2008 15 janv. 2008 à 04:28
slt a ts..
j'ai 1 problem sur le backup d'1 fichier journale sous sql server,voila les codes que j'ai fait apré bien sur le buckup complete:
use master
backup log nom_da_la_base to unite2 with noinit
et voila le message d'erreur:
Serveur : Msg 4208, Niveau 16, État 1, Ligne 2
L'instruction BACKUP LOG n'est pas autorisée lorsque le modèle de récupération est SIMPLE. Faites appel à BACKUP DATABASE ou modifiez le modèle de récupération au moyen de sp_dboption.
Serveur : Msg 3013, Niveau 16, État 1, Ligne 2
BACKUP LOG s'est terminé anormalement.
merci pr vetre aide
nourwahiba
Messages postés82Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention23 juin 2011 13 mai 2007 à 11:43
salam alikoum
merci a vous fabrice69
alors j'ai mon application vb qui accede a une base de donnée sql server
a partir de mon application je fais un backup :
j'ai cree une procedure stockée en sql server qui a a comme parametre le nom de la base et le chemin :
CREATE PROCEDURE BackupTeste
@base as varchar(800),
@chemin nvarchar(1000)
AS
BACKUP DATABASE @base
To DISK = @chemin
GO
lorsque j'execute mon application sur mon server ( server2005)ca marche tres bien mais quand je l'execute sous reseau( un autre pc(portable2005) sous reseau qui a aussi le sql serveur ça marche pas meme je fais arreté le server portable2005 pour garder que le server2005 mais ça marche pas ) comment faire un backup sous reseau svp et merci pour votre aide
bonne suite
cs_Womby
Messages postés69Date d'inscriptionjeudi 29 août 2002StatutMembreDernière intervention27 avril 2007 27 avril 2007 à 15:53
Très pratique et instructif. Merci :)
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 17 avril 2007 à 15:24
Bonjour,
La commande de backup est la suivante :
- ' BACKUP DATABASE '+ @name +' TO DISK ='''+ @Repertoire + @name +'.BAK'''
Cordialement
Romelard Fabrice [MVP]
nourwahiba
Messages postés82Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention23 juin 2011 17 avril 2007 à 14:48
bonjour
je trouve que cette procedure est trés compliquée( au moin pour moi)
alors si je veux faire un backup juste a une base de donnée et non pas a toutes les bases de sql quoi changer exactement
merci pour vous
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 17 oct. 2005 à 14:59
Bonjour,
Vous devez utiliser la commande RESTORE, tel que l'exemple ci dessous :
---------------------------------------
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
GO
---------------------------------------
> Cette commande restaure la base dans sa configuration d'origine (répertoires pour les fichiers de Log et Base)
---------------------------------------
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
---------------------------------------
> Cette commande restaure la base en spécifiant un chemin donné pour le fichier de base et un autre pour le fichier de Log.
Cordialement
Romelard Fabrice.
cs_dhardy
Messages postés45Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention24 février 2009 17 oct. 2005 à 14:27
Bonjour Fabrice,
Aurais-tu le même type de procédure au niveau de la restauration ?
Je dois faire des transferts d'un base de données réseau vers un portable. La procédure de sauvegarde m'est donc très utile mais je dois la restaurer sur un base de données sur un portable.
Merci
PS : mon adresse e-mail est dha@sigroup.be pour plus de facilité.
13 janv. 2012 à 14:59
j'ai testé cette procédure qui fonctionne très bien , seulement moi j'ai décidé d'en faire 2 procédures , une pour la sauvegarde des bases de données et une pour les journaux des transactions afin de sauvegarder les journaux plus régulièrement que les bases .
J'ai donc essayer de rajouter l'heure aux nom des fichier de sauvegardes des logs ,mais en vain ,l'heure s'écrivant sous cette forme HH:MM:SS ,les : ne sont pas utilisable dans un nom de fichier .. si vous auriez une réponse pour me venir en aide s'il vous plait .. merci
26 janv. 2010 à 11:14
Dans ce cas, il faut mettre le nom de la base entre crochets [xxxxxxx]
Cordialement
Fabrice Romelard [MVP]
26 janv. 2010 à 10:14
J'ai testé cette procédure qui marche très bien néanmoins j'ai un problème concernant une des bases. Le back up ne se fait pas car il semble que le nom de a base comporte un espace.
Il y a t il un moyen de régler ce problème?
merci d'avance.
24 oct. 2009 à 00:54
Cela vient du fait que cette procédure utilise après la sauvegarde un module de compression (standard sous Windows - MakeCab).
Pour exécuter cette commande, on doit utiliser la procédure system de SQL Server "dbo.xp_cmdshell" qui permet d'exécuter des fichiers exécutable dans le contexte SQL Server.
Cette procédure stockée est désactivée de base sous SQL Server 2005 et 2008. Il vous faut chercher dans les options pour la réactiver (je ne me souviens plus exactement ou mais ca doit être dans l'outil danalyse de la surface de mémoire).
Si vous ne voulez pas être géné avec ca, il suffit de désactiver (commentaire devant la ligne -- souc SQL Server) les lignes 129 et 134
Cordialement
Romelard Fabrice [MVP]
23 oct. 2009 à 23:07
J'ai le même questionnement que MATTZ. Est-ce possible d'utiliser cette procédure stockée avec "Microsoft SQL Server Management Studio Express". Si oui, comment faire étape par étape. Moi je réussis seulement à faire un backup de mes BD à partir de l'interface de la console de management ou en générant les scripts, ensuite les exécuter dans des batchs avec la commande sqlcmd. En fait, je me retrouves avec plusieurs batchs et tâches planifiées pour mes backups de BD, ce qui est lourd à gérer. Merci
21 oct. 2009 à 18:50
Est-il possible de limiter l'utilisation du cpu par la sauvegarde?
24 juin 2009 à 09:36
mais en fait je ne vois pas le parametrage de temps d'execution (pendant apres tel periode)
Comment le faire?
merci
12 févr. 2009 à 15:53
La procédure ne fonctionne pas chez moi. Je m'y prends peut-être mal.
J'ai déposé la procédure stoquée dans la base master.
Je l'exécute dans Microsoft SQL Server Management Studio Express. Ce qui le fait planter.
Je l'ai ensuite essayée dans Toad 3.1 pour SQL Server avec la commande : EXEC SP_System_SauvegardesTotales 1, 1, 'C:\BackupExpress2\'
Le message suivant apparaît 11 fois :
"Impossible d'effectuer une sauvegarde ou une restauration dans une transaction.
BACKUP DATABASE s'est terminé anormalement."
Puis
"Requette : master.dbo.xp_cmdshell 'C:\WINDOWS\system32\makecab /V[1] /L C:\BackupExpress2\ C:\BackupExpress2\master.BAK master_2009_02_12.cab', NO_OUTPUT
Requette : master.dbo.xp_cmdshell 'DEL C:\BackupExpress2\master.BAK', NO_OUTPUT
-----------------------------------------------------"
-----------------------------------------------------
BACKUP DE LA BASE DE DONNEES : tempdb
Requette : USE tempdb BACKUP DATABASE tempdb TO DISK ='C:\BackupExpress2\tempdb.BAK'
Requette : master.dbo.xp_cmdshell 'C:\WINDOWS\system32\makecab /V[1] /L C:\BackupExpress2\ C:\BackupExpress2\tempdb.BAK tempdb_2009_02_12.cab', NO_OUTPUT
Requette : master.dbo.xp_cmdshell 'DEL C:\BackupExpress2\tempdb.BAK', NO_OUTPUT
Et ainsi de suite pour chaque base.
J'ai donc utilisé la fonction DEBUG de TOAD.
Ce qui est intéressant, c'est que la fonction PRINT fonctionne correctement lors du debogage du script jusqu'à la ligne EXECUTE
à la fin de
-- 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)
Ensuite, ça mouline, sans sortie PRINT. Jusqu'au message d'erreur affiché plus haut.
Je ne vois pas comment corriger le tir.
Pour info, je suis sur SQL SERVER EXPRESS 2005 SP3.
Merci pour toute précison
5 oct. 2008 à 15:18
19 sept. 2008 à 18:48
24 févr. 2008 à 11:01
la procédure proposée est très instructive et je vous en remercie à titre indivuel, je commence dans le transact SQL et c'est pour moi une veritable bibliothèque.
15 janv. 2008 à 13:46
Ce message n'a aucun rapport avec le sujet de cette source.
Je vous invite à poser votre question sur le forum adéquat.
Cordialement
Romelard Fabrice
15 janv. 2008 à 11:04
a vous fabrice69
est ce qui'l est possible de protéger ma base de données sous sql server ..je m'explique ...j'ai installer sql server dans un PC SERVER jai ma base "COMMERCAILE08" il ya 3 personnes qui ont le mot de passe du server alors comment faire pour les empécher d'acceder carement a entreprise manager ou bien a ma ma base et la consulter
merci a vous tous et bon courage
15 janv. 2008 à 09:43
Le mode "Simple" de journalisation ne fait pas bouger le fichier des logs de transaction.
De ce fait le backup des log ne peut pas se faire.
Je vous invite à lire la documentation sur le sujet :
- http://sql.developpez.com/sqlserver/log/
Cordialement
Romelard Fabrice
15 janv. 2008 à 04:28
j'ai 1 problem sur le backup d'1 fichier journale sous sql server,voila les codes que j'ai fait apré bien sur le buckup complete:
use master
backup log nom_da_la_base to unite2 with noinit
et voila le message d'erreur:
Serveur : Msg 4208, Niveau 16, État 1, Ligne 2
L'instruction BACKUP LOG n'est pas autorisée lorsque le modèle de récupération est SIMPLE. Faites appel à BACKUP DATABASE ou modifiez le modèle de récupération au moyen de sp_dboption.
Serveur : Msg 3013, Niveau 16, État 1, Ligne 2
BACKUP LOG s'est terminé anormalement.
merci pr vetre aide
13 mai 2007 à 11:43
merci a vous fabrice69
alors j'ai mon application vb qui accede a une base de donnée sql server
a partir de mon application je fais un backup :
j'ai cree une procedure stockée en sql server qui a a comme parametre le nom de la base et le chemin :
CREATE PROCEDURE BackupTeste
@base as varchar(800),
@chemin nvarchar(1000)
AS
BACKUP DATABASE @base
To DISK = @chemin
GO
lorsque j'execute mon application sur mon server ( server2005)ca marche tres bien mais quand je l'execute sous reseau( un autre pc(portable2005) sous reseau qui a aussi le sql serveur ça marche pas meme je fais arreté le server portable2005 pour garder que le server2005 mais ça marche pas ) comment faire un backup sous reseau svp et merci pour votre aide
bonne suite
27 avril 2007 à 15:53
17 avril 2007 à 15:24
La commande de backup est la suivante :
- ' BACKUP DATABASE '+ @name +' TO DISK ='''+ @Repertoire + @name +'.BAK'''
Cordialement
Romelard Fabrice [MVP]
17 avril 2007 à 14:48
je trouve que cette procedure est trés compliquée( au moin pour moi)
alors si je veux faire un backup juste a une base de donnée et non pas a toutes les bases de sql quoi changer exactement
merci pour vous
17 oct. 2005 à 14:59
Vous devez utiliser la commande RESTORE, tel que l'exemple ci dessous :
---------------------------------------
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
GO
---------------------------------------
> Cette commande restaure la base dans sa configuration d'origine (répertoires pour les fichiers de Log et Base)
---------------------------------------
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO
---------------------------------------
> Cette commande restaure la base en spécifiant un chemin donné pour le fichier de base et un autre pour le fichier de Log.
Cordialement
Romelard Fabrice.
17 oct. 2005 à 14:27
Aurais-tu le même type de procédure au niveau de la restauration ?
Je dois faire des transferts d'un base de données réseau vers un portable. La procédure de sauvegarde m'est donc très utile mais je dois la restaurer sur un base de données sur un portable.
Merci
PS : mon adresse e-mail est dha@sigroup.be pour plus de facilité.