Comment réaliser une sauvegarde de base MS SQL via un raccourci sur le bureau [Résolu]

virturel 16 Messages postés lundi 7 janvier 2008Date d'inscription 14 décembre 2015 Dernière intervention - 21 janv. 2009 à 00:06 - Dernière réponse : jbi13 2 Messages postés lundi 22 février 2010Date d'inscription 22 février 2010 Dernière intervention
- 22 févr. 2010 à 12:00
Bonjour,

Je souhaite pouvoir créer un raccourci sur le bureau pour lancer une sauvegarde de base de données MS SQL Server.

Pourquoi ? Pour des utilisateurs non informaticiens et réfractaires aux outils MS SQL ! Un double clic sur un raccourci et ça sauvegarde la base complete (pour des sauvegardes ponctuelles avant un traitement par exemple : cloture comptable, facturation...)

Est ce possible ? Si oui comment ?

Merci
Philippe
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
SQLpro 36 Messages postés samedi 17 novembre 2007Date d'inscription 8 février 2012 Dernière intervention - 21 janv. 2009 à 16:34
3
Merci
Vous pouvez mettre dans un .bat la commande suivante :
sqlcmd -E -S??? -Q"BACKUP DATABASE ??? TO DISK = '???'"
ou :
le premier ??? est a remplacer par le nom de votre serveur
le second ??? par le nom de la base
le 3e ??? par un chemin et un nom de fichier de sauvegarde.

A +

Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.

Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Serverhttp://www.sqlspot.com : audit, optimisation, tuning, formation

* * * * * Enseignant au CNAM PACA et à l'ISEN à Toulon * * * * *

Merci SQLpro 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de SQLpro
Meilleure réponse
SQLpro 36 Messages postés samedi 17 novembre 2007Date d'inscription 8 février 2012 Dernière intervention - 26 janv. 2009 à 12:59
3
Merci
Bonjour,

pour la commande OS n'étant pas un spécialiste je ne spuis vous aider. Postez dans un forum spécialisé.
pour une procedure c'est plus simple. Exemple :

CREATE PROCEDURE P_SAVE_DB
   @DB_NAME SYSNAME,      -- nom de la base de données
   @PATH    NVARCHAR(128) -- chemin vers repertoire de sauvegarde, doit contenir le \ en fin de chaîne
AS

DECLARE @SQL NVARCHAR(8000);SET @SQL 'BACKUP DATABASE [' + @DB_NAME + '] TO DISK ''' + @PATH
           + 'SAUVEGARDE_' + REPLACE(@DB_NAME, ' ', '_') + '_'
           + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(32), CURRENT_TIMESTAMP, 121), '/', ''), ' ', '_'), ':', '')
           + '.BAK';
EXEC (@SQL);

GO

Lancement de cette proc :
EXEC MaBase.dbo.P_SAVE_DB 'MaBase', 'C:\Saves\'

A +

Merci SQLpro 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de SQLpro
Meilleure réponse
virturel 16 Messages postés lundi 7 janvier 2008Date d'inscription 14 décembre 2015 Dernière intervention - 28 janv. 2009 à 12:00
3
Merci
Génial ! Ca fonctionne ! Un grand merci.
Juste une précision au cas où d'autres personnes soient intéressées :

En ce qui me concerne : MS SQL Serveur 2005 Express et Windows XP, j'ai du réaliser 2 modifications simples :

DECLARE @SQL NVARCHAR(8000);
en DECLARE @SQL NVARCHAR(4000);

Car 4000 est la taille maxi. Avec 8000 j'ai un message d'erreur.

Et une toute petite modif pour le format de la date (le séparateur est '-' et non '/' chez moi)

+ REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(32), CURRENT_TIMESTAMP, 121), '/', ''), ' ', '_'), ':', '')
           + '.BAK';

en
+ REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(32), CURRENT_TIMESTAMP, 121), '-', ''), ' ', '_'), ':', '')
           + '.BAK';

Et comme j'ai un peu galérer sur le fichier .bat au niveau de la syntaxe, je vous le livre ci dessous (en rouge, le texte à adapter) :
sqlcmd –E –SMonServeur –Q"exec MaBase.dbo.P_SAVE_DB ‘MaBase’, ‘C:\Saves\’ "

Merci encore à Frédéric

Philippe

Merci virturel 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de virturel
virturel 16 Messages postés lundi 7 janvier 2008Date d'inscription 14 décembre 2015 Dernière intervention - 23 janv. 2009 à 14:12
0
Merci
Super !! Merci beaucoup.


Question subsidiaire : comment faire pour que le nom du fichier de sauvegarde (le 3e ???) soit la date et heure du jour ? Par exemple : SvgCompta20090123-14h15.bak


 


Merci encore


Philippe


 
Commenter la réponse de virturel
SQLpro 36 Messages postés samedi 17 novembre 2007Date d'inscription 8 février 2012 Dernière intervention - 25 janv. 2009 à 18:32
0
Merci
Plusieurs solutions :
1) réalisez une procédure stockée dans la base de données qui fait la sauvegarde de la sorte et appelez là toujours par SQLcmd. Exemple si la procédure s'apelle MaBase.dbo.P_SAVE :
sqlcmd -E -S??? -Q"EXEC MaBase.dbo.P_SAVE"
2) à l'aide de scripting du langage de commande de winodws dans un fichier .bat.

A +
Commenter la réponse de SQLpro
virturel 16 Messages postés lundi 7 janvier 2008Date d'inscription 14 décembre 2015 Dernière intervention - 26 janv. 2009 à 00:06
0
Merci
Merci encore une fois.
Pouvez vous me préciser les commandes du fichier bat pour nommer le fichier avec la date et heure du jour ?
Car j'ai trouvé quelques commandes du type : set fichier = SvgCompta%date%%time% ...
Mais je ne peux pas écrire le nom du fichier avec des "/". Bref, je tourne un peu en rond car je ne connais pas bien les différentes commandes dos. En SQL je vais pas mal chercher aussi...

Alors je me suis dit qu'il vaut mieux un qui sait que moi qui cherche !! :-))

Bonne fin de week end
Philippe
Commenter la réponse de virturel
virturel 16 Messages postés lundi 7 janvier 2008Date d'inscription 14 décembre 2015 Dernière intervention - 26 janv. 2009 à 22:41
0
Merci
Merci beaucoup !


Je teste ça demain.


Bonne soirée.


Philippe


 
Commenter la réponse de virturel
SQLpro 36 Messages postés samedi 17 novembre 2007Date d'inscription 8 février 2012 Dernière intervention - 28 janv. 2009 à 17:45
0
Merci
Et une toute petite modif pour le format de la date (le séparateur est '-' et non '/' chez moi)



Non c'est une erreur de ma part. Le format 121 sortira toujours un tiret. Milles escuses !

A +
Commenter la réponse de SQLpro
jbi13 2 Messages postés lundi 22 février 2010Date d'inscription 22 février 2010 Dernière intervention - 22 févr. 2010 à 10:10
0
Merci
Bonjour,

Je viens d'utiliser votre conversation mais je bloque sur le lancement de la procédure stockée dans le .bat

J'ai le message suivant :

C:\Users\jerome>sqlcmd -E -SPAIE -Q"exec P_CIMAT.dbo.P_SAVE_DB'P_CIMAT','\\PAIE\BACKUP\'"
Message 105, niveau 15, état 1, serveur PAIE, ligne 1
Ouvrez les guillemets après la chaîne de caractères '\\PAIE\BACKUP\SAUVEGARDE_P_CIMAT_20100222_100333.657.BAK'.
Message 102, niveau 15, état 1, serveur PAIE, ligne 1
Syntaxe incorrecte vers '\\PAIE\BACKUP\SAUVEGARDE_P_CIMAT_20100222_100333.657.BAK'.

Avez-vous une idée?

D'avance Merci
Commenter la réponse de jbi13
jbi13 2 Messages postés lundi 22 février 2010Date d'inscription 22 février 2010 Dernière intervention - 22 févr. 2010 à 12:00
0
Merci
Pour info,

Configuration : SQL 2008 SP1

voici la procédure stockée :

USE [P_CIMAT]
GO
/****** Object: StoredProcedure [dbo].[P_SAVE_DB] Script Date: 02/22/2010 11:41:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[P_SAVE_DB]
@DB_NAME SYSNAME,
@PATH NVARCHAR(128)
AS

DECLARE @SQL NVARCHAR(4000);
SET @SQL 'BACKUP DATABASE [' + @DB_NAME + '] TO DISK ''' + @PATH
+ 'SAUVEGARDE_' + REPLACE(@DB_NAME, ' ', '_') + '_'
+ REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(32), CURRENT_TIMESTAMP, 121), '-', ''), ' ', '_'), ':', '')
+ '.BAK';
EXEC (@SQL);
Commenter la réponse de jbi13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.