|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2004 Messages : 24 ![]() |
Bonjour tout le monde
Pour mon script de restauration j'ai besoin de faire un restore filelistonly. En effet il faut que je récupére le nom du fichier de données pour restaurer mes bases. Le problème est que certains fichiers de données finissent par _Dat et d'autres par _Data !! restore filelistonly permet de connaître le vrai nom de chaque fichier de données. En effet il renvoie un jeu de résultats avec le premier champ 'LogicalName' qui concerne les noms des fichiers de données et de logs. Voici ma ligne : Code :
restore filelistonly FROM disk='c:\backup\MA_BASE Visiblement ce n'est pas possible d'utiliser un curseur. Si quelqu'un peut me dire comment récupérer la valeur ce champ pour l'utiliser dans mon restore database, ça m'aiderait beucoup. Merci Nicolas |
|
|
00
|
|
|
#2 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2004 Messages : 24 ![]() |
Bon je n'ai peut être pas été très clair.
J'ai un script qui sauvegarde automatiquement les bases d'un serveur et met les fichiers de sauvegarde dans un répertoire. J'en ai un autre qui restore automatiquement ces bases en fonction du répertoire dans lequel se trouvent les fichiers de sauvegarde. le problème est au niveau de la commande RESTORE. Code :
exemple : Gestion_Data. Pour l'obtenir, c'est simple, je concaténe le nom de ma base de donnée (déjà stocké dans la variable @database_name) avec _Data. exemple : Code :
SET @database_data = @database_name + '_data Le problème et que certain fichiers de données finissent par _Dat au lieu de _Data. Donc le script ne marche pas pour les bases dont le fichier finit par _Dat Il faut donc que j'aille chercher directement le nom du fichier de données au lieu de le fabriquer. c'est pour ça que j'ai pensé au restore filelistonly qui renvoie bien le nom du fichier de données mais je ne sait pas comment le récupérer. J'ai aussi pensé à stocker les nom des fichiers de données dans le script de sauvegarde soit dans un fichier soit dans une table temporaire. Mais je ne vois pas trop comment faire. Si quelqu'un a compris mon charrabia et à une idée ça m'aiderait beaucoup Merci d'avence Nicolas |
||
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() Inscription : août 2002 Messages : 355 ![]() |
Slt,
J'ai ecrit il ya quelques temps une procedure qui fait cela, voila le code, tu peux t'en inspirer : Code :
a+
__________________
One ring to rule them all, One ring to find them, One ring to bring them all And in the darkness bind them. |
||
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2004 Messages : 24 ![]() |
Merci Gandalf, c'est exactement ce que je voulais !!!
A marche niquel maintenant @ bientôt Nicolas |
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() Inscription : mai 2009 Messages : 2 ![]() |
Il sera necessaire de rajouter des bloc begin try afin de rendre cette procedure plus exploitable
Citation:
|
|||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
La procédure de Gandalf Le Blanc au niveau des KILL est tout à fait catastrophique.... C'est hélas un script que l'on voit régulièrement sur le net.
Le problème est qu'il n'empêche nullement qu'un utilisateur se reconnecte. Or quand un sait qu'un KILL fait un rollback et qu'un ROLLBACK peut prendre du temps, il est certain qu'en production cela sera épouvantable. De plus Gandalf utilise des appels à des tables système qui n'existe plus depuis la version 2005, soit 2 versions de retard, exemple : sysprocesses et sysdatabases ! C'est d'autant plus navrant qu'il existe une commande directe et immédiate pour faire tout cela et depuis au moins la version 2000 de SQL Server : Code :
ALTER DATABASE <mabase> SET SINGLE_USER WITH ROLLBACK IMMEDIATE Ensuite on peut faire ce que l'on veut comme un ALTER DATABASE <mabase> SET OFFLINE suivi par exemple d'un RESTAURE avec l'option REPLACE ! Enfin, la fin du script est navrante aussi car truffée d'erreurs : 1) on suppose qu'il n'y a toujours qu'un seule fichier de sauvegarde dans le device (FILE = 1) ce qui peut être faux. 2) on suppose qu'il n'y a qu'un seul fichier de données et qu'un seul fichier du JT ce qui est tout aussi probablement faux... Bref, un petit cours d'administration serait un plus ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
Copyright © 2000-2012 - www.developpez.com