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 :

Seattle, FireDac, ODBC et MARS


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut Seattle, FireDac, ODBC et MARS
    Bonjour à tous,

    Il y a très longtemps que je n'avais pas fait de BdD, j'en étais resté à ADO sous VB ou effleuré un peu le BDE...

    Ce matin je ne suis mis à créer une appli BDD Delphi 32 bits VCL from scratch, en essayant d'être constructif avec les nouveaux composants...
    DM avec composants FD, BdD SQL Server 2008 locale via ODBC.
    Des requêtes TFDQuery indépendantes, certaines assez complexes avec moults JOINs.
    Le tout visualisé dans les TDBGrid et autres TDBEdit et TDBLookupComboBox.

    Au début tout se passait bien...
    Après ajout de nouvelles fiches et nouvelles requêtes, ça a commencé...
    Je me retrouve avec des problèmes d'erreurs aléatoires sous IDE selon ce que j'ai fait défiler dans les TDBGrid (il me semble), mais systématique en RUN dès l'initialisation du DM et des fiches, du genre "La connexion est occupée avec les résultats d'un autre hstmt".
    Je cherche un peu sur le web et je trouve assez facilement de l'info Microsoft : c'est un problème ODBC SQL Server; en gros on doit lire l'ensemble du résultat d'une requête avant d'en demander une autre! Sinon il faut utiliser une connexion par requête ou depuis les versions récentes de SQL Server activer MARS avec quelque chose comme 'MultipleActiveResultSets=True".
    Bien.
    Mais je mets ça où dans mon appli Delphi ??? J'ai essayé de le coller dans les Params du TFDConnexion, indépendamment ou sur le ODBCAdvanced mais ça n'y fait rien (et ne génère aucune erreur d'ailleurs).

    Maintenant, ODBC avec FD je me dis qu'il y a quelque chose de malsain?
    Que peut on oublier les vieilles habitudes et partir sur de bonnes nouvelles bases simplement et relativement "nativement" pour une BdD locale? (honnêtement je ne suis pas encore allé voir IB).

    A bientôt,
    Philippe.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne suis pas un pro SQLServeur mais la première réflexion à la lecture de ce Post est : "mais pourquoi avec la couche ODBC ?" il me semble bien je suis sûr que (après avoir lancer Delphi) Firedac peut accéder directement à un SGBD SQLServeur sans passer par cette couche supplémentaire.
    Maintenant, ODBC avec FD je me dis qu'il y a quelque chose de malsain?
    AMHA Oui , c'est malsain et surtout inutile

    Que peut on oublier les vieilles habitudes et partir sur de bonnes nouvelles bases simplement et relativement "nativement" pour une BdD locale? (honnêtement je ne suis pas encore allé voir IB).
    locale (si cela veut dire aussi mono poste) il y a SQLite , sinon il y a bien sûr IB mais aussi son fork open source Firebird
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,
    je ne suis pas un pro SQLServeur mais la première réflexion à la lecture de ce Post est : "mais pourquoi avec la couche ODBC ?" il me semble bien je suis sûr que (après avoir lancer Delphi) Firedac peut accéder directement à un SGBD SQLServeur sans passer par cette couche supplémentaire.
    Euh, Dans FD Explorer, si on crée une définition, on peut choisir MsSQL direct, mais derrière ça passe par l'ODBC quand même, voit le volet "infos" :
    ================================
    Paramètres de définition de connexion
    ================================
    Non accessible.
    ================================
    FireDAC info
    ================================
    Tool = RAD Studio 10 Seattle
    FireDAC = 13.0.1 (Build 82709)
    Platform = Windows 32 bit
    Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
    ================================
    Infos client
    ================================
    Loading driver MSSQL ...
    Chargement du gestionnaire de pilote odbc32.dll
    Création du handle d'environnement ODBC
    Recherche du pilote ODBC ...
    Vérification du pilote ODBC [SQL SERVER NATIVE CLIENT 11.0] ...
    Trouvé : [SQL Server Native Client 11.0]
    Driver Manager version = 03.81.10586.0000
    ================================
    Informations de session
    ================================
    Vérification de la session...
    Avertissement : SQL NC 2012 et MS ODBC 11 ne fonctionnent pas avec TVP.
    Current catalog =
    Current schema = dbo
    Driver name = sqlncli11.dll
    Driver version = 11.00.2100
    Driver conformance = 3
    DBMS name = Microsoft SQL Server
    DBMS version = 12.00.4213
    ça évite seulement de créer une définition ODBC dans le manager ODBC.
    en contrepartie cette connexion ne sera connue que dans FD.
    avec une entrée ODBC, cette BdD est également accessible pour les autres softs genre Excel et autres, c'est pour ça que je suis passé par là.
    Et passer par le FD Explorer et son fichier de config, c'est pareil que de passer par ODBC manager et son fichier de config...
    Et comme on peut directement spécifier l'entrée ODBC dans le composant TFDConnection sans passer par le FD Explorer, je trouvais ça simple et rapide?

    Ou alors j'ai loupé quelque chose?

    Edité: Bon, j'ai vu que le flag MARS est géré directement dans le fichier de defs de l'explorer et il est "on" par défaut c'est déjà ça de trouvé.
    Bon, je continue mon enquête...

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par PPA94 Voir le message
    Euh, Dans FD Explorer, si on crée une définition, on peut choisir MsSQL direct, mais derrière ça passe par l'ODBC quand même, voit le volet "infos" :
    ...
    Ou alors j'ai loupé quelque chose?
    C'est peut être moi, je ne suis pas comme déjà indiqué très "pro" SQLServeur (beaucoup trop compliqué à installer AMHA) mais plutôt Interbase/Firebird/SQLite
    J'ai bien installer cette production de Microsoft mais jamais utilisé avec Firedac
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    De mieux en mieux.
    Je croyais avoir trouvé une méthode pour utiliser un link FD car le TFDConnection m'avertissait que le pilote MSSQL n'était pas recensé et m'invitait aimablement à inclure le composant dans mon projet... (sympa les messages CLAIRS des composants FD):

    [FireDAC][Phys]-300. Le pilote [MSSQL] n'est pas recensé. Pour recenser le composant [TFDPhysMSSQLDriverLink], vous pouvez le déposer dans votre projet.

    Oui oui, mais le composant TFDPhysMSSQLDriverLink nécessaire est absent de la palette FireDAC Links et d'ailleurs semble absente du package...

    C'est quoi ce m...... ?

    Il manque vraiment un outil expert FD dans l'EDI...

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    C'est peut être moi, je ne suis pas comme déjà indiqué très "pro" SQLServeur (beaucoup trop compliqué à installer AMHA) mais plutôt Interbase/Firebird/SQLite
    J'ai bien installer cette production de Microsoft mais jamais utilisé avec Firedac
    Hélas, ma BdD SQL Server est déjà très avancée et je ne suis pas chaud maintenant pour migrer.
    C'est vrai que l'installation, la configuration et la gestion de MS SQL Server ne sont pas des plus conviviaux et intuitifs, au bas mot...

  7. #7
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Bonjour,

    Citation Envoyé par PPA94
    le composant TFDPhysMSSQLDriverLink nécessaire est absent de la palette FireDAC Links et d'ailleurs semble absente du package...
    Quelle version et édition de Delphi avez-vous ?

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    De mieux en mieux...

    Même les applications FD "samples" sur MSSQL qui y font appel ne peuvent charger les fiches : classe TFDPhysMSSQLDriverLink non trouvée !
    Dans l'éditeur de code l'unité FireDAC.Phys.MSSQL est soulignée en rouge...

  9. #9
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Thierry Laborde Voir le message
    Quelle version et édition de Delphi avez-vous ?
    Seattle Version 23.0.21418.4207 avec Update1.

    Bon, il faut que je passe à l'Update 2 nommé Berlin pour voir si c'est fixé?

  10. #10
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par PPA94 Voir le message
    Seattle Version 23.0.21418.4207 avec Update1.

    Bon, il faut que je passe à l'Update 2 nommé Berlin pour voir si c'est fixé?
    ça ne me dit pas l'édition : Starter,Professionnel, Entreprise, Architecte ?

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Bon, j'ai vérifié : c'est pareil dans Berlin.

    Alors Embarcadero veut bien faire du MS Access avec FireDAC mais a retiré le support direct de MS SQL ?
    C'est quoi le deal ?
    Une dent contre MS ?

  12. #12
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Thierry Laborde Voir le message
    ça ne me dit pas l'édition : Starter,Professionnel, Entreprise, Architecte ?
    Version Pro. Je n'ai plus les moyens au delà...

  13. #13
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Citation Envoyé par PPA94 Voir le message
    Version Pro. Je n'ai plus les moyens au delà...
    Donc il est normal que vous n'ayez pas les composants. Les accès bases de données client/Serveur ne sont pas présent dans la version Pro.

  14. #14
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529

  15. #15
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Merci Thierry.

    Je n'avais pas vérifié de ce côté là...
    J'essaie de comprendre.
    Ce n'est pas vraiment Client/Serveur là; je suis sur une appli simple avec une base locale. Je ne peux pas le faire directement avec une version Pro ???
    Les composants MySQL et IB Local sont bien présents, eux.
    En fait avant FD, je passais toujours par ODBC pour diverses considérations, y compris avec mon D6 Architect à l'époque.

    Donc je ne peux pas en "natif" mais si je passe par ODBC ça marche... Curieuse limitation "Client/Serveur".

    Bon pour revenir à mon OP: Si je reste en ODBC, comment peut-on activer le MARS depuis la connexion TFDConnection ?

  16. #16
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Avec Firedac dans la version Pro :

    Support for local databases, including Microsoft Access database, SQLite database, InterBase ToGo /
    IBLite, InterBase on localhost, MySQL Embedded, MySQL Server on localhost, Advantage Database local
    engine, PostgreSQL on localhost, Firebird Embedded, Firebird on localhost
    https://www.embarcadero.com/docs/rad...ure-matrix.pdf

  17. #17
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Donc pas d'accès Firedac a MSSQL dans la pro (Ou alors il faut prendre le pack FireDAC Client/Server). Dans l'édition Entreprise toutes les bases de données sont accessibles.

  18. #18
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Merci Thierry.

    Mais à près de 1000 € le add-on pack, tu comprendras que je resterai avec la couche ODBC pour développer avec une base locale sans gros volumes.
    On marche un peu sur la tête là.

    Je me demande d'ailleurs ce qu'apporterait réellement le add-on pack dans ce cas précis (quelle différence de performances). ça reste flou pour moi.

    Bon, je reste avec mon problème MARS. (pour l'instant j'utilise de multiples composants TFDConnection pour avancer, mais j'aimerais quelque chose de plus propre)

    Des amateurs ?

  19. #19
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut
    Bon, j'ai trouvé un palliatif, c'est pas le MARS mais au moins ça supprime les multiples TFDConnection :
    Il faut mettre FetchOptions.Mode à fmAll, ce qui vide les tampons du driver et libère la connexion pour une autre requête.
    Dans mon cas, comme les volumes sont faibles, les tampons FD sont peu importants.

  20. #20
    Membre du Club
    Homme Profil pro
    Consultant en Automation
    Inscrit en
    Mai 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Automation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2009
    Messages : 31
    Points : 46
    Points
    46
    Par défaut Berlin update 1, rebelote les problèmes...
    Je viens d'installer Berlin Update 1...
    En passant : trop de problèmes, j'ai dû faire une désinstallation complète et finalisée à la main, puis du coup je suis passé par l'iso. Utilisez l'outil de migration pour récupérer les options même d'une version précédente comme Seattle, ça marche bien de ce côté.

    Je me suis dit que j'allais ouvrir mon projet FD pour voir.
    Et m.... !
    Ils ont supprimé le support ODBC des composants FD de la version pro !!!
    Incompréhensible.

    Comme je n'ai pas vérifié avant, je ne sais pas si c'était déjà le cas dans Berlin de base.

    Je suis donc condamné à Seattle sans mises à jour, ou à convertir mon projet en MSAccess.

Discussions similaires

  1. XE2 FireDac ODBC : message d'erreur
    Par artmicro dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/08/2013, 09h05
  2. Problème de COMMIT avec MARS connections activés (ODBC)
    Par Yan302 dans le forum Développement
    Réponses: 0
    Dernier message: 27/03/2009, 10h50
  3. [Kylix] PostgreSql via ODBC
    Par doykati dans le forum EDI
    Réponses: 3
    Dernier message: 08/02/2007, 10h10
  4. [filemaker pro]odbc et dsn less
    Par google dans le forum Autres SGBD
    Réponses: 7
    Dernier message: 24/06/2002, 15h26
  5. Connexion ODBC
    Par Anonymous dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2002, 12h10

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