Minimalbeispiel für Zugriff auf MS SQLServer
-
- Lazarusforum e. V.
- Beiträge: 238
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Minimalbeispiel für Zugriff auf MS SQLServer
Hallo,
ich möchte unter Windows 10 einen MS SQLServer im Netzwerk kontaktieren und eine einfache Abfrage ausführen.
Mit Zeos und TMSSQLConnection bekomme ich keine Verbindung hin, trotz speichern von dblib.dll oder ntwdblib.dll im Projektverzeichnis oder systemverzeichnis und Angabe von LibraryLocation.
Mit ODBCConnection kann ich zwar eine Verbindung aufbauen, die Anzeige von Umlauten bekomme ich aber nicht hin.
Hat jemand vielleicht ein Minimalbeispiel für den Zugriff auf SQLServer >= Version 2008, mit korrekter Anzeige der Umlaute?
Eb
ich möchte unter Windows 10 einen MS SQLServer im Netzwerk kontaktieren und eine einfache Abfrage ausführen.
Mit Zeos und TMSSQLConnection bekomme ich keine Verbindung hin, trotz speichern von dblib.dll oder ntwdblib.dll im Projektverzeichnis oder systemverzeichnis und Angabe von LibraryLocation.
Mit ODBCConnection kann ich zwar eine Verbindung aufbauen, die Anzeige von Umlauten bekomme ich aber nicht hin.
Hat jemand vielleicht ein Minimalbeispiel für den Zugriff auf SQLServer >= Version 2008, mit korrekter Anzeige der Umlaute?
Eb
- af0815
- Lazarusforum e. V.
- Beiträge: 6117
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Minimalbeispiel für Zugriff auf MS SQLServer
SQLd mit den Treibern von FreeTDS läuft bei mir, egal Windows oder Linux. 32 bit Lazarus.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 238
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Re: Minimalbeispiel für Zugriff auf MS SQLServer
benutzt du MSSQLConnection oder ODBCConnection?
- af0815
- Lazarusforum e. V.
- Beiträge: 6117
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Minimalbeispiel für Zugriff auf MS SQLServer
MSSQLConnection
Siehe auch viewtopic.php?f=17&t=14525&p=130856&hilit=MSSQL#p130856
und allgemeine Diskussion
viewtopic.php?f=17&t=13447&p=119959&hilit=MSSQL#p119959
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1346
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
- CPU-Target: 32/64Bit
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Die FreeTDS DLL's kann man von hier laden:
http://svn.code.sf.net/p/zeoslib/code-0 ... b/freetds/
Dann im TZConnection FreeTDS einstellen, damit sollte es gehen.
"ntwdblib.dll" ist veraltet, dies geht auch nur wenn man die EXE als 32-Bit übersetzt, da diese DLL es nur als 32 Bit Variante gibt.
http://svn.code.sf.net/p/zeoslib/code-0 ... b/freetds/
Dann im TZConnection FreeTDS einstellen, damit sollte es gehen.
"ntwdblib.dll" ist veraltet, dies geht auch nur wenn man die EXE als 32-Bit übersetzt, da diese DLL es nur als 32 Bit Variante gibt.
-
- Lazarusforum e. V.
- Beiträge: 238
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Vielen Dank für eure Infos.
Ich habe beides jetzt kurzfristig nicht hinbekommen.
Hab ein 32bit Lazarus installiert und den Code von af0815 probiert, bekomme da aber die Meldung 'Unable to connect: Adaptive Server is unavailable or does not exist (<Servername>)
Beim Vorschlag von MmVisual mit Zeos kommt sinngemäß die selbe Fehlermeldung.
Mir läuft leider jetzt die Zeit davon, sodass ich das ganze jetzt abbrechen muss.
Vielleicht mache ich in ein paar Wochen, wenn ich hoffentlich mehr Zeit habe, einen neuen Anlauf.
Trotzdem vielen Dank,
Eb
Ich habe beides jetzt kurzfristig nicht hinbekommen.
Hab ein 32bit Lazarus installiert und den Code von af0815 probiert, bekomme da aber die Meldung 'Unable to connect: Adaptive Server is unavailable or does not exist (<Servername>)
Beim Vorschlag von MmVisual mit Zeos kommt sinngemäß die selbe Fehlermeldung.
Mir läuft leider jetzt die Zeit davon, sodass ich das ganze jetzt abbrechen muss.
Vielleicht mache ich in ein paar Wochen, wenn ich hoffentlich mehr Zeit habe, einen neuen Anlauf.
Trotzdem vielen Dank,
Eb
-
- Beiträge: 1346
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
- CPU-Target: 32/64Bit
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Ist beim MsSQL Server der "TCP/IP Port" 1433 auch aktiviert?
Das muss man extra frei schalten, sonst geht es nicht.
(Und bei der Firewall ebenfalls)
Das muss man extra frei schalten, sonst geht es nicht.
(Und bei der Firewall ebenfalls)
- af0815
- Lazarusforum e. V.
- Beiträge: 6117
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Das heißt der Server antwortet nicht auf dem default Port. Achtung es gibt gerade beim MS-SQL Server auch sogenannte benannten Instanzen installierte Versionen. Und da an wird es öde.
Kommst du mit den MS SQL Management Studio auf den Server ? Wenn ja, was ist der genaue Pfad/Adresse zum Server x.x.x.x/name lautet so wird es .... äh .... interessant. Das ist eine getrennte Instanz und ein wenig schwerer zu erreichen. Ich vermeide solche Installationen, wie der Teufel das Weihwasser

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 238
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Wir haben bei der Installation keine Port aktiviert oder deaktiviert.
Firewall war in meiner Konstellation keine dazwischen.
af0815 hat geschrieben: ↑Do 12. Jan 2023, 18:24Das heißt der Server antwortet nicht auf dem default Port. Achtung es gibt gerade beim MS-SQL Server auch sogenannte benannten Instanzen installierte Versionen. Und da an wird es öde.
Kommst du mit den MS SQL Management Studio auf den Server ? Wenn ja, was ist der genaue Pfad/Adresse zum Server x.x.x.x/name lautet so wird es .... äh .... interessant. Das ist eine getrennte Instanz und ein wenig schwerer zu erreichen. Ich vermeide solche Installationen, wie der Teufel das Weihwasser![]()
Mit dem Management Studio komme ich drauf, aber es ist tatsächlich eine benannte Instanz ...
Aber wie gesagt, das Thema ist jetzt erstmal nicht mehr aktuell.
Ich hätte morgen auf einem kurzfristig angesetzten Meeting die Möglichkeit gehabt, Lazarus vorzuführen, aber dafür hätte ich zwingend den SQL-Server Zugriff zeigen müssen. Na ja, anderes mal.
- af0815
- Lazarusforum e. V.
- Beiträge: 6117
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Das mit den benannten Instanzen ist ein Problem, das sich nicht nur in Lazarus hineinzieht. Es ist hier so, das M$ eine Serverinstallation shared über strikt getrennte Instanzen. Die (freien) Treiberschichten sind aber nur bedingt darauf ausgelegt. Das erschwert den einfachen Umgang mit diesen Instanzen, deswegen vermeiden wir sie unbedingt, wenn die Installation von uns gesteuert werden kann.Eb hat geschrieben: ↑Do 12. Jan 2023, 23:13af0815 hat geschrieben: ↑Do 12. Jan 2023, 18:24Kommst du mit den MS SQL Management Studio auf den Server ? Wenn ja, was ist der genaue Pfad/Adresse zum Server x.x.x.x/name lautet so wird es .... äh .... interessant. Das ist eine getrennte Instanz und ein wenig schwerer zu erreichen. Ich vermeide solche Installationen, wie der Teufel das Weihwasser![]()
Mit dem Management Studio komme ich drauf, aber es ist tatsächlich eine benannte Instanz ...
Zusammen mit SQLdb gibt es beim SQL-Server ein paar "features", besonders wenn stored Procedures ins Spiel kommen, läuft da einiges noch nicht rund. Es könnte mit ZEOS besser sein, das habe ich aber in letzter Zeit auf das nicht getestet, weil es eine Fremdkomponente ist. Generell würde ich Lazarus und Datenbanken, nicht mal so schnell präsentieren, da kann man rasch auf sehr dünnes Eis geraten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1346
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
- CPU-Target: 32/64Bit
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Ich hatte einmal für eine Firma eine Datenbank für eine Maschinensteuerung programmiert.
Der Kunde wollte MsSQL als Server haben, damit das "Sicher" ist.
Ich wollte jedoch nicht so lange warten bis die IT das hin bekommt, also habe ich erst einmal mit SQLite das ganze gemacht und es hat funktioniert.
Ein halbes Jahr später war dann (endlich) die IT auch mal soweit und hatte den MsSQL Server am laufen - endlich.
Die Umstellung war relativ einfach, ich nutzte dazu die ZEOS Komponente.
Wichtig dabei war, dass man nur solche SQL Befehle nutzt, die beide können, relativ einfache SELECT Befehle usw. Damit ist es dann relativ egal was für ein SQL Server im Hintergrund läuft.
Um was zu präsentieren kann man erst einmal mit SQLite das ganze Projejt starten, relativ autonom und mit dem Hinweis "Umstellung auf MsSQL kommt noch".
Nun, für das Meeting heute ist das etwas "knapp".
Der Kunde wollte MsSQL als Server haben, damit das "Sicher" ist.
Ich wollte jedoch nicht so lange warten bis die IT das hin bekommt, also habe ich erst einmal mit SQLite das ganze gemacht und es hat funktioniert.
Ein halbes Jahr später war dann (endlich) die IT auch mal soweit und hatte den MsSQL Server am laufen - endlich.
Die Umstellung war relativ einfach, ich nutzte dazu die ZEOS Komponente.
Wichtig dabei war, dass man nur solche SQL Befehle nutzt, die beide können, relativ einfache SELECT Befehle usw. Damit ist es dann relativ egal was für ein SQL Server im Hintergrund läuft.
Um was zu präsentieren kann man erst einmal mit SQLite das ganze Projejt starten, relativ autonom und mit dem Hinweis "Umstellung auf MsSQL kommt noch".
Nun, für das Meeting heute ist das etwas "knapp".
-
- Beiträge: 1346
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
- CPU-Target: 32/64Bit
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Noch ein Tipp wie du heraus finden kannst ob der MsSQL Server korrekt konfiguriert ist:
- Lade von der Mmvisual.de Seite das "EleLa" herunter und installiere es
- Kopiere die SQLDB DLL in das Verzeichnis (64 Bit Variante die DLL umbenennen in "sybdb-64.dll")
- Gehe in die EleLa Datenbank Konfiguration (Extras-F10 > Log > Optionen > Datenbank)
- Wähle da FreeTDS aus und stelle die Server Konfiguration ein.
- Die Taste "Erzeuge Datenbank" erzeugt dann die DB incl. Tabellen.
- Fehler sieht man dann im Hintergrund im Log.
Das Programm ist mit Lazarus geschrieben und nutzt die Zeos Komponente, also im Prinzip das gleiche wie du haben möchtest, nur mit der Sicherheit dass der Code Clientseitig funktioniert.
- Lade von der Mmvisual.de Seite das "EleLa" herunter und installiere es
- Kopiere die SQLDB DLL in das Verzeichnis (64 Bit Variante die DLL umbenennen in "sybdb-64.dll")
- Gehe in die EleLa Datenbank Konfiguration (Extras-F10 > Log > Optionen > Datenbank)
- Wähle da FreeTDS aus und stelle die Server Konfiguration ein.
- Die Taste "Erzeuge Datenbank" erzeugt dann die DB incl. Tabellen.
- Fehler sieht man dann im Hintergrund im Log.
Das Programm ist mit Lazarus geschrieben und nutzt die Zeos Komponente, also im Prinzip das gleiche wie du haben möchtest, nur mit der Sicherheit dass der Code Clientseitig funktioniert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6117
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Minimalbeispiel für Zugriff auf MS SQLServer
Übrigends lässt sich der MS SQLServer (2019, 2017) hervorragend auf Ubuntu LTS installieren und verhält sich genauso wie sein Pedant und Windows Server. Und die Express Version ist schon recht potent. Siehe auch https://www.microsoft.com/de-de/sql-ser ... comparison
Nein ich habe keine Verbindung zu M$. Aber es geht unter, das man den SQL-Server auch unter Linux betreiben kann, allerdings NUR 64 AMD/INTEL CPUs, keine Arm oder andere CPUs.
Edit: Schreibfehler korr.
Nein ich habe keine Verbindung zu M$. Aber es geht unter, das man den SQL-Server auch unter Linux betreiben kann, allerdings NUR 64 AMD/INTEL CPUs, keine Arm oder andere CPUs.
Edit: Schreibfehler korr.
Zuletzt geändert von af0815 am Fr 13. Jan 2023, 10:33, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 813
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz 2.2.6
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien