Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriff auf ADS Server (https://www.delphipraxis.net/213554-zugriff-auf-ads-server.html)

haentschman 17. Aug 2023 09:02

Datenbank: ADS • Version: 11 • Zugriff über: FireDAC

Zugriff auf ADS Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)

Ich versuche erstmals auf unseren neuen ADS Server zu connecten. (Fremdsoftware, Zugangsdaten mit Lesenrechten vorhanden). Auf einer anderen VM läuft der Advantage Data Architect mit den gleichen Zugangsdaten. Freigabe auf den Database Ordner vorhanden.

...der will mich nicht.:cry: (Bild) Bitte keine blöden Sprüche. :lol:
"...cannot authenticate the user..."

Was fehlt? :gruebel:

Danke.

Crosspost: englische DP https://en.delphipraxis.net/topic/10...to-ads-failed/

Der schöne Günther 17. Aug 2023 09:10

AW: Zugriff auf ADS Server
 
Ich kann mich grob erinnern (ist wirklich lange her), dass das Ding stolpert wenn der Freigabename einen Punkt im Pfad hatte und dass man im Windows-Explorer den Pfad erst einmal ansurfen musste, sonst kam das Ding auch nicht weiter (falls die Dateifreigabe dahinter Authentifizierung brauchte).

Ansonsten schlag doch den Fehlercode einmal nach, da findet man ja einiges.

haentschman 17. Aug 2023 09:42

AW: Zugriff auf ADS Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Ansonsten schlag doch den Fehlercode einmal nach, da findet man ja einiges.
...die meisten Einträge sind uralt. :? Hilft nicht wirklich. :cry:
Zitat:

wenn der Freigabename einen Punkt im Pfad hatte
...keine Leerzeichen und Punkte in der Freigabe

Nachtrag:
Auf der anderen VM bekomme ich mit dem falschen BN/PW exakt die gleiche Meldung. (Bild)

Sinspin 17. Aug 2023 12:19

AW: Zugriff auf ADS Server
 
Ist die DB noch irgendwo in Verwendung wenn du zugreifen willst?

Von den Einstellungen sieht das erstmal ganz ok aus.
Bei mir ist es in der art:
Delphi-Quellcode:
  DriverName := 'ADS';
  Params.DataBase := ADBPath;
  Params.Username := AUserName;
  Params.Password := APassword;

  if AForceLocalConnection then
    TFDPhysADSConnectionDefParams(Params).ServerTypes := stLocal
  else
    TFDPhysADSConnectionDefParams(Params).ServerTypes := stNone; // whatever is available
  TFDPhysADSConnectionDefParams(Params).Compress := cmAlways;
Nachtrag :
In DataBase muss der Pfad zur und inclusive der "*.ADD" Datei abgegeben sein. Wie beim ARC.
Du brauchst Schreibrechte in dem Verzeichnis wo die DB liegt.

haentschman 17. Aug 2023 12:52

AW: Zugriff auf ADS Server
 
Zitat:

Ist die DB noch irgendwo in Verwendung wenn du zugreifen willst?
...nein.

PS: Ich gehe auf den Server über VPN. :gruebel:

Zitat:

Du brauchst Schreibrechte in dem Verzeichnis wo die DB liegt.
...hab ich.
Zitat:

In DataBase muss der Pfad zur und inclusive der "*.ADD" Datei abgegeben sein.
\\DB2\xxx\data incl. xxx.add ...geprüft

Sinspin 17. Aug 2023 13:05

AW: Zugriff auf ADS Server
 
So wie das aussieht wird der Server gefunden. Pfade passen also.
Laut ADS hilfe ist 7078:
Zitat:

- The user name and password supplied when connecting to an Advantage Data Dictionary were incorrect.
- The user name and password were not supplied but the Data Dictionary has been set up to require user authentication.

haentschman 17. Aug 2023 14:08

AW: Zugriff auf ADS Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke...:wink:

Ich habe jetzt auf meiner Maschine den Advanced Data Architect am Laufen.
Mit joachim habe ich die ads.ini nach C:\Windows kopiert und angepaßt.
Delphi-Quellcode:
[Db2]
LAN_PORT=6262
LAN_IP=10.xx.xx.xxx
Das ändert nichts an der Meldung vom FireDAC...:cry:

Sinspin 17. Aug 2023 16:47

AW: Zugriff auf ADS Server
 
Ich habe nie den Connectioneditor verwendet.
Sondern immer ein kleines Testprogramm und zur Laufzeit via Button und TFDQuery daten gezogen.

Da kommt TFDConnection, TFDPhysADSDriverLink drauf. Noch sicherstellen dass FireDAC.Phys.ADS, FireDAC.Phys.ADSDef mit in den uses sind.
Dann kannst Du die connection einrichten und es sollte gehen.

Frickler 17. Aug 2023 17:20

AW: Zugriff auf ADS Server
 
Leg noch einen Eintrag an a la
Code:
[10.xx.xx.xxx]
LAN_PORT=6262
LAN_IP=10.xx.xx.xxx
und eventuell auch:

Code:
[SETTINGS]
; Wenn Windows rumzickt und ständig die Verbindung
; zum Server verliert:
USE_TCP_IP=1
...denn ADS geht über UDP - Dein VPN auch?

haentschman 18. Aug 2023 05:21

AW: Zugriff auf ADS Server
 
Danke...8-)

Zitat:

Leg noch einen Eintrag an a la
Zum Verständnis: Die ads.ini gehört zum Andvanced Data Architect. Der funktioniert! ... eine normale FireDAC Connection, ohne ini, in einem Testprogramm nicht. :?
Zitat:

Ich habe nie den Connectioneditor verwendet.
Ich habe alle 3 Varianten durch.
1. Connectionstring
Delphi-Quellcode:
con1.ConnectionString := 'DriverID=ADS;ServerTypes=Remote;Protocol=TCPIP;Server=\\db2:6262;Database=\\Db2\data\xxx.add;User_Name=xxx;Password=xxx';
...
2. zusammenbauen:
Delphi-Quellcode:
con1.DriverName := 'ADS';
con1.Params.Add('ServerTypes=Remote');
con1.Params.Add('Protocol=TCPIP');
con1.Params.Add('Server=\\db2:6262');
con1.Params.Add('Database=\\Db2\data\xxx.add');
con1.Params.Add('User_Name=xxx');
con1.Params.Add('Password=xxx');
3. Connection Editor: GUI

Egal ob ich BN/PW eintrage oder komplett weglasse, die Meldung bleibt gleich...als würde BN/PW nicht "übertragen". :gruebel:

Sinspin 18. Aug 2023 08:53

AW: Zugriff auf ADS Server
 
Dann probier es mal so:
Delphi-Quellcode:
//units:
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error,
  FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
  FireDAC.Phys.ADS, FireDAC.Phys.ADSDef, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
  FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
  FireDAC.Phys.ADSWrapper, FireDAC.Comp.UI

// code:
con1.DriverName := 'ADS';
TFDPhysADSConnectionDefParams(con1.Params).ServerTypes := stRemote;
con1.Params.DataBase := '\\Db2\data\xxx.add';
//con1.Params.DataBase := '\\Db2:6262\data\xxx.add'; <-- alternativ mit port
con1.Params.Username := 'xxx';
con1.Params.Password := 'xxx';

con1.LoginPrompt := false;

con1.Connected := true;
Keine Angaben als Strings, keine weiteren Angaben.

haentschman 18. Aug 2023 10:02

AW: Zugriff auf ADS Server
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke...8-)

...the same. :cry: Selbst wenn ich die Database weglasse! :gruebel:


Ich mache jetzt mal einen Supportfall auf. :wink:

Sinspin 18. Aug 2023 13:42

AW: Zugriff auf ADS Server
 
Ich erinnere mich das ich Anfangs auch Probleme hatte.
Allerdings finde ich keine Doku dazu, also war es entweder unfug und hatte nichts damit zu tuen oder da fehlt was in der Doku. Ich schau mal nach, kann dir aber nicht sagen wann ich dazu eine Info habe.

joachimd 18. Aug 2023 13:57

AW: Zugriff auf ADS Server
 
Wenn es mit dem ARC auf der Maschine geht:
Suche in der ADS Hilfe nach "ads.ini File Support"
Abschnitt Windows
Zitat:

In order for the ads.ini file to be used, it must be located in the application directory, the Windows directory, the Windows System directory, or the client's search path.

In addition, if an environment variable exists with the name adsini_path, that path will be used to locate the ads.ini file. This can be helpful when you do not want to modify the application’s search path, but still need the ads.ini file to exist in a directory multiple users have rights to (for example on Windows Vista installations). An application can often set the environment variable at run-time before calling any Advantage functions, which avoids the need to set a per-workstation environment variable.
Erstelle diese Umgebungsvariable und lasse sie auf das Verzeichnis des ARC zeigen (da dort ja eine funktionierende asds.ini liegt). Nimm aus Deinen Verbindungsparametern TCPIP raus - default ist UDP/IP.
Amn besten noch folgenden Eintrag in die ads.ini rein:
Zitat:

[SETTINGS]
RETRY_ADS_CONNECTS = 1
Ach so...nimm auch den Port aus dem Connection Path raus. Der ist ja in der ads.ini definiert.
Damit wird der Verbindungsfehler nicht gecached.

haentschman 18. Aug 2023 14:50

AW: Zugriff auf ADS Server
 
Danke...8-)

Zitat:

"ads.ini File Support"
Muß es eine ini sein? Wollte ich nicht! :gruebel:

Zitat:

Erstelle diese Umgebungsvariable und lasse sie auf das Verzeichnis des ARC zeigen
... bei jeder Installation? :shock:

Sinspin 18. Aug 2023 14:52

AW: Zugriff auf ADS Server
 
Bei mir ist die verwendete ads.ini ohne Settings Abschnitt und es geht auch. Sowohl mit als auch ohne Port angabe im Connection Pfad.

Im Programm Verzeichnis oder unter : "C:\Users\Public\Documents\Embarcadero\Studio\Fire DAC\" mus noch die "FDDrivers.ini" liegen inhalt :
Zitat:

[FDDrivers.ini]
Encoding=UTF8
Wenn ich mich recht erinnere war die existens der FDDrivers.ini das killerelement.

haentschman 21. Aug 2023 06:15

AW: Zugriff auf ADS Server
 
Moin...8-)
Zitat:

Suche in der ADS Hilfe nach "ads.ini File Support"
...ich habe die ini im Windows Pfad + den Pfad in den Umgebungsvariablen...nix :evil:

Frage: Ich habe noch keinen ODBC Treiber! Kann das damit zusammenhängen? :gruebel:

Sinspin 21. Aug 2023 06:58

AW: Zugriff auf ADS Server
 
Du brauchst kein ODCB. Der ist eh grauenhaft bei Zugriff auf ADS.

Hast Du die FDDrivers.ini gefunden? Wenn ich die bei mir unbenenne bekomme ich den gleichen Fehler wie du.

Configuring_Drivers_(FireDAC)

haentschman 21. Aug 2023 07:11

AW: Zugriff auf ADS Server
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallöle...8-)
Zitat:

Du brauchst kein ODCB
...nennt sich Verzweiflung. :lol:
Zitat:

Hast Du die FDDrivers.ini gefunden?
Ja. Es geht aber auch ohne ini. Mit 3 DLL.
@Sinspin: Dein Code aus #11 hätte eigentlich funktionieren müssen. (kein Server) Verstehe ich nicht...:gruebel:

:cheer: Ich habs...nach Stunden/Tagen probieren. :thumb:

Der Connection String oder die Einstellungen in der GUI waren falsch! :warn:

Falsch: ConnectionString := 'DriverID=ADS;ServerTypes=Remote;Server= \\db2;Database=\\Db2\data\xxx.add;User_Name=xxx;Password =xxx';
Richtig: ConnectionString := 'DriverID=ADS;ServerTypes=Remote;Database=\\Db2:62 62\data\xxx.add;User_Name=xxx;Password=xxx';

Der Server Eintrag muß raus! Der Port muß in die Database Property.


Danke an alle die mit mir gelitten haben...:P

Sinspin 21. Aug 2023 08:28

AW: Zugriff auf ADS Server
 
Laut Hilfe klappt es auch ohne Ini wenn man ein TFDPhysADSDriverLink erzeugt.
Ganz wichtig, bevor man die erste Connection erstellt.
Den DriverLink erzeuge ich, die ini ist bei mir leer, oder besser ohne ADS spezifische Info. Ist lange her dass ich mich mit

Ich erzeuge alles im Quelltext um immer genau zu wissen was in welchen Properties steht, TFDConnection Komponente verwende ich nicht direkt. Ich habe eine eigene die ich für Designzeit arbeiten verwende. Die ist zur Laufzeit tot.
Meine Queries hohlen sich zur Laufzeit beim erzeugen selber ihre Connection.

Zitat:

Zitat von haentschman (Beitrag 1525899)
Hallöle...8-)
Zitat:

Hast Du die FDDrivers.ini gefunden?
Ja. Es geht aber auch ohne ini. Mit 3 DLL.
@Sinspin: Dein Code aus #11 hätte eigentlich funktionieren müssen. (kein Server) Verstehe ich nicht...:gruebel:

Genau. Deswegen im Quelltext erzeugen und Kontrolle behalten was wirklich in der Komponente steht. Nicht dass noch irgendwo was vor letzten Test steckt und einem ein Paar extra Runden beschehrt.
Zitat:

Zitat von haentschman (Beitrag 1525899)
:cheer: Ich habs...nach Stunden/Tagen probieren. :thumb:

Der Connection String oder die Einstellungen in der GUI waren falsch! :warn:
Der Server Eintrag muß raus! Der Port muß in die Database Property.

Danke an alle die mit mir gelitten haben...:P

:thumb:

milo 21. Aug 2023 09:39

AW: Zugriff auf ADS Server
 
Zitat:

Zitat von haentschman (Beitrag 1525899)
Hallöle...8-)

Falsch: ConnectionString := 'DriverID=ADS;ServerTypes=Remote;Server= \\db2;Database=\\Db2\data\xxx.add;User_Name=xxx;Password =xxx';
Richtig: ConnectionString := 'DriverID=ADS;ServerTypes=Remote;Database=\\Db2:62 62\data\xxx.add;User_Name=xxx;Password=xxx';

Der Server Eintrag muß raus! Der Port muß in die Database Property.
Danke an alle die mit mir gelitten haben...:P

Hallo Haentschman ,

freut mich, dass Du eine Lösung gefunden hast! Ich werde die in meine Lösungssammlung mit aufnehmen. Normalerweise verwende ich IMMER die angesprochenen DLLs und (angepasste) TADS-Connections. Allerdings auch in den meisten Fällen mit einem direkten Zugriff auf die Tabellen ohne DataDictionary.

Gruß :D Michael

haentschman 21. Aug 2023 10:03

AW: Zugriff auf ADS Server
 
Hallöle...8-)
Zitat:

ohne DataDictionary
...habe ich noch nicht probiert. :wink:

Frickler 22. Aug 2023 09:23

AW: Zugriff auf ADS Server
 
Zitat:

Zitat von haentschman (Beitrag 1525920)
Hallöle...8-)
Zitat:

ohne DataDictionary
...habe ich noch nicht probiert. :wink:

Das kann man nicht einfach so wählen, vor allem, wenn die Datenbank nicht von einem selbst ist. Denn wenn ein Dictionary beim Erstellen der Datenbank verwendet wurde, "hängen" die Tabellen daran und können ohne gar nicht geöffnet werden (man müsste sie mit ARC "Free Data Dictionary Bound Table" aushängen; dann legt sich aber das Fremdprogramm zum Sterben nieder).

Das Dictionary macht den Unterschied zwischen ich sach mal "DBase-Modus" und einer echten Datenbank. Es enthält Objekte wie Views, Prozeduren, Trigger, Zugriffsrechte und RI.

milo 23. Aug 2023 12:58

AW: Zugriff auf ADS Server
 
Zitat:

Zitat von Frickler (Beitrag 1525961)
dann legt sich aber das Fremdprogramm zum Sterben nieder).

Das Dictionary macht den Unterschied zwischen ich sach mal "DBase-Modus" und einer echten Datenbank. Es enthält Objekte wie Views, Prozeduren, Trigger, Zugriffsrechte und RI.

Ja, sicher, aber leider ohne Aussicht auf Weiterentwicklung...und wenn man anders an die Daten nicht drankommt.

Gruß :D Michael

Frickler 23. Aug 2023 17:47

AW: Zugriff auf ADS Server
 
Zitat:

Zitat von milo (Beitrag 1526012)
Ja, sicher, aber leider ohne Aussicht auf Weiterentwicklung...

Das ist wirklich dumm gelaufen. Da muss man halt umsteigen. Datenbanken, die wie ADS sowohl den lokalen Modus ohne Server (aber Multiuser) als auch den Client-Server Modus mit Server bieten gibts nicht viel. Mir ist da nur DBISAM bzw die Weiterentwicklung ElevateDB bekannt. Ja, Firebird und NexusDB haben einen serverlosen Modus. Aber beides nur Single User.

milo 24. Aug 2023 10:15

AW: Zugriff auf ADS Server
 
Solange es läuft ist es gut. Beizeiten wird dann auch ein Wechsel vollzogen. Wahrscheinlich zu FireBird.

Gruß :D Milo


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 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