none
Connection de VB à la base de données du gestionnaire de contacts d'Outlook 2007. RRS feed

  • Question

  • Bonjour,

    Lorsqu'on cherchait une solution pour notre entreprise, quelqu'un m'avait dit qu'on pouvait accéder à la base de données du Gestionnaire de contacts d'Outlook, puisque c'est une base SQL Express située sur notre serveur, comme nous le voulions. Ce que je veux faire c'est créer des applications en VB qui se réfèrent à cette base de données, sans en changer les données.

    Voilà; les applications que j'ai créées précédemment se connectent sans problèmes à une base de données sql server express située sur le serveur,"nomServeur\SQLEXPRESS". J'ai installé Outlook 2007 avec le gestionnaire sur ce serveur, ce qui a créé la base de données dans une autre instance du serveur portant le nom "nomServeur\MSSMLBIZ". J'ai partagé cette base de données avec quelqu'un d'autre sur le réseau qui a également Outlook 2007 avec le gestionnaire, et tout fonctionne bien entre eux, mais quand j'essaie de connecter à la base de données via mon application VB(VisualStudio 2008 Pro), ça me dit de vérifier si j'ai les droits etc. Je me suis pourtant ajouté les mêmes sécurités/login qu'à l'autre instance.

    Est-ce que je dois utiliser une connection string spéciale? Est-ce que c'est fait en sorte que je ne puisse pas y accéder, contrairement à ce qu'on nous avait dit? Je ne suis pas très à l'aise avec SQL, peut-être ai-je oublié quelque chose? Quand je cherche des infos à ce sujet, je ne trouve rien. Quelqu'un pourrait-il me dire si c'est possible de le faire et si oui, comment y parvenir?

    Merci à l'avance!
    jeudi 4 février 2010 22:53

Réponses

  • Bonjour,

    Alors déjà, vu les erreurs reçues, les canaux nommés ne sont pas activés.

    On reprend à zéro.
    Tu vas sur la machine où est installé ton gestionnaire Outlook (là où physiquement se trouve ta base MSSMLBIZ)
    Tu vas dans
    Menu Démarrer / MS SQL Server 2008 / Outils de configuration / Gestionnaire de la surface d'exposition
    Ensuite tu cliques sur Configuration de la surface d'exposition pour les services et les connexions.
    Dans Connexions distantes, tu actives les connexions locales et distantes, à la fois TCP/IP et canaux nommés.
    Tu fais Appliquer, tu redémarres tes services.

    Normalement, maintenant tu devrais pouvoir voir une amléioration avec les chaines de connexion du type : Server=nomServeur\MSSMLBIZ


    Ensuite ...
    Tu lances toujours le poste qui héberge la base SQL Server Management Studio.
    Tu te connectes à ton serveur MSSMLBIZ.

    Tu vas dans Sécurité / Connexions, clic droit, Nouvelle Connexion

    Coche Authentification SQLServer
    Dans nom d'accès, tu mets le nom d'utilisateur que tu souhaites utiliser, genre : VBUser
    Tu spécifies un mot de passe, tu décoches Conserver la stratégie de mot de passe.
    Ensuite a gauche tu cliques sur Mappage de l'utilisateur, et tu coches la case de la base MSSMLBIZ.
    En dessous, ca se dégrise, et là vu que tu veux faire que de la lecture, tu mets les rôles public et db_datareader.

    Tu crées cette connexion, normalement cela a créé aussi un utilisateur si tu ouvres Bases de données / MSSMLBIZ / Sécurité / Utilisateurs

    Essaie alors de te connecter avec la chaine suivante :
    Data Source=nomServeur\SQLEXPRESS;Initial Catalog=MSSMLBIZ;User ID=VBUser;Password=VBPassword

    S'il n'y arrive pas, réessaie avec :
    Data Source=addIp,#port;Initial Catalog=MSSMLBIZ;User ID=VBUser;Password=VBPassword

    Cordialement,

    Thomas

    PS : j'ai la version 2005, pas 2008, mais normalement il faut espérer que cela n'a pas changé.

    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Alex Petrescu jeudi 11 février 2010 09:03
    lundi 8 février 2010 17:16
  • Bonjour,

    Bon alors ...
    En effet, je me suis emmêlé les pinceaux entre MSSMLBIZ et SmallBusiness ^_^

    On va voir si j'ai bien tout compris ...
    Tu as 2 bases, une en 2008 Express Edition, et une en 2005 qui provient de Outlook Gestionnaire de Contacts ?
    Lorsque tu te connectes en local avec SQL Management Studio à nomServer\MSSMLBIZ qui est la base Outlook, tu te logges en mode authentification Windows et ça marche ?
    Une fois loggée tu vois ta base SmallBusiness ?
    Normalement les réponses à ces questions sont Oui.

    Bon je viens de me renseigner sur SQL Server 2008.
    Et là, surprise, en effet, plus d'outil de configuration de surface d'exposition !!!!
    A la place, on utilise les Facets et les Policies : http://www.mssqltips.com/tip.asp?tip=1673
    Et le SQL Server Cinfiguration Manager : http://msdn.microsoft.com/en-us/library/cc281850.aspx

    Bon, c'est ce que t'as donc dû faire.

    Pour commencer et écarter un problème en local, ouvre SQL Management Studio, NomServeur = nomServer\MSSMLBIZ, authentification SQL Server, user = nomUsager, password = TonMotDePasse.
    Si tu arrives à ouvrir l'instance MSSMLBIZ, c'est donc que tout fonctionne en local, seul l'accès autre que local pose problème.
    Si cela ne fonctionne pas, c'est qu'on a un problème en local, et on se repenchera dessus.

    On part sur un problème remote.
    A partir du SQL Server Configuration Manager, dans SQL Server Network Configuration, tu vois l'instance MSSMLBIZ ?
    Si oui, alors vérifie que les bons protocoles sont enabled à Yes.
    Si non, à partir du lien ci-dessus sur les Facets, accède au Facet management de surface d'exposition de ta base MSSMLBIZ, et essaie de même d'autoriser les connexions distantes.

    Si ni l'un ni l'autre ne fonctionnent, alors autant télécharger la version 2005 et tester avec l'outil de configuration des bases 2005.
    http://www.clubic.com/telecharger-fiche17874-sql-server-express-edition.html

    J'ai écarté le problème de Firewall puisque manifestement tu arrives à voir la base dans ertains cas.

    Cordialement,

    Thomas




    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Alex Petrescu jeudi 11 février 2010 09:01
    mardi 9 février 2010 15:15
  • J'en suis sortie!!!

    C'était une erreur de débutante... et de réseau.

    J'avais vérifié les ports du firewall sur le serveur pour SQL Server, mais n'avais pas pensé que la deuxième instance(MSSMLBIZ) n'utilisait pas le même port dans le Firewall...

    J'avais défini les ports dans la base de données, mais pas dans le Firewall. Quand je regardais dans les ports du Firewall, j'allais dans SQL Server et y voyait le bon port, mais ce ne l'était pas, puisque c'était dans MSSMLBIZ que je devais aller.

    Ma connection string fonctionnait, car il existait vraiment une instance sur le port spécifié, mais ne trouvait pas la base de données, puisqu'elle se trouvait sur l'autre instance. C'est pourquoi le message concernait la base de données et non la connection, car l'instance visée existait vraiment, ce n'était juste pas la bonne! c'est le message qui m'induisait en erreur en disant que c'était les droits qui n'étaient probablement pas bien définis, alors c'est là que je cherchais.

    Merci beaucoup pour votre aide! Vous êtes super!
    Marie-Christine

    • Marqué comme réponse Alex Petrescu vendredi 26 février 2010 15:09
    mercredi 24 février 2010 16:19

Toutes les réponses

  • Bonjour,

    Alors oui, c'est possible, je l'avais fait à une époque.

    Connecte-toi en local sur ton serveur a ta base MSSMLBIZ avec l'outil de gestion des expositions de surface. Il est dans les outils de configuration de SQL Server.
    Verifie que tu as bien autorisé les connexions distantes sur ta base en TCP/IP et Canaux Nommés.
    Ensuite redémarre tes services SQLServer et SQLBrowser et réessaie.

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    vendredi 5 février 2010 00:46
  • Bonjour!

    Merci, mais j'avais déjà regardé de ce côté là. Je n'ai peut-être pas mis assez de détails dans mon appel à l'aide... en voilà quelques uns que j'ai relevés.

    Voici la config de mon programme qui fonctionne;
    SQL Server Express 2008
    nomServeur \ SQLExpress
    version 10.0.2531 sp1
    "Data Source=add IP,# port; Integrated Security=true; Initial Catalog=NomTable;Network Library=DBMSSOCN;"


    Config du gestionnaire, qui ne fonctionne pas;
    SQL Server Express 2005
    nomServeur \ MSSMLBIZ
    9.0.4053 SP3

    Connection strings essayées, avec le résultat obtenu;
    Le message dit qu'il ne voit pas le serveur
    "Server=nomServeur\MSSMLBIZ;Database=SmallBusinessMs;Trusted_Connection=True;"
    "Server=nomServeur\MSSMLBIZ;Initial Catalog=SmallBusinessMs;Integrated Security=SSPI;User ID=NomDomaine\UserName;Password=motPasse;"

    Ne peut pas ouvrir la Base de données...Login failed dor user ...
    "Data Source=AddIP,#port;Initial Catalog=SmallBusinessMs;Integrated Security=SSPI;"
    "Data Source=addIp,#port;Initial Catalog=SmallBusinessMs;User Id=NomDomaine\UserName;Password=motPasse;"
    "Data Source=add. IP, #port; Integrated Security=true; Initial Catalog=SmallBusinessMs;Network Library=DBMSSOCN;"

    Peut-être dans les droits, sur SQL? Mais jer me suis créée comme user et me suis donné les mêmes droits que dans mon sql server 2008!

    Je ne sais plus où chercher...
    Merci!

    lundi 8 février 2010 16:55
  • Bonjour,

    Alors déjà, vu les erreurs reçues, les canaux nommés ne sont pas activés.

    On reprend à zéro.
    Tu vas sur la machine où est installé ton gestionnaire Outlook (là où physiquement se trouve ta base MSSMLBIZ)
    Tu vas dans
    Menu Démarrer / MS SQL Server 2008 / Outils de configuration / Gestionnaire de la surface d'exposition
    Ensuite tu cliques sur Configuration de la surface d'exposition pour les services et les connexions.
    Dans Connexions distantes, tu actives les connexions locales et distantes, à la fois TCP/IP et canaux nommés.
    Tu fais Appliquer, tu redémarres tes services.

    Normalement, maintenant tu devrais pouvoir voir une amléioration avec les chaines de connexion du type : Server=nomServeur\MSSMLBIZ


    Ensuite ...
    Tu lances toujours le poste qui héberge la base SQL Server Management Studio.
    Tu te connectes à ton serveur MSSMLBIZ.

    Tu vas dans Sécurité / Connexions, clic droit, Nouvelle Connexion

    Coche Authentification SQLServer
    Dans nom d'accès, tu mets le nom d'utilisateur que tu souhaites utiliser, genre : VBUser
    Tu spécifies un mot de passe, tu décoches Conserver la stratégie de mot de passe.
    Ensuite a gauche tu cliques sur Mappage de l'utilisateur, et tu coches la case de la base MSSMLBIZ.
    En dessous, ca se dégrise, et là vu que tu veux faire que de la lecture, tu mets les rôles public et db_datareader.

    Tu crées cette connexion, normalement cela a créé aussi un utilisateur si tu ouvres Bases de données / MSSMLBIZ / Sécurité / Utilisateurs

    Essaie alors de te connecter avec la chaine suivante :
    Data Source=nomServeur\SQLEXPRESS;Initial Catalog=MSSMLBIZ;User ID=VBUser;Password=VBPassword

    S'il n'y arrive pas, réessaie avec :
    Data Source=addIp,#port;Initial Catalog=MSSMLBIZ;User ID=VBUser;Password=VBPassword

    Cordialement,

    Thomas

    PS : j'ai la version 2005, pas 2008, mais normalement il faut espérer que cela n'a pas changé.

    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Alex Petrescu jeudi 11 février 2010 09:03
    lundi 8 février 2010 17:16
  •  Bonjour,

    Un grand merci pour ta patience.

    J'ai revérifié, et le bout où tu parles des TCP/IP et canaux nommés, je l'avais déjà fait, car c'est la première solution que j'avais trouvée dans les forums losque je cherchais comment me connecter à ma première base de données, qui elle fonctionne depuis que je l'ai refaite en SQL Express version 10.0.2531 SP1(qui doit être SQL Express 2008 par logique). Le gestionnaire de la surface d'exposition n'existe pas pour 2008, ou bien ne se trouve pas au même endroit. Outlook utilise SQL version 9.0.4053 SP3 (qui doit être SQL Express 2005 par logique), alors je ne crois pas que cela puisse poser de problème, car ma base de données 2008 fonctionne très bien lorsque j'y accède via mon programme.

    Mon problème est pour accéder à la base d'Outlook. À l'installation du gestionnaire de contacts, il a créé automatiquement une nouvelle base de données nommée SmallBusiness..., et lorsque je l'ouvre avec le SQL Server Management Studio(qui lui est 2008), il me demande de me connecter au serveur "nomServer\MSSMLBIZ" ou "nomServer\SQLEXPRESS" comme noms de serveurs. Le MSSMLBIZ est l'instance, et non le nom de la base de données. J'ai essayé de créer un user comme tu me l'as écrit, mais j'ai fait le mapping sur la base de données SmallBusiness (MSSMLBIZ étant une instance du serveur), et ça ne fonctionne toujours pas. Il me dit toujours "login failed for user nomUsager". J'ai essayé autant avec les 2 connection strings, et revérifié, le user créé a bien les droits, et les tcp/ip et canaux nommés sont bien activés tous les 2.

    N'y aurait-il pas quelque chose d'autre à vérifier? Peut-être y a-t-il un autre endroit pour définir l'accès? VB ne me dit pas qu'il ne peut ouvrir la base de données, mais que je ne peux pas y accéder avec ce login. Je ne comprends plus. Il doit certainement y avoir un autre endroit où définir l'accès à distance! Il y a certainement quelque chose qui m'échappe...

    Merci pour votre aide...

     

    mardi 9 février 2010 13:58
  • Bonjour,

    Bon alors ...
    En effet, je me suis emmêlé les pinceaux entre MSSMLBIZ et SmallBusiness ^_^

    On va voir si j'ai bien tout compris ...
    Tu as 2 bases, une en 2008 Express Edition, et une en 2005 qui provient de Outlook Gestionnaire de Contacts ?
    Lorsque tu te connectes en local avec SQL Management Studio à nomServer\MSSMLBIZ qui est la base Outlook, tu te logges en mode authentification Windows et ça marche ?
    Une fois loggée tu vois ta base SmallBusiness ?
    Normalement les réponses à ces questions sont Oui.

    Bon je viens de me renseigner sur SQL Server 2008.
    Et là, surprise, en effet, plus d'outil de configuration de surface d'exposition !!!!
    A la place, on utilise les Facets et les Policies : http://www.mssqltips.com/tip.asp?tip=1673
    Et le SQL Server Cinfiguration Manager : http://msdn.microsoft.com/en-us/library/cc281850.aspx

    Bon, c'est ce que t'as donc dû faire.

    Pour commencer et écarter un problème en local, ouvre SQL Management Studio, NomServeur = nomServer\MSSMLBIZ, authentification SQL Server, user = nomUsager, password = TonMotDePasse.
    Si tu arrives à ouvrir l'instance MSSMLBIZ, c'est donc que tout fonctionne en local, seul l'accès autre que local pose problème.
    Si cela ne fonctionne pas, c'est qu'on a un problème en local, et on se repenchera dessus.

    On part sur un problème remote.
    A partir du SQL Server Configuration Manager, dans SQL Server Network Configuration, tu vois l'instance MSSMLBIZ ?
    Si oui, alors vérifie que les bons protocoles sont enabled à Yes.
    Si non, à partir du lien ci-dessus sur les Facets, accède au Facet management de surface d'exposition de ta base MSSMLBIZ, et essaie de même d'autoriser les connexions distantes.

    Si ni l'un ni l'autre ne fonctionnent, alors autant télécharger la version 2005 et tester avec l'outil de configuration des bases 2005.
    http://www.clubic.com/telecharger-fiche17874-sql-server-express-edition.html

    J'ai écarté le problème de Firewall puisque manifestement tu arrives à voir la base dans ertains cas.

    Cordialement,

    Thomas




    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse Alex Petrescu jeudi 11 février 2010 09:01
    mardi 9 février 2010 15:15
  • Bonjour,

     

    Merci Thomas pour le suivi du thread et les réponses détaillées !

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    jeudi 11 février 2010 09:02
  • Oui, merci beaucoup, mais ça ne fonctionne toujours pas...

    Voici où j'en suis après maintes tentatives, et des heures perdues.

    Aux premières questions demandées par Thomas, la réponse était oui. Oui, une fois loggée sur le serveur, je vois la base SmallBusiness, et je peux même faire des requêtes manuellement depuis sql Management Studio. Comme tu le dis, c'est un problème de Remote, puisque j'ai fais selon tes directives, créé le user avec le password, et lorsque je connecte localement dans le management Studio, ça fonctionne. Même la connection string de mon application cliente ne me dit plus d'erreur du genre;
    "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)",
    mais seulement "Login failed for user 'nomUsager'.".

    Je connaissais déjà assez bien le Configuration Manager, et y avait déjà changé des choses. Pour les facets et tout le tralala, j'ai mis les mêmes valeurs que celle de ma base en 2008 qui elle fonctionne, et toujours la même erreur.

    Tu m'as dit; "télécharger la version 2005 et tester avec l'outil de configuration des bases 2005."
    J'avais déjà ces outils, j'étais même déjà allée dans "Configuration de la surface d'exposition pour les services et les connexions" au début de nos échanges, mais tout a l'air bien. Je commence à croire que je ne pourrai jamais y accéder...

    Pour tester, après essais-erreurs et découragement, j'ai installé le trial d'Outlook 2007 sur mon pc, et j'arrive à accéder à la base locale de mon Outlook par mon programme, alors la base est accèssible en local via VB, mais pas la base que j'essais en vain d'accéder via le réseau. Si c'était un problème de Firewall, comme tu le dis, il continuerait à me dire que le serveur et la base ne sont pas accessibles, non? Et mon autre application ne fonctionnerait pas!

    Je n'y comprend plus rien... J'essais tout ce qui est possible, mais mon peu de connaissance ne m'est pas très utile. J'ai comparé les facets, les logins, j'ai fait des recherches sur les droits, rôles et les schémas, mais je n'y arrive pas.

    Je continuerai car j'ai une tête dure, mais si quelqu'un à une autre idée, elle serait la bienvenue!

    Merci infiniment pour votre soutient!
    jeudi 11 février 2010 22:31
  • J'en suis sortie!!!

    C'était une erreur de débutante... et de réseau.

    J'avais vérifié les ports du firewall sur le serveur pour SQL Server, mais n'avais pas pensé que la deuxième instance(MSSMLBIZ) n'utilisait pas le même port dans le Firewall...

    J'avais défini les ports dans la base de données, mais pas dans le Firewall. Quand je regardais dans les ports du Firewall, j'allais dans SQL Server et y voyait le bon port, mais ce ne l'était pas, puisque c'était dans MSSMLBIZ que je devais aller.

    Ma connection string fonctionnait, car il existait vraiment une instance sur le port spécifié, mais ne trouvait pas la base de données, puisqu'elle se trouvait sur l'autre instance. C'est pourquoi le message concernait la base de données et non la connection, car l'instance visée existait vraiment, ce n'était juste pas la bonne! c'est le message qui m'induisait en erreur en disant que c'était les droits qui n'étaient probablement pas bien définis, alors c'est là que je cherchais.

    Merci beaucoup pour votre aide! Vous êtes super!
    Marie-Christine

    • Marqué comme réponse Alex Petrescu vendredi 26 février 2010 15:09
    mercredi 24 février 2010 16:19
  • Bonjour,

     

    Mariquiqui, merci pour prendre le temps de poster votre solution dans ce thread. Je suis sûr qu’il y a d’autres qui vont en bénéficier.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    vendredi 26 février 2010 15:09