AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

Ein Thema von juergen · begonnen am 24. Feb 2023 · letzter Beitrag vom 25. Feb 2023
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 16:50
Datenbank: MSSQL • Version: 2019 • Zugriff über: FireDAC MSSQL
Hallo zusammen,

Delphi 11.2., letztes Patch installiert.
ich suche nun schon eine ganze Weile und kann das Problem nicht lokalisieren.
Ich habe eine VM unter der 3 benamte MSSQL-Instanzen laufen (einmal für MSSQL 2016 Server, einmal für MSSQL 2017 Server und einmal für MSSQL 2019 Server).
Wenn ich mit Delphi 10.3.3 Enterprise eine Anwendung erzeuge, bekommt diese sofort über DM.FDConnection1.Connected := True; eine Verbindung zur MSSQL-Datenbank aufgebaut.
Nehme ich den exakt selben Source und kompiliere den mit Delphi 11.2 Enterprise ist eine Verbindung zur Datenbank nicht möglich.
Ist dann die allseits bekannte Fehlermeldung:
Zitat:
...[Phys][ODBC][Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben
Laut Versionierungssystem sind keine relevanten Unterschiede (in den Pas-Dateien gar keine Unterschiede, in den dfm_Dateien nur vernachlässigbare Unterschiede) zwischen Delphi 10.3.3 und Delphi 11.2.

Ich verwende natürlich den korrekten Instanznamen. Beide Delphi-Programme (von 10.3.3 und von 11.2) nutzen die selbe JSon-Datei wo die Datenbankparameter drin stehen...

Nehme ich das mit Delphi 11.2 erstellte Programm und führe das auf einem **anderen** Server aus wo nur eine nicht benamte MSSQL-Instanz läuft, funktioniert es auch mit dem mit Delphi 11.2 erstellten Programm!

Momentan bin ich ratlos was das sein kann.
Ich habe viel gelesen aber nichts relevantes gefunden.

Hat hier jemand eine Idee was das sein kann?
Vielen Dank schon mal vorab.

Nachtrag: Ich bin mir sicher, dass es nicht an meinem Code liegt. Auch im Designer bekomme ich über den Verbindungseditor von FDConnection keine Verbindung unter Delphi 11.2 hergestellt. Da kann man doch eigentlich nicht viel verkehrt machen...
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (24. Feb 2023 um 17:00 Uhr) Grund: Siehe Nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 19:12
So, hab's gefunden.
Laut FireDAC-Doku muss die M$ ODBC 13er Version verwendet werden.
Bei mir war M$ ODBC 13 und M$ ODBC 17 installiert. Nachdem ich den M$ ODBC 17 deinstalliert hatte und auch neu gebootet hatte, funktioniert nun der Verbindungsaufbau!
Ich muss jetzt mal schauen ob ich noch was finden kann, warum mit Delphi 11 und FireDAC für MSSQL anscheinend andere Voraussetzungen gelten.
Getreu dem Motto: Höhere Version = bessere und aktuellere Version, hätte ich jetzt auch eher erwartet, dass die MSSQL-ODBC-18er Version von FireDAC unterstützt wird.
Jürgen
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 19:42
Laut FireDAC-Doku muss die M$ ODBC 13er Version verwendet werden.
Diese DocWiki-Seite gilt für Delphi 10.3 (Rio) von 2018, eventuell hat sich in den Jahren danach etwas geändert ...

Ach nein, die aktuelle DocWiki-Seite gibt immer noch 13 an:

https://docwiki.embarcadero.com/RADS...erver_(FireDAC)

Könnte es sein, dass die Seite nicht mehr aktualisiert wurde?

Ich würde beherzt den ODBC 13 Treiber deinstallieren, und es mit 17 versuchen.
Michael Justin

Geändert von mjustin (24. Feb 2023 um 19:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 20:17
Sorry, für den falschen Link, ich hatte aber auch beide Versionen nachgeschaut,. Sehen für mich gleich aus.
Und es scheint wohl auch seinen Grund zu haben.
Meine Voraussetzungen:
Installierte MSSQL 2016, 2017 und 219er Version. Also 3 benamte Instanzen. Rechner immer neu gebootet.

Meine Tests:
MS ODBC 18 -> FireDAC funktioniert nicht
MS ODBC 17 -> FireDAC funktioniert nicht
MS ODBC 13 -> FireDAC funktioniert

Wenn mehrere MS ODBC-Treiber installiert sind, funktioniert FireDAC bei mir auch nicht.
Fakt ist aber, dass mit Delphi 10.3.1 oder 10.3.3. erstellte Programme funktionieren, auch wenn MS ODBC 17 und MS ODBC 13 installiert waren. Für mich hat Delphi 11.x damit ein anderes Verhalten.
Was genau das für mich nun bedeutet, kann ich noch gar nicht sagen, weil ich nicht weiß welche Kombinationen von MS ODBC-Treibern ich so vorfinde in der Praxis.
Bisher hatte "das einfach so" funktioniert mit FireDAC und Delphi 10.3


Nachtrag:
Als FireDAC-Treiber verwende ich bei MSSQL den FDPhysMSSQLDriverLink
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (24. Feb 2023 um 20:21 Uhr) Grund: siehe Nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 21:07
Komisch. In der What's New für 11.2 steht:
Zitat:
FireDAC supports the latest Microsoft ODBC Driver for SQL Server (version 18).
Dementsprechend haben die 11.2 Sourcen auch dies hier drin:
Delphi-Quellcode:
const
  C_2018_ODBC = 'ODBC DRIVER 18 FOR SQL SERVER';
  C_2017_ODBC = 'ODBC DRIVER 17 FOR SQL SERVER';
  C_2016_ODBC = 'ODBC DRIVER 13 FOR SQL SERVER';
  C_2012_ODBC = 'ODBC DRIVER 11 FOR SQL SERVER';
...
  C_2012_NC = 'SQL SERVER NATIVE CLIENT 11.0';
  C_2008 = 'SQL SERVER NATIVE CLIENT 10.0';
  C_2005 = 'SQL NATIVE CLIENT';
  C_2000 = 'SQL SERVER';

...

procedure TFDPhysMSSQLDriver.InternalLoad;
begin
  inherited InternalLoad;
  if ODBCDriver = 'then
    ODBCDriver := FindBestDriver(
      {$IFDEF MSWINDOWS} [C_2018_ODBC, C_2017_ODBC, C_2012_NC, C_2016_ODBC, C_2012_ODBC, C_2008, C_2005, C_2000] {$ENDIF}
      {$IFDEF POSIX} [C_2018_ODBC, C_2017_ODBC, C_2016_ODBC, C_2012_ODBC, C_FreeTDS], C_FreeTDSLib {$ENDIF}
    );
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 22:00
Vielen Dank Uwe für die Infos!
Dadurch konnte ich sehen, dass in Delphi 10.3.x die Reihenfolge der bevorzugten Treiber anders war und ich deshalb anscheinend vorher nie diese Probleme hatte.
Delphi-Quellcode:
//Delphi 10.3.3
...
C_2012_NC = 'SQL SERVER NATIVE CLIENT 11.0';
...
procedure TFDPhysMSSQLDriver.InternalLoad;
begin
  inherited InternalLoad;
  if ODBCDriver = 'then
    ODBCDriver := FindBestDriver(
      {$IFDEF MSWINDOWS} [C_2012_NC, C_2016_ODBC, C_2012_ODBC, C_2017_ODBC, C_2008, C_2005, C_2000] {$ENDIF}
      {$IFDEF POSIX} [C_2016_ODBC, C_2012_ODBC, C_2017_ODBC, C_FreeTDS], C_FreeTDSLib {$ENDIF}
    );
end;
So wie ich das verstehe, zieht FireDAC bei mir den SQL SERVER NATIVE CLIENT, wenn ich nur den MS ODBC-Treiber 13 installiert habe.
Dann wäre die Frage bei mir: Warum funktioniert FireDAC bei *meiner Konstellation* nicht mit installiertem MS ODBC 17 oder 18?

Nachtrag: Meine (Test)-Datenbank läuft unter MSSQL 2016 und ist auch in diesem Kompatibilitäsgrad. (SQL Server 2016 (130)
Aber wie geschrieben funktioniert es bei meiner Konstellation nicht mit MS ODBC 17 oder MS ODBC 18.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (24. Feb 2023 um 22:30 Uhr) Grund: siehe Nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 24. Feb 2023, 23:17
Wenn ich mein Programm für Windows 64 Bit kompiliere, funktionieren auch die MS ODBC-17 und/ oder -18er Treiber!
Meine Programme mussten bisher 32 Bit sein, da ich auch umschalten können musste auf einen 32 Bit ODBC-Pervasive-Datenbanktreiber. Inzw. kann Pervasive/ Actian/ ZEN auch 64 Bit ODBC, so dass ich meine Programme auf 64 Bit umstellen könnte.

Mit diesen Erkenntnissen muss ich ab jetzt dann bei Pervasive/ Actian /ZEN zusätzlich einen 64 Bit-ODBC einrichten und alles funktioniert.
Die Reihenfolge der bevorzugten Datenbanktreiber in der FireDAC.Phys.MSSQL.pas zu ändern kommt für mich nicht in Frage.

Allerdings habe ich auch Programme, die bei Pervasive/ Actian/ ZEN die 32 Bit Btrieve-API nutzen UND auf MSSQL laufen müssen. Da muss ich diese Programme nicht mit Delphi 11 weiter pflegen, sondern mit Delphi 10.3.3. Der SQL SERVER NATIVE CLIENT scheint ja mit 32 Bit Programmen immer zu funktionieren.

***gelöst***
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 25. Feb 2023, 09:19
Wenn ich mein Programm für Windows 64 Bit kompiliere, funktionieren auch die MS ODBC-17 und/ oder -18er Treiber!
Das bedeutet vermutlich, dass nur die 64 Bit Version des ODBC Treibers installiert war. Es gibt drei verschiedene Versionen z.B. auf https://learn.microsoft.com/de-de/sq...l-server-ver16

* für x64 (64 Bit)
* für x86 (32 Bit)
* für Arm64 (64 Bit)

Kompiliert man mit 32 Bit, benötigt man den 32 Bit Treiber. Ein stattdessen eventuell vorhandender 64 Bit Treiber wird nicht gefunden.

Update: ich lag falsch, siehe unten. Die 32 und 64 Bit Version der Treiber ist im x64 enthalten.
Michael Justin

Geändert von mjustin (25. Feb 2023 um 12:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 25. Feb 2023, 11:13
Danke, mjustin!
Ich hatte gestern auch versucht den 32 Bit ODBC zu installieren. Das Setup hatte sich geweigert.

Ich werde nun wohl doch einen Compilerswitsch für 32 Bit Programme in FireDAC.Phys.MSSQL.pas einbauen. Wenn mein Programm ein 32 Bit Programm ist dann wird der bevorzugte Treiber der Native Client Treiber sein. Also die Sourcen so ähnlich anpassen wie unter 10.3.3.. Wenn 64 Bit Programm, dann alles so anwenden wie es jetzt ist.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (25. Feb 2023 um 11:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#10

AW: FireDAC FDConnetion bekommt mit Delphi 11.2 keine Verbindung

  Alt 25. Feb 2023, 12:06
Ich hatte gestern auch versucht den 32 Bit ODBC zu installieren. Das Setup hatte sich geweigert.
Die Bit-Angaben bei den MSI-Paketen bezieht sich auf das Betriebssystem, nicht auf die Applikation die den Client benutzt. Beim 64Bit Installer sind die 32-Bit DLLs dabei und sollten in SYSWOW64 zu finden sein.

Das 32-Bit MSI-Paket ist nur für die Installation auf einem 32-Bit Windows vorgesehen.

Ich werde nun wohl doch einen Compilerswitsch für 32 Bit Programme in FireDAC.Phys.MSSQL.pas einbauen.
Das halte ich für zumindest fragwürdig. Wenn das tatsächlich notwendig wäre, würde ich ein breiteres Auftauchen dieser Probleme erwarten. Sollte es in der Tat ein Problem in den FireDAC Sourcen sein, wäre ein entsprechende Eintrag in QP allerdings dringend anzuraten.

Das FindBestDriver sucht allerdings in der ODBC-Konfiguration mit der Bitness der aktuellen Applikation. Die vorhandenen Treiber müssen dort also auch bei 32-Bit bzw. 64-Bit gefunden werden können. Check doch mal in den ODBC Data Sources (32 Bit) ob das alles wirklich passt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz