Probleme lors de la copie de la bdd ( le fichier et en cours d'utilisation ) [Résolu]

Messages postés
6
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
31 juillet 2009
- - Dernière réponse : Flysteur
Messages postés
6
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
31 juillet 2009
- 31 juil. 2009 à 15:40
Bonjour, je sollicite votre aide car j'ai un petit souci avec mon programme en faite je voudrai à chaque fois que je quitte le programme qu'il effectue une copie de la base de donnée mais lorsqu'il commence la copie j'ai le message d'erreur : Le processus ne peut pas accéder au fichier 'C:\database1.mdf', car il est en cours d'utilisation par un autre processus.

Pour copier le fichier j'utilise : File.Copy("C:\Database1.mdf", "E:/bdd/backupbdd.mdf")

Je suppose que ces la chaine de connexion qui n'est pas fermer donc elle utilise toujours la base de donnée mais malgré mais recherche et mes tentative close() dispose() je n'ai malheureusement pas réussi à la fermer, si quelqu'un a une idée je suis preneur.

Merci beaucoup
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
Ici, un exemple de backup en ligne de commande trouvé dans l'aide de SQL Server
http://code.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=ExpressBackups&referringTitle=ExpressMaintenance


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
Salut
En effet, il faut faire un .Close sur l'objet avec lequel tu as établi la connexion.
Si tu as plusieurs connexions, il faut les fermer aussi.

Oups. MDF, ce sont des extensions SQL Server ça, non ?
Le problème peut-être plus complexe ...
Es-tu délogué de SQL Server ?
N'existe t-il pas une commande plus 'pro' dans SQL Server pour faire un backup, que de copier le fichier principal, parce qu'il y a d'autres fichiers qui 'vivent' aussi, genre LDF, NDF ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
Ouvre l'aide de SQL Server et tape 'backup'
Il doit falloir se loguer en admin, sans connexion à une DB, pour permettre cette manip.
Commenter la réponse de cs_Jack
Messages postés
6
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
31 juillet 2009
0
Merci
Merci de votre réponse, je me suis documenter grâce a l'aide de SQL server pour faire un backup de la bdd mais j'ai l'impression que l'on ne peu le faire uniquement si la bdd et rattacher au projet or j'utilise une chaine de connexion qui va la récupérer dans mon répertoire C:\ :

connexion = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Database1.mdf;Integrated Security=True;User Instance=True"


J’ai essayé d'utiliser :

BACKUP DATABASE Database1 TO DISK = 'E:\bdd\bdd.Bak'

Mais cela n'a visiblement pas fonctionné car il me retourne une erreur :
Impossible de trouvé l'entrée dans sysdatabases pour la base de donnée 'Database1'

J'aurai cependant bien aimé approfondir la façon d'on on ferme la connexion car j'ai beau essayer d'utiliser close ou dispose la connexion ne ce ferme jamais sauf quand je ferme le programme bien sure

Voici ma classe pour la connexion :
Imports System.Data
Imports System.Data.SqlClient
Public Class chargement
    Private CMX As System.Data.SqlClient.SqlConnection
    Private CMD As System.Data.SqlClient.SqlCommand
    Private DS As System.Data.DataSet
    Private DA As System.Data.SqlClient.SqlDataAdapter
    Private requete, connexion As String


    Sub New()
        connexion = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Database1.mdf;Integrated Security=True;User Instance=True"
        CMX = New System.Data.SqlClient.SqlConnection(Me.connexion)
        Me.CMD = New System.Data.SqlClient.SqlCommand(Me.requete, Me.CMX)
        Me.DA = New System.Data.SqlClient.SqlDataAdapter(Me.CMD)
        Me.DS = New Data.DataSet
    End Sub

    Public Function chargement(ByVal requete As String, ByVal donnees As String)

        Me.DS.Clear()
        Me.requete = requete
        Me.CMD.CommandText = Me.requete
        Me.DA.Fill(Me.DS, donnees)
        Return Me.DS

    End Function


Et ensuite pour chaque requête j’utilise :
Me.Objdonnees = New chargement()
Requete = "la requête"
Me.DS = Me.Objdonnees.chargement(Requete, "TABLE")


Merci beacoup de ton aide
Commenter la réponse de Flysteur
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
0
Merci
Oui, en fait, les connexions à SQL Server sous-entendent que tu te lies avec une base de donnée (paramètre AttachDBFileName)
Il faut donc, à mon avis, se connecter à SQL Server avec un login niveau admin mais sans se lier à une DB, ça doit être faisable.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
6
Date d'inscription
mercredi 9 juillet 2003
Statut
Membre
Dernière intervention
31 juillet 2009
0
Merci
Merci beaucoup cela a l'air de fonctionner, cependant j'aurai une dernière petit question lorsque je close() ou dispose() la connexion elle est bien fermer mais alors pourquoi le fichier Database1.mdf n'est pas libérer ?
Y aurait’ il une solution pour libérer le fichier ?
Commenter la réponse de Flysteur