IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Le processus ne peut pas accéder au fichier.. (Exécution script SQL)


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 176
    Points : 58
    Points
    58
    Par défaut Le processus ne peut pas accéder au fichier.. (Exécution script SQL)
    Bonjour,

    Ci-dessous un code qui permet d'exécuter un script SQL depuis une application Windows Forms développée en C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FileInfo fileinfo = new FileInfo(file);
     
    string script = fileinfo.OpenText().ReadToEnd();
     
    SqlConnection conn = new SqlConnection(connectionString);
     
    Server server = new Server(new ServerConnection(conn));
     
    server.ConnectionContext.ExecuteNonQuery(script);
    Le script fonctionne correctement. Le problème c'est que lorsque je veux modifier les fichiers sql qui ont déjà exécutés depuis mon application.

    J'obtiens l'exception suivante :

    "Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus"
    Dans le cas où les scripts n'ont pas encore été exécutés je peux les modifier sinon je suis obligé dans ce cas là de redémarrer l'application.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il manque un Close en fin de traitement, pour fermer le fichier.

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 176
    Points : 58
    Points
    58
    Par défaut
    Merci pour la solution proposée.

    J'ai déjà essayé le close mais n'a rien donné. On ne peut pas l'utiliser avec FileInfo mais avec FileStream.

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Comme Tatayo je pense que tu ouvres ton fichier de script mais ne le ferme pas, du coup il est bloqué par le processus jusqu'à la fermeture de ton application. Et la correction n'est pas bien compliquée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    FileInfo fileinfo = new FileInfo(file);
     
    string script = null;
     
    using(var reader = fileinfo.OpenText()) // ou using(var reader = File.OpenText(file))
    {
      script = reader.ReadToEnd();
    } // comme ça le fichier est fermé avant même le lancement du script
     
    if(string.IsNullOrWhiteSpace(script) throw new Exception("Le fichier de script est vide"); // ou créer une exception custom pour ce problème
     
    SqlConnection conn = new SqlConnection(connectionString);
     
    Server server = new Server(new ServerConnection(conn));
     
    server.ConnectionContext.ExecuteNonQuery(script);
    Je n'ai pas testé mon code mais je ne pense pas qu'il y ait de problème (tout au plus une erreur de syntaxe).

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 176
    Points : 58
    Points
    58
    Par défaut
    Merci ça marche parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 18
    Dernier message: 28/10/2009, 23h17
  2. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  3. Réponses: 7
    Dernier message: 22/08/2008, 16h20
  4. Réponses: 5
    Dernier message: 26/06/2008, 12h28
  5. Erreur : Le processus ne peut pas accéder au fichier
    Par victor72 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 16/03/2007, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo