Bonjour à tous,
cette question aurait aussi bien ça place dans la section Sql Server mais je poste ici quand meme parce que la nécessité de pouvoir le faire depuis l'applicatif VB.NET est primordiale.
Donc je développe un petit module qui devrait permettre de faire des sauvegardes et restaurations à chaud de la base SqlServer utilisé par mon appli. Je sauvegarde ma base de cette manière :
Ce code me génère donc un fichier .bak dans un dépot qui rassemble toutes les sauvegardes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim Sql, nomfichier As String nomfichier = "SAV" & Now.ToString("s").Replace(":", "-") ConnectBD(Conn) Sql = "BACKUP DATABASE GPAO TO DISK=N'" & depot & nomfichier & ".bak '" Conn.Execute(Sql) DeconnectBD(Conn)
Pour charger (et donc remplacer ma base courante), je procède comme ceci :
Quand je tente un chargement d'une sauvegarde, j'ai le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim Sql, nomfichier As String nomfichier = backups.GetItemText(backups.SelectedItem) ConnectBD(Conn) ' KILL DE TOUTES LES CONNEXIONS ACTIVES A LA BASE 'Sql = " SELECT 'kill', spid FROM sysprocesses WHERE dbid=db_id('GPAO');" 'Conn.Execute(Sql) ' EXECUTE LA RESTAURATION Sql = "RESTORE DATABASE GPAO FROM DISK=N'\\serveurfm\d\bob\backup\" & nomfichier & "';" Conn.Execute(Sql) DeconnectBD(Conn)
Effectivement, pour pouvoir exécuter ma requete RESTORE, j'utilise une connexion à cette meme base GPAO (je vous mettrai ma procédure ConnectBD si nécessaire)... Donc j'imagine qu'il n'est pas capable de remplacer la base de données GPAO puisque je suis actuellement connecté dessus !Impossible de remplacer le fichier 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\GPAO.mdf' car il est utilisé par la base de données 'GPAO'.
Mais comment faire dans ce cas ?
Merci pour votre aide.
Bob
Partager