Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

SQLExpress

SQL Express von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17103
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

SQLExpress

Beitrag von Manfred » Mi, 20. Dez 2006 15:03

Hi,

ich habe jetzt einiges hier durchgelesen, habe aber noch nicht alles für mich klären können.

Mich würde einmal interessieren, welche Erfahrung hier mit SQLExpress gemacht wurde und evtl. welche Anwendungen damit verwirklicht wurden. Was für eine Beurteilung würdet ihr, die ihr Erfahrungen damit gesammelt habt, abgeben? Wo sind die Stärken, wo sind die Schwächen, wenn ihr auf die Praxis seht und danach urteilen solltet?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6830
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Beitrag von Tom » Mi, 20. Dez 2006 15:17

Hallo, Manfred.

Ich benutze SQLexpress vor allem zur Kommunikation mit Datenbanken von Drittherstellern. Da gibt es zum Beispiel einen großen Kunden, der verfügt über eine zentrale Kontaktmanagementsoftware, die einen SQL-Server benutzt. Wir prüfen diese Datenbank auf Doppelungen bei Neueingaben, holen uns in einem gesonderten, permanent laufenden Thread neu erfaßte Kontaktdaten ab (Mitarbeiter) und erzeugen Datensätze bei der Erfassung in unserer Software, alles zusätzlich zu unserer eigenen Datenhaltung. Dabei greifen wir auf Stored Procedures zurück, erfragen aber auch Cursor (Current Record Sets) und parsen diese. Alles mit SQLexpress.

Es gibt noch einen anderen, ähnlich gelagerten, aber weitaus weniger komplexen Fall, da erledigen wir die Aufgabe mit der ODBCDBE. Dies nur am Rande.

SQLexpress ist schnell und robust. Aber die Herangehensweise ist natürlich eine völlig andere als bei der Verwendung einer Alaska-DBE. Es ist letztlich, als würde man irgendeine API integrieren, quasi eine Schnittstelle schaffen. Es gibt bei SQL keine datensatzorientierte Navigation, jedenfalls nicht nativ, und man muß bei der Datenaufbereitung höllisch vorsichtig sein, was die Datentypen anbetrifft. SQL-Server sind monolithische Blackboxen. Datenmengen, die man als Antwort zurückerhalten hat, haben nur eine begrenzte Aktualität, anders als eine Tabelle, auf die über die man mit einer Alaska-DBE zugreift.

SQLexpress implementiert die Schnittstelle zum SQL-Server sehr konsequent, aber man muß sich, wohl oder übel, mit Cursorn, Statements, Server-Konnektierungen usw. befassen. Es ist nicht wie bei der ODBCDBE, die letztlich die bekannten DBE-Funktionen und Kommandos abzubilden versucht, sondern ein anderes und natürlich objektorientiertes Paradigma. Ich würde derzeit keine komplette Anwendung auf diese Art programmieren (wollen), weil ich aus vielen Gründen die datensatzorientierten DBEs bevorzuge (und SQL einige andere Nachteile hat), aber generell ist es ein empfehlenswertes, ausgereiftes Produkt.
Herzlich,
Tom

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17103
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Beitrag von Manfred » Mi, 20. Dez 2006 15:26

Hi Tom,

hm, eigentlich hatte ich bisher den Plan gefasst irgendwann einmal komplett auf SQL umzustellen und mich von Xbase++ zu verabschieden. Allerdings gibt es wohl nichts einfacheres, als Xbase++.....

Allerdings werde ich irgendwann eine Lösung anbieten müssen/wollen, die mehrere Outlets über Netzwerke/Internet mit einem gemeinsamen Datenbestand verbinden. Ein Webshop soll auch irgendwann dahinterstehen. Das ist mit DBF nicht durchführbar.

Nun habe ich auch vom ADS Server gelesen, aber ich meine da hättest Du auch von abgeraten, wenn man so Lösungen benötigt, wie oben beschrieben.

Tja, welchen Weg schlägt man da ein?
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 21:55

Hallo Manfred,

zu 1.)
SQLExpress macht es einem leicht (auch wenn man es anders macht als bei DBE) auf SQL Server oder - wie ich es nutze - Access Dateien zuzugreifen. Auch Excel etc. ginge, wobei Excel wohl besser über ActiveX zu bedienen ist.
Im Rahmen einer Datenmigration muß ich von einem fremden Access Programm mit veralterter Programmversion Daten in DB2 Ladeform bringen. Die Access Textfelder sind teilweise mehrzeilig wie ein Memo, alle Versuche diese Datei mit Access zu exportieren und sauber weiterzuverarbeiten sind bei mir - wohl auch wegen schlechter Access Kenntnisse - fehlgeschlagen (export nach DBF geht nur mit einzeiligen Textfelder ohne Probleme und die Feldnamen müssen passen). Mit SQL Express war es recht einfach an die Daten zu kommen und diese in DBF abzulegen.
Auch habe ich Tests mit SQL Server durchgeführt, wobei bei meinen Datenmengen dieses sich nicht rechnet.

zu 2.)
Grundsätzlich kann man Internetshops und Anwendungen sehr gut mit Xbase++ und DBF laufen lassen, wobei die Daten am Besten nicht verteilt sondern zentral auf dem Webserver vorgehalten werden. Nur große Datenbestände können auf einem SQL Server schneller verwaltet werden, als in lokalen DBF, wobei dies nicht zwingend der Fall ist.

Eine SQL Datenbank im Internet auf einem Port freizugeben und darauf ungeschützt zuzugreifen wäre mir zu riskant.

Wenn du geschäftskritische SQL Daten verwalten möchtest, solltest du aber auch Phil's PostGreSQL Classe in Betracht ziehen. Er hat viel Erfahrung mit der freien PostGreSQL und eine direkte API Schnittstelle entwickelt (kostet nix), die schneller ist als ODBC (SQLExpress nutzt ODBC), wenn auch nicht so flexibel. In der letzten c't stand ein Artikel über freie kostenlose SQL Server Varianten, die gibt es von MS-SQL und auch IBM DB2 Express C (hatte am wenigsten Einschränkungen). MySQL ist nur für OpenSource oder inhause Anwendungen frei.
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 22:05

Manfred hat geschrieben:irgendwann einmal komplett auf SQL umzustellen und mich von Xbase++ zu verabschieden. Allerdings gibt es wohl nichts einfacheres, als Xbase++.....
die Sprache brauchst du nicht zu wechseln, nur weil du auf SQL Datenbanken und Abfragesyntax umsteigen willst, das harmoniert wunderbar.
Manfred hat geschrieben:Allerdings werde ich irgendwann eine Lösung anbieten müssen/wollen, die mehrere Outlets über Netzwerke/Internet mit einem gemeinsamen Datenbestand verbinden. Ein Webshop soll auch irgendwann dahinterstehen. Das ist mit DBF nicht durchführbar.
Dieses macht man am Besten mit Terminalserver verschlüsselter Internet DSL-Leitung. Datenbestände gegenseitig abzugleichen ist ein übles Geschäft.
In die Mitte ein Terminalserver mit guter DSL Anbindung (oder wenn es zu viele Empfänger sind auch schnellerer Standleitung ins Internet) und in die Filialen Terminals (oder auch PC fall noch zusätzlich lokale Programme nötig sind), am besten auch mit DSL Flatrate. Dann muss man sich natürlich um die Verschlüsselung kümmern, auch wenn diese bei Terminalserver nicht ganz so wichtig ist wie bei Datentransport (es werden nur Teile einer Bitmap übertragen). Da macht man normalerweise SSL verschlüsselte Tunnel, bzw. VPN.
Da das von der Sicherheit aber sehr heikel ist, würde ich die Netzwerkseite von jemand machen lassen, der sich damit gut auskennt.
Deine Xbase++ Programme laufen wie bisher im Netzwerk, da muss nichts geändert werden.
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17103
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Beitrag von Manfred » Mi, 20. Dez 2006 22:20

Hi Hubert,

Terminalserver? Das ist Windows, fällt absolut flach. Meine Kunden wollen Linux Server haben. (und ich auch. Die möchten am liebsten alles unter Linux haben....)

Was evtl. im Internet bei einem Anbieter von Servern läuft, dass wäre nur an 2.Stelle wichtig.

Bei mySql habe ich bei Hosteurope mal nachgefragt, und die Hotline meinte, die wäre auf den Servern drauf, würde mitgemietet werden und kostet nichts extra. (Ich hoffe wir haben uns damals richtig verstanden. Er meine Frage und ich seine Antwort)

SQLExpress arbeitet also mit ODBC?! Hm, ich dachte da gibt es Probleme mit? naja, vielleicht liege ich da falsch.

Eine SQL Datenbank im Internet auf einem Port freizugeben und darauf ungeschützt zuzugreifen wäre mir zu riskant.
Wie machen das denn die Shops? Irgendwie wird es da wohl einen Weg geben, die Daten zu bekommen, ohne das es gefährlich ist.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 22:36

Hallo Manfred,

wenn du einen Linux Shop machen willst, dann wird das mit Xbase++ nicht gehen. Die meisten nutzen in diesem Zusammenhang wohl PHP, wobei man hier sehr aufpassen muss, damit man nicht in die Sicherheitsprobleme reinfällt ;-). Normalerweise sitzen WebServer und MySQL Datenbank (z.B. bei einem Hoster) auf einer Maschine oder zumindest im gleichen lokalen Netzwerk, sodass keine Internet Freigabe des Server nötig ist.

Es gibt auch noch andere (bessere ?) Sprachen fürs Webprogrammieren unter Linux, eventuell könnte auch xHarbour da schon geeignet sein, da man für WEB Programmierung ja keine GUI braucht, ich mache sowas halt mit Xbase++ oder PowerBasic, aber das braucht einen Windows-Server.
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17103
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Beitrag von Manfred » Mi, 20. Dez 2006 22:46

Hi Hubert,

Mistverständnis.

Linuxserver, nicht Linuxsoftware.

Auf einem Server könnte ja eine SQL Datenbank laufen, die ich mit "SQL in Xbase++" ansprechen würde. Ich meinte nur, dass sie am liebsten Linux komplett möchten. Dass das nicht mit Xbase++ geht ist mir schon klar.

Ich forsche nur die ganze Zeit nach, ob und wenn ja wie ich das am besten umsetzen kann.
Wen ich ein VPN habe, dann ist das sicher, aber mit DBF über Internet nicht ratsam, weil es halt zu langsam wird, bzw. einschläft. Die Frage ist nur, kann man sowas überhaupt irgendwie umsetzen. Als reine PHP Anwendung z.B. sicherlich machbar, aber ich möchte gerne bei Xbase++ als Frontend bleiben. Deshalb meine Frage hier, wie es mit SQLExpress steht. Ich meine mich erinnern zu können, das Wolfgang Ciriack mal irgendwas dazu verlauten ließ und das er total begeistert wäre. (Ich hoffe ich vertue mich jetzt nicht mit dem Namen)
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 22:58

Hallo Manfred,

also du meinst du hast Windows Clients mit deiner Software, die im LAN oder VPN geschützen Intranet auf einen SQL-Server zugreifen sollen, der auf einem Linux-Server liegt. Wenn es für Linux ODBC Treiber gibt, dann kann SQLExpress auch darauf zugreifen. Ob es unter Linux aber einen ODBC-Treiber gibt, weiß ich nicht.

Was oft beschrieben wird, ist die Nutzung eines Linux Fileservers, der mit dem Programm SAMBA (Server für Windowsfreigaben) Laufwerke und Verzeichnisse für angeschlossene Windowsrechner freigibt.
Auf diesen kann man dann z.B. DBF Dateien öffnen, was im lokalen LAN je nach Anforderung 20 bis 30 Nutzer bedienen kann, hängt aber stark von der Art der Anwendung ab. Über das Internet mit VPN wäre das schon auch möglich, aber die Geschwindigkeit für z.B. ein REPLACE ALL .... wäre eine Katastrophe wenn es nicht nur einige Hundert Datensätze sind.
Weiterhin wäre die Datensicherheit immer in Gefahr, da dabei ja offene Indexdateien gepflegt werden müssten. Jeder Netzwerkfehler (im Internet recht häufig, wenn auch nicht lang) kann die Indexe zerstören oder nur beschädigen, wobei letzteres schlimmer ist, da eventuell keine Fehlermeldung erfolgt. DBF und natürlich auch DBT Dateien könnten auch schaden nehmen.

Ein ODBC oder API Zugriff auf einen SQL Server würde hier schon Vorteile bringen, aber wie gesagt, im ungeschützten Internet wäre mir die Freigabe zu gefährlich.
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:02

Manfred hat geschrieben:Linuxserver, nicht Linuxsoftware.
...
Als reine PHP Anwendung z.B. sicherlich machbar, aber ich möchte gerne bei Xbase++ als Frontend bleiben.
PHP würde man einsetzen um die ganze Programmlogik auf dem WebServer abzubilden, und als Frontend nur einen WebBrowser zu nutzen (genauso wie dies auch mit Xbase++ CGIs oder XB2.NET gemacht würde.)

Ein Xbase++ Frontend mit WINE soll doch auch auf Linux laufen oder habe ich das falsch verstanden ...
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 17103
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Beitrag von Manfred » Mi, 20. Dez 2006 23:08

Hi,

nochmal kurz zum Verständnis:

Die Server haben bis jetzt alle Linux mit Samba. Das klappt bestens.
Innerhalb eines Outlets kein Problem.

Die Outlets sind jetzt per VPN verbunden über das Internet. Im Moment mehr zum spielen und testen, um zu sehen, was man so alles über Quasi Festverbindung machen kann.

Ich habe mal vor einigen Monaten aus Spass an der Freude ein Programm aufgerufen, das eine DBF über das VPN vom entfernten Rechner öffnen sollte. Ich müßte es nochmals probieren, vielleicht habe ich was falsch gemacht, aber es war eine Katastrophe. Es hat gedauert und gedauert.....

Es wäre super, wenn die Outlets nur die Programm starten und dann alle auf einem zentralen Server (der in einem Outlet steht) auf die Daten zugreifen.
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:35

Hi Manfred,

jetzt mußt du also Prüfen, ob du einen ODBC Treiber für die Linux-SQL Datenbank bekommst, oder du schaust gleich mal die PostGreSQL Xbase++Treiber von Phil an (auf dessen Homepage, Martin hat ja die Adresse das letzte mal angegeben ;-) ). Eventuell greift dieser direkt auf eine IP zu. Ich bin mir jetzt nicht mehr sicher, es kann auch sein, dass MySQL etc. den ODBC Treiber auf dem WindowsPC installiert und dann per IP Adresse und Portnummer auf den Server (auch Linux ?) zugreift.

Auf jeden Fall würde ich dann in der Systemsteurung die ODBC-Verwaltung aufrufen und versuchen eine Verbindung mit dem Server zu bekommen, bevor ich mich mit Xbase++ versuchen würde. Wenn eine Verbindung möglich ist, dann kann man mit der Testversion von SQLExpress prüfen ob man damit klar kommt.

Wichtig wäre auch das Erlernen von SQL Befehlen, damit man mit SELECT ... nur die Tabellen und Datensätze anfordert, die man wirklich braucht. Ein SELECT * (hole alles) ... ist nicht viel schneller als eine DBF.
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13822
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Beitrag von brandelh » Mi, 20. Dez 2006 23:42

Hi,

ich habe gerade mal in der Systemsteuerung nachgesehen, also du must hier einen HOST Namen des Servers eingeben, das müsste auch eine IP Adresse sein können. Unter den 'Connect ...' Einstellungen kann man dann noch den Port festlegen. Somit sollte es möglich sein ein LINUX MySQL Server über ODBC und damit SQLExpress anzusprechen.
Gruß
Hubert

wsoftie
Rookie
Rookie
Beiträge: 11
Registriert: Sa, 13. Mai 2006 23:24
Wohnort: Hamburg
Kontaktdaten:

xBase++, SQLExpress, MySQL unter Linux

Beitrag von wsoftie » Do, 11. Jan 2007 22:28

Hi Folks,

habe bei einer Migration einer Clipper-Branchensoftware alle im Internet benötigten Daten in MySQL-Tabellen umgesetzt. Da hinter der MySQL Installation ein Hoch-Verfügbarkeitskeit-Linux steht, ist bei Hardware-Problemen das System nach maximal 2.5 Minuten wieder verfügbar.

Aufgrund der bisherigen Erfahrungen werde ich alle Datenbanken vom Novell/ADS-Server in Richtung MySQL migrieren. Die Anmeldung am SQL-Server kann via INI-Datei gesteuert werden, so ist es möglich sogar verteilte SQL-Server zu nutzen.

Nachfolgend ein kleines Beispiel der Anmeldung unter Win-Doof :

M->oSQLConnect := SQLConnection():new()
M->oSQLConnect:driverConnect( nil , ;
"DRIVER={MySQL ODBC 3.51 Driver};" + ;
"SERVER=" + _SQLhost + ";" + ;
"DATABASE=" + _SQLbase + ";" + ;
"USER=" + _SQLuser + ";" + ;
"PASSWORD=" + _SQLpass + ";" )

Die benötigten Werte werden vorher aus einer INI - Datei Benutzer- und/oder Applikations-/Datenbank-bezogen ausgelesen.

Ciao
Werner

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Beitrag von Rudolf » Sa, 13. Jan 2007 9:30

Hallo,
habe mit SQLEXPRESS sehr gute Erfahrungen gemacht. Habe ein sehr umfangreiche Lösung unter MSSQL und eine mit MYSQL, die beide problemlos laufen.
Unter MSSQL habe ich auch eine Internetanbindung programiert, die komplette SQL Datasets über SSL hin und herschickt. Ist eigentlich ganz einfache, wenn man weiss wie ;-) Boris hat mir da sehr geholfen. Diese Lösung ist am sichersten. Über Geschwindigkeit kann ich noch nicht so viel sagen, da die intensiven Tests erste beginnen.
Unter MYSQL habe ich eine direkte Anbindung an den OSCOMMERCE Internetshop geschrieben, klappt super. Ist zwar nicht sicher, aber dafür sehr schnell und einfach zu realisieren.
Für die normale Programmierung mit SQL muss man im Vergleich zu DBASE ziemlich umdenken. Aussedem kann man grosse Tabellen im Browser nicht vollständig Darstellen, dauert zu lange das Dataset einzulesen. Brauche das aber um z.B. eine inkrementelle Suche über den Datenbestand zu machen.
Habe mir aber mit der Zeit ein paar komfortabe Tools gebaut, die mir das Leben sehr vereinfachen. Bei Bedarf kann ich sie hier zur Verfügung stellen.
Ich habe wieder ein grosses Projekt das ich mit MYSQL begonnen habe. Bin aber dann wieder auf DBF zurück. Ich habe mich entschieden das System in 2 Varianten anzubieten, einmal mit normalen DBF's und einmal mit ADSL. Der Server bei ADSL kann dann auch unter LINUX laufen. Habe dann ein System für verschiedene Anforderungen und Preise zur Verfügung. Trotzdem kann ich bei Bedarf parallel gewisse Datenbestände in SQL Tabellen z.B. für Auswertungen oder Fremdprogramme schreiben.

Grüsse
Rudolf

Krause
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Mo, 08. Jan 2007 8:55
Wohnort: In Thüringen

Beitrag von Krause » Mo, 15. Jan 2007 0:03

Hi,

ich habe mit SQLEXPRESS (und ODBC) ebenfalls sehr gute Erfahrungen gemacht. Wir haben eine spezielle Schnittstelle zu einem SAP Kundensystem programmiert, hierbei dient eine Oracle 8i Datenbank als Plattform für so genannte Koppeltabellen.
Eine komplette Anwendung nach SQL portieren geht meines Erachtens nur dann, wenn man die gesamte Intelligenz der Anwendung auf den SQL - Server integriert. Alleine nur die Datenbanken auf SQL umzustellen bringt nicht wirklich den absoluten Kick, da heiß es schon ganz tief in die SQL Programmierung einsteigen...

Mit freundlichen Grüßen
Joachim Krause

Antworten