none
Connection à une BDD sur SQL Serveur 2005 à partir de Visual CSharp 2008 edition Express. RRS feed

  • Question

  • J'ai par inadvertance modifié le type d'un Fichier .mdf avec le programme d'ouverture automatique en cliquant dessus.
     
    Maintenant l'ecran propriété du fichier affiche :
        type du fichier : Fichier MDF (.mdf)                         au lieu de         'Microsoft SQL Serveur Database File' ?
        S'ouvre avec : Microsoft SQL Serveur Manager..       au lieu  de        'Application inconnue'
     
    Cela a l'air de gener la lecture du fichier comme Data Base dans les programmes developpés avec Visual CSharp 2008 edition Express.
     
    Base de Donnée crée avec SQL Serveur 2005 et SQL Serveur Management Studio Express. OS Vista Professionnel.
     
    Lors de la recherche de connection avec un DataGridView au fichier xxx.mdf j'obtiens le message suivant :
     
    "Impossible d'ouvrir le fichier physique
     "M:\Developpement\MSSQL\Data\xxx_log.ldf".Erreur du Systeme d'exploitation 5 : "5(acces refuse)".
    Echec d'une tentative d'attachement d'une base de données nommée
    automatiquent pour le
    fichier M:\Developpement\MSSQL\Data\xxx.mdf. Il existe une base de Données de meme nom ou le fichier spécifié ne peut etre ouvert ou il se trouve sur un partage UNC."
     
     
    Evidemment j'ai verifié qu'il n'a pas d'autre fichier xxx.mdf.
     
    Comment rectifier ceci.
    Merci de votre assistance
    Claude_74
    mercredi 29 octobre 2008 16:53

Réponses

  • Bonjour,

     

    Il semblerait que SQL Server ne peut accéder à votre base de données à cause d'un problème de droit (Erreur 5).

    Avez-vous essayé de donner les droits à "Tout le monde" en lecture / écriture dans le répertoire où se trouve votre base de données ?

     

    Cordialement

     

    vendredi 14 novembre 2008 20:39
    Modérateur
  • Bonjour,

     

    Merci le probléme est résolu.

     

    Merci à tous pour votre aide, en effet il s'agissait bien d'un probleme de sécurité :

     

    Dans SQL Management pour autoriser le Binding sur la Base de Données et sur le fichier xxx.ldf pour mettre les autorisations de l'utilisateur à lire, ecrire, modifier etc...( et éviter de se focaliser seulement sur xxx.mdf).

     

    Encore Merci

    Claude_74

     

    lundi 17 novembre 2008 16:36

Toutes les réponses

  • Bonjour,

     

    Cette erreur peut provenir de :

    • Soit SQL Server ne dispose pas des droits nécessaires pour accéder au fichier .mdf
    • Soit il existe déjà une base de données présente dans SQL Server qui posède le même nom logique que votre base de données .mdf.

    Le lecteur M: est-il un lecteur réseau ?

     

    Cordialement

    jeudi 30 octobre 2008 20:44
    Modérateur
  • Hello,

    M: est une partition sur un deuxieme disque local oû ne se trouve pas le C:

    J'ai fait une recherche sur xxx*.* sur toutes mes partitions, je n'ai pas trouvé de deuxieme nom.

    Pour les droits : c'est un peu compliqué pour savoir si ils sont correctes. J'ai regardé mais je ne trouve rien de particulier ; mais je ne suis pas un expert.

     

    Merci de votre reponse

    Claude_74

     

    vendredi 31 octobre 2008 17:21
  • Bonjour,

     

    Sous SQL Management Studio, avez vous essayé de voir s'il existe déjà une base de données qui dispose d'une même nom logique (au niveau de SQL Server, et non physique au niveau fichiers Windows).

     

    Si non, essayez de joindre votre base de données manuellement via SQL Management Studio et indiquez nous si vous obtenez la même erreur.

     

    Cordialement

     

    samedi 1 novembre 2008 12:59
    Modérateur
  • Hello,

    Je me connecte sans probleme, via SQL Server Management Studio, à cette base de donées que j'ai d'ailleur moi-meme crée avec cette outil sur SQL Serveur 2005.

     

    Il n'y a q'une seule Base portant ce nom visible dans l'explorateur d'objet de SQL Server Management Studio : Authentification Windows, crée sous le meme utilisateur que le programme en C#.

     

    Merci

    Cordialement

    Claude_74

     

    lundi 3 novembre 2008 09:21
  • Bonjour,

     

    Pouvez-vous nous montrer votre chaine de connexion que vous utilisez en C# pour vous connecter à votre base de données ?

     

    Cordialement

     

    lundi 3 novembre 2008 18:05
    Modérateur
  • Bonjour,

    Je n'ecris pas de code, je me sers du DataGridView que je transporte sur ma Form de Base.

     

    Onglet : Taches DataGridView : Choisir la source de données

    Ajouter la source de donnees du : affiche Asistant Configuration de source de données

    Selection : Base de Données > Choisir votre connexion de données > nouvelle connexion

    Ecran  : Ajouter une connection

    Source de données : Choix SQL Serveur : OK

    Nom de fichier de base de donnée : Choix chemin complet du xxx.mdf : OK

     

    Affichage de la boite de Dialog d'erreur envoyée dans mon premier msg.

     

    Merci,

    Cordialement

    Claude_74

     

     

     

     

     

    lundi 3 novembre 2008 19:13
  • Bonjour,

     

    OK, le problème c'est que vous avez une base de données qui est déjà attachée avec un nom logique XXXXX (cf. le précédent poste).

    Or, dans l'assistant configuration de source de données vous êtes certainement en train de joindre une base de données qui doit porter le même nom logique XXXXX.

     

    Détachez donc votre base de données qui est présente dans SQL Management Studio.

     

    Cordialement

    lundi 3 novembre 2008 19:28
    Modérateur
  • Bonjour,

     

    Le nom logique dans sqlServeurManagement 2005 est xxx , le nom physique, crée par sqlServeurManagement sur le dique est xxx.mdf et xxx_log.ldf.

     

    Dans MicrosoftVisualC# 2008 j'attache le nom physique vu sur le disque au travers de la boite de dialog de recherche de fichier soit xxx.mdf.

     

    Il n'y a pas d'autre nom physique xxx*.* sur l'ordinateur. Il n'y a qu'une seule base avec un mon logique xxx dans sqlServeurManagement.

     

    Question : Comment detacher ma base de données presente dans SQL Management Studio ?

     

    Encore merci, Cordialement,

    Claude_74

    mardi 4 novembre 2008 10:17
  • Bonjour,

     

    Est-ce que vous avez utilisé un produit Visual Studio Express ( VC# ) pour developper le programme ?

    Si c'est le cas, pourriez-vous vérifier que dans la chaîne de connexion , vous n'auriez pas user instance = true ?

    ( VC#/VB# express n'utilisent que des connections avec user instances = true si vous utilisez le Wizard de connexion à une base Sql Server Express 2005/2008 )

    Attention, la particularité des user instances est spécifique à Sql Server Express 2005/2008 et il y a de gros bruits de couloirs indiquant que cette spécificité ne searait plus supportée dans la prochaine version ( 2010/2011 )

     

    Bonne journée

     

    PS : en cas de user instance, il y a création d'une nouvelle base de données ( copie de l'original ) située dans mes Documents de l'utilisateur du programme ( d'où des risques de problème d'accès refusé )

     

    mercredi 5 novembre 2008 15:41
  • Bonjour et Merci pour votre Réponse.

     

    C'est vrai j'utilise Visual Studio Express VC#.

    Par defaut, VC# propose par default : user instance à true.

    J'ai laissé tous les parametres de connexion par default sauf ceux que j'ai indiqués.

    Mais si je place User instance à false : J'ai exactement le meme message.

     

    Si je positionne la sécurite à false , j'obtiens le message : "Echec de l'ouverture de session de l'utilisateur". L'utilisateur n'est pas associé à une connexion SQL Serveur approuvée. (Je suis le createur de la base sous le meme user de type administrateur).

     

    Cordialement

    Claude_74

     

    jeudi 6 novembre 2008 12:45
  • Bonjour,

     

    S'il vous plaît, pourriez-vous nous fournir quelquerenseignements complémentaires  ?

    - votre chaîne de connexion complète

    - vôtre instance Sql Server est-elle sur le même PC que celui sur lequel vous avez votre VC# Express

     

    Code Snippet
    L'utilisateur n'est pas associé à une connexion SQL Serveur approuvée

     

     

    en général, signifie que vous utilisez l'authentifiction Sql Server ( ou mixed ) et non l'authentification Windows

     

    Nous attendons vôtre réponse pour tenter de vous aider plus efficacement

     

    Bonne journée

     

     

     

    dimanche 9 novembre 2008 21:33
  • Bonjour et Merci de votre reponse,

     

    Je n'ai pas le message que vous citez, Mais :

    "

    "Impossible d'ouvrir le fichier physique
     "M:\Developpement\MSSQL\Data\xxx_log.ldf".Erreur du Systeme d'exploitation 5 : "5(acces refuse)".
    Echec d'une tentative d'attachement d'une base de données nommée
    automatiquent pour le
    fichier M:\Developpement\MSSQL\Data\xxx.mdf. Il existe une base de Données de meme nom ou le fichier spécifié ne peut etre ouvert ou il se trouve sur un partage UNC."

    "

    L'instance Sql Server est sur le même PC que celui sur lequel est VC# Express.

     

    J'utilise l'authentification Windows.

     

    J'utilise les parametres par defaut du DataGridView : "ou xxx est le nom de ma base de données" soit :

    "

    Data Source=.\SQLEXPRESS;AttachDbFilename=M:\Developpement\BD_maison\MSSQL\Data\xxx.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

    "

    J'ai modifie le nom logique en xxxdb pour le differancier du nom physique xxx.mdf : cela ne change rien au message.

     

    Par contre je me demande si la modification du type de fichier (voir mon premier message) n'a pas de lien avec ce probleme. Mais je n'ai pas trouvé le moyen de remettre les attributs d'origine. Ma fenetre "Options des dossiers" ne possede pas l'onglet "Types de fichiers".

     

    Merci de votre attention

    Claude_74

    mercredi 12 novembre 2008 09:19
  • Bonjour,

     

    Il semblerait que SQL Server ne peut accéder à votre base de données à cause d'un problème de droit (Erreur 5).

    Avez-vous essayé de donner les droits à "Tout le monde" en lecture / écriture dans le répertoire où se trouve votre base de données ?

     

    Cordialement

     

    vendredi 14 novembre 2008 20:39
    Modérateur
  • Bonjour,

     

    Merci le probléme est résolu.

     

    Merci à tous pour votre aide, en effet il s'agissait bien d'un probleme de sécurité :

     

    Dans SQL Management pour autoriser le Binding sur la Base de Données et sur le fichier xxx.ldf pour mettre les autorisations de l'utilisateur à lire, ecrire, modifier etc...( et éviter de se focaliser seulement sur xxx.mdf).

     

    Encore Merci

    Claude_74

     

    lundi 17 novembre 2008 16:36
  • Moi je veux attacher ma base de donnée a mon interface C#. tu peux bien m'aider !!

    merci d'avance !!

    .


    Martin CORREA Débutant développeur Visual studio 2008
    jeudi 2 septembre 2010 17:53