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

Bases de données Delphi Discussion :

Comment se connecter à une base de données MDF sur un serveur avec delphi7 ?


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut Comment se connecter à une base de données MDF sur un serveur avec delphi7 ?
    Bonjour,

    J’ai une application Delphi7 (exécutable) sur une machine client sous un réseau local et une base de données MDF gérée par SQLServer 2005 sur un poste serveur.

    Quelles sont les étapes pour que mon programme (Source de projet) se connecte à cette base de données sans utiliser le partage de dossier de la base ?

    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    Il n'y a rien à partager, il suffit d'ouvrir le port adéquat pour accéder à la base en TCP/IP.

    Détails ici

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut Message d'erreur !
    Sous le poste client dans la boite de dialogue ADOConnection1 le nom de serveur s’affiche dans la case ‘sélectionnez ou tapez un nom du serveur’ comme suit : BA\SQLEXPRESS mais temps que sélectionnez la base de données sur le serveur s’affiche le message d’erreur suivant :
    ‘[DBNET]ConnectionOpen(Connect())Ce serveur SQL n’existe pas ou son accès est refusé’

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    est-ce que le serveur est bien paramétré pour accepter les connexions en TCP/IP ainsi que l'authentification sql server et pas seulement par compte windows ?

    Détails ici

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut un autre message d'erreur
    Sous le serveur et le poste client :

    Par feu Windows – Exceptions – Ajouter un port – TPC 1433 – ok
    Par feu Windows – Exceptions – Ajouter un port – UDP 1434 – ok


    Message d'erreur modifié comme suit :

    login faild for user 'BA\Invité'.

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    et tu te connectes avec quel compte utilisateur ? L'utilisateur sa avec le mot de passe correspondant ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut Création de l’utilisateur
    Le Windows XP Service Pack3 installé sur touts les poste de réseau local

    Sous le serveur j’ai crié l’utilisateur comme suit :

    Démarrer – exécuter – control userpasswords2 – ok – comptes d’utilisateurs – onglet utilisateur – ajouter – nom d’utilisateur = DJBUD , nom complet = DS , description = DJS – suivantes – mot de passe = 1979 – cocher utilisateur standard (group des utilisateur avec pouvoir) – terminer - ok

    //

    Apple le même utilisateur sous SQL Server comme suit :

    Démarrer – SQL Server management Studio Express – BA\SQLExpress (SQL Server 9.0.1399-BA\Administrateur) – security – logins – new login login name – search – recherche – choisir dans le résultat DJBUD – ok – cocher Windows authentification – defaut database = BUD - ok

    //

    Création de même utilisateur sous le poste client comme suit :

    Démarrer – exécuter – control userpasswords2 – ok – comptes d’utilisateur – onglet options avancées – gérer les mots de passe – ajouter – serveur = BA, nom d’utilisateur = BA\DJBUD
    , mot de passe = 1979 – ok – fermer – ok

    //

    Démarrer – exécuter – secpol.msc /s – ok – stratégies local – options de sécurité – double clique sur ‘Accès réseau : modèle de partage et sécurité pour les compte locaux’ depuis choisir Classique : les utilisateur locaux s’authentifient eux même – appliquer - ok

    //

    Sous le serveur et le poste client :

    Par feu Windows – Exceptions – Ajouter un port – TPC 1433 – ok
    Par feu Windows – Exceptions – Ajouter un port – UDP 1434 – ok

    //

    Démarrer – Microsoft SQL Server 2005 – configuration tools -SQL Server Surface Area Configuration – Surface Area Configuration for services and connections – remote connection – local and remote connection – using both TCP/IP and named pipes – apply - ok – SQLEXPRESS – database Engine – servie – stop – apply – ok – start - apply – ok (redémarrage de servie)

    //

    Démarrer – SQL Server management Studio Express – propriété de BA\SQLExpress (SQL Server 9.0.1399-BA\Administrateur) – connections – cocher ‘Allow remote connections to this server’ – ok

    //

    Démarrer – Microsoft SQL Server 2005 – configuration tools – SQL Server configuration Manager – Protocoles for SQLEXPRESS – Double clique sur TCP/IP – enabled = yes , listen all = yes – ok

    //

    Démarrer – exécuter – odbcad32.exe – ok – source de données utilisateur – ajouter – SQL Server - terminer – nom = DS, description = DJS , serveur = BA\SQLEXPRESS – suivant – avec l’authentification Windows NT par L’ID de connexion réseau – Se connecter à SQL Server pour obtenir les paramètres par défaut pour les options de configuration supplémentaires – suivant – s’affiche le message d’erreur suivant :

    Echec lors de la connexion :
    Etat SQL : ‘28000’
    Erreur SQL Server : 18456
    [Microsoft][ODBC SQL Server Driver][SQL Server] Login failed for user ‘BA\Invité’.


    Aide moi SVP

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    Tout cela me parait bon !
    A part le nom d'utilisateur "invité" !
    Est-ce que tu es admin sur ton poste d'où tu essaies de te connecter ?

    Sinon, un extrait du site Microsoft sur une cause possible:

    Motif de l'erreur Échec d'une tentative de connexion à l'aide de l'authentification SQL Server. Le serveur est configuré en vue de l'authentification Windows uniquement. peut être retourné dans les situations suivantes.

    Lorsque le serveur est configuré pour une authentification en mode mixte et qu'une connexion ODBC utilise le protocole TCP, la connexion ne spécifie pas de manière explicite que la connexion doit utiliser une connexion approuvée.

    Lorsque le serveur est configuré pour l'authentification en mode mixte et qu'une connexion ODBC utilise des canaux nommés, les informations d'identification utilisées par le client pour ouvrir le canal nommé servent à emprunter automatiquement l'identité de l'utilisateur et la connexion ne spécifie pas de manière explicite que la connexion doit utiliser une connexion approuvée.

    Pour résoudre ce problème, incluez TRUSTED_CONNECTION = TRUE dans la chaîne de connexion.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut 'TRUSTED_CONNECTION = TRUE' !!
    Plus de détails pour:

    TRUSTED_CONNECTION = TRUE dans la chaîne de connexion

    et comment sous Delphi7 ou SQL Server 2005?

  10. #10
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    et cette connexion, tu essaies de la créer sur le poste distant ?
    si tu essaies sur le poste où se trouve le serveur, ça donne quoi ?

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut sur le poste distant
    -La connexion sur le poste distant
    -Le message d'erreur s'affiche sur sur le poste distant (Client)

    Login failed for user ‘BA\Invité’

    aprés d'executer ce code delphi 7:

    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString :=
    'Driver=SQLServer};Server=BA\SQLEXPRESS;Database=BUD;Trusted_Connection=yes;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;

  12. #12
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    essaies ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString :=
    'Driver=SQLServer};Server=BA\SQLEXPRESS;Database=BUD;User Id=DJBUD;Password=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut toujours problème !
    Merci beaucaup pour la réponse mais après l’execution s’affiche le message suivant :

    Le projet trusted.exe a provoqué une classe d'exception EOLeException avec le message 'Attribut de chaîne de connexion non valide'. Processus stoppé. Utilisez Pas à pas ou Exécuter pour continuer

  14. #14
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 476
    Points : 3 099
    Points
    3 099
    Par défaut
    erreur de typo, une accolade en trop:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString :=
    'Driver=SQLServer;Server=BA\SQLEXPRESS;Database=BUD;User Id=DJBUD;Password=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut Toujours même problème !
    Toujours même message d'erreur

    'Attribut de chaîne de connexion non valide'

    Merci

  16. #16
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 584
    Points : 25 251
    Points
    25 251
    Par défaut
    La référence SQL Server 2005 connection strings

    tu utilises la forme SQL Server Native Client 10.0 OLE DB Provider - Connection to a SQL Server instance

    Essaye de remplacer 'Driver=SQLServer;...
    par le nom complet 'Driver={SQL Server Native Client 10.0};...
    faut utiliser le nom de driver installé dans ton ODBC

    Pense qu'il y a un assistant pour créer la chaine de connexion
    SQLServer tout simple me fait plus penser au driver du BDE pour SQL Serveur que celui pour ADO

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut impossible de trouver le fournisseur il est peut être mal installé !
    Après ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Driver={SQL Server Native Client 10.0};Server=BA\SQLEXPRESS;Database=BUD;User Id=DJBUD;Password=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;
    S’affiche le message suivant : 'Attribut de chaîne de connexion non valide'

    Et après ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Provider=SQLNCLI10Server=BA\SQLEXPRESS;Database=BUD;Trusted_Connection=yes;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;
    S’affiche le message suivant : impossible de trouver le fournisseur il est peut être mal installé

    -Pour quoi lorsque j’ai essai de crier une nouvelle source de données utilisateur pour SQL Server comme suit :

    Démarrer – exécuter – odbcad32.exe – ok – source de données utilisateur – ajouter – SQL Server - terminer – nom = DS, description = DJS , serveur = BA\SQLEXPRESS – suivant – avec l’authentification Windows NT par L’ID de connexion réseau – Se connecter à SQL Server pour obtenir les paramètres par défaut pour les options de configuration supplémentaires – suivant – s’affiche le message d’erreur suivante :

    S’affiche le message suivant :

    Echec lors de la connexion :
    Etat SQL : ‘28000’
    Erreur SQL Server : 18456
    [Microsoft][ODBC SQL Server Driver][SQL Server] Login failed for user ‘BA\Invité’.

    SVP La solution par étapes définies

    Merci

  18. #18
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 584
    Points : 25 251
    Points
    25 251
    Par défaut
    Avant de te connecter en Delphi, il faut que tu puisse utiliser odbcad32 correctement

    Pense qu'il y a une section des experts SQL Server
    On peut t'aider à créer une ConnectionString si tu arrives via des outils standard comme odbcad32 à faire fonctionner la connection

    les outils SQL Server trichent, pour faire fonctionner odbcad32 il faut bien connaitre son SGBD
    Une fois odbcad32 fonctionnel, tu pourras revenir sur Delphi

    SQL Server n'est pas du tout ma spécialité, j'utilise Sybase Anywhere proche en terme de SQL et d'une simplicité de déploiement

    En DBExpress,
    sous D2007, on utilisait l'alias ODBC (indispensable pour Crystal Report 8 et 12)
    sous XE2, on utilise directement le nom du serveur, plus proche de ce que tu fais actuellement même si CR utilise toujours l'alias ODBC (une DB système et non utilisateur pour une utilisation via un Service Windows)

    En ADO, je me suis fait un mini explorateur, j'utilise une simple chaine de connexion lié à l'alias ODBC
    Le même exe fonctionne sur MySQL, Sybase et Oracle, juste en changeant la chaine ConnectionString mais en passant toujours par l'alias ODBC, tellement plus simple (hormis login\pw évidemment)


    Citation Envoyé par Powerdj Voir le message
    Après ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Driver={SQL Server Native Client 10.0};Server=BA\SQLEXPRESS;Database=BUD;User Id=DJBUD;Password=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;
    S’affiche le message suivant : 'Attribut de chaîne de connexion non valide'
    C'est normal {SQL Server Native Client 10.0}; ne connait pas User Id et Password mais Uid et Pwd

    Attention, les paramètres comme User id\Uid ou Password\Pwd n'ont pas le même nom selon le driver\provider utilisé !
    Il faut être rigoureux à ce sujet

    Veille à bien lire le contenu de SQL Server 2005 connection strings
    Il y a des nombreuses méthodes différentes, il faut utilise la syntaxe ODBC ou OLE DB Provider et pas celle du .NET

    Citation Envoyé par Powerdj Voir le message
    Et après ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Provider=SQLNCLI10Server=BA\SQLEXPRESS;Database=BUD;Trusted_Connection=yes;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;
    S’affiche le message suivant : impossible de trouver le fournisseur il est peut être mal installé
    Il y a une faute !
    il manque le ; entre SQLNCLI10 et Server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Provider=SQLNCLI10Server=BA\SQLEXPRESS;Database=BUD;Trusted_Connection=yes;';

    Par contre, je n'utilise JAMAIS l’authentification Windows NT, puisque je ne fais jamais de SQL Server, j'ignore comment cela fonctionne exactement


    Essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Provider=SQLNCLI10;Server=BA\SQLEXPRESS;Database=BUD;Uid=DJBUD;Pwd=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := 'Provider=SQLNCLI;Server=BA\SQLEXPRESS;Database=BUD;Uid=DJBUD;Pwd=1979;';
    ADOConnection1.Connected := true;
    ADOQuery1.Active := true;


    Ne change pas tout à chaque fois, ne modifie qu'un seul paramètre sinon on se perd

  19. #19
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 12
    Points
    12
    Par défaut La connexion est bonne mais !!
    Ça marche avec ça : Provider=SQLOLEDB.1;

    1- La connexion est bonne avec les composants ADOConnection1, ADOQuery1 et les enregistrements s’affiche sur le composant DBGRID sur le programme client, mais temps que fait une modification sur un certain enregistrement concerne le champ ANNEE type (int) avec le composant DBNavigator1 ou avec ce code :

    ADOQuery1.Open;
    ADOQuery1.Edit;
    ADOQuery1.FieldByName('ANNEE').AsString := Edit5.Text;
    ADOQuery1.Post;

    Ou ce code :

    ADOQuery1.Open;
    ADOQuery1.Edit;
    ADOQuery1.FieldByName('ANNEE').AsInteger := strtoint(Edit5.Text);
    ADOQuery1.Post;

    S’affiche le message suivant :

    Information sur la colonne insuffisante ou incorrecte. Trop de Lignes sont affectées par la mise à jour

    Après ça touts les cellules de champ ANNEE prendre la même dernière valeur saisie. Pourquoi ?

    Solution SVP

  20. #20
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 584
    Points : 25 251
    Points
    25 251
    Par défaut
    Probablement parce qu'il manque la PK dans le SELECT
    Il ne sait pas quelle ligne mettre à jour !

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/04/2010, 15h40
  2. Réponses: 10
    Dernier message: 10/06/2009, 13h26
  3. Comment se connecter à une base de données Access 97 ?
    Par yann87 dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/12/2007, 08h49
  4. comment se connecter à une base de donnée acces
    Par meday dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/08/2007, 21h27
  5. Comment se connecter à une base de données se trouvant sur un serveur ?
    Par McLéonce dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 26/09/2006, 13h48

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