TUTOS.EU

Préparer une restauration SQL server

Script de génération de commandes de restauration de bases MS SQL

Collez le script dans le répertoire contenant les backups à restaurer.
Chaque répertoire doit porter le nom de la base SQL qui doit être restaurée.

Lancez le script, suite à quoi un fichier contenant les commandes de restauration apparaîtra.

'Version du 22 mars 2012
'Maj du 28/04/2017 : Modification pour restaurer les backups des bases qui sont dans des sous-répertoires
'http://www.chdb.eu/?n=3112
'Script d aide à la restauration de tout un lot de bases SQL.
'Ce script se place dans le répertoire contenant les fichiers de backups à restaurer
'Il génèrera un fichier avec des commandes de restauration indiquant une modification de l'emplacement des bases et logs SQL
'Restera à contrôler les commandes avant exécution
'Quand il y a une vingtaine de bases par exemple à restaurer, cela aide ...

Dim objFSO 'Objet FSO pour l'accès au système de fichiers
Dim MyFile 'Représente un fichier
Dim objTextFile 'Représente le fichier texte qui contient les réponses
Dim NomBase

'Déclaration des constantes pour la lecture et l'ecriture dans les fichiers
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8


CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichierResultat = CheminScriptActuel & "\" & "Fichier de Sortie.txt"
CheminRepertoireAExplorer = InputBox("Entrez le chemin du répertoire avec les backups","Chemin du répertoire",CheminScriptActuel)
CheminFichierResultat = InputBox("Entrez le chemin du fichier contenant le resultat","Chemin du fichier de reponse",CheminFichierResultat)

'Création des objets
Set objFSO = CreateObject("Scripting.FileSystemObject")

'On fait un objet qui représente le répertoire à explorer
Set objFolder = objFSO.GetFolder(CheminRepertoireAExplorer)
Set objTextFile = objFSO.OpenTextFile(CheminFichierResultat, ForWritting, True)

For Each ObjSubFolder In objFolder.SubFolders
	For Each MyFile In ObjSubFolder.Files
		If ExtensionFichier(MyFile.Name) = "bak" Then
			'NomBase = MyFile.Name
			'NomBase = Left(NomBase,(Len(NomBase)-4)) 'On retire l'extension .bak
			NomBase = ObjSubFolder.Name
			
			'Wscript.Echo NomBase
			objTextFile.WriteLine("RESTORE DATABASE """ & NomBase & """ FROM DISK = '" & MyFile.Path & "' with Replace")
		End If
	Next
Next

objTextFile.Close
Set objTextFile = Nothing
Set objFolder = Nothing
Set objFSO = Nothing

Wscript.Echo "Termine !"

Public Function ExtensionFichier(ByVal CheminFichier)

	'Retourne l'extension du fichier

	Dim Position

	ExtensionFichier = ""
	Position = InStrRev(CheminFichier,".")
	If (Position > 0) And (Position < Len(CheminFichier)) Then
		ExtensionFichier = Mid(CheminFichier,Position+1)
	End If

End Function
Lien vers le fichier : cliquez ici