Client/Server-Programmierung Erstellung von Client/ServerDatenbankapplikationen unter Microsoft Visual FoxPro Wizards & Builders GmbH Diese Schulung dient der Einführung in die Client/Server-Programmierung mit Microsoft Visual FoxPro und Microsoft SQL Server Wizards & Builders GmbH Themenübersicht Client/Server Connections und Remote Views SQL-Pass-Through MS SQL-Server Unterschiede zu Server-DB Optimierung C/S The Red Classes Wizards & Builders GmbH Client/Server Konzepte der Client/ServerProgrammierung unter Microsoft Visual FoxPro Wizards & Builders GmbH Definition Datenbank Logische Datenunabhängigkeit Physikalische Datenunabhängigkeit Prozedurale Schnittstellen Effiziente Abarbeitung von Operationen minimale Datenredundanz Datenintegrität konkurrierender Datenzugriff Datensicherheit Datenschutz (Zugriffsschutz) Wizards & Builders GmbH Definition Client/Server Client/Server bedeutet: ein Zusammenspiel von mehreren Computern, mit der Verteilung der Aufgaben zwischen den Maschinen Der Server übernimmt Speicher und CPU intensive Aufgaben Der Client übernimmt Auswertungen und Präsentation Wizards & Builders GmbH Vorteile/Gründe Client/Server Geringere Hardwarekosten (statt Mainframe o.ä.) Geringere Entwicklungskosten (dito) Integration mit PC Software Skalierbarkeit von Architekturen (statt Multiuser) Datensicherheit (Mirroring, Backup) Geringere Belastung des Netzes weil es der Chef/Kunde so will ... (Marketing) Wizards & Builders GmbH Bewertung der Gründe Der Trend zu Client/Server kommt aus dem Bereich der Mainframes (Downsizing) Gründe für Upsizing: Sicherheit der Daten Anwendungen in WANs, sehr große Datenmengen (Gigabytes) der Wunsch des Kunden Wizards & Builders GmbH Architekturen Distributed Presentation Data Management Application Function Remote Presentation Data Management Application Function Distributed Function Data Management Application Function Remote Data Mgmt. Distributed Data Mgmt. Data Management Data Management Application Function Application Function Data Management Application Function Presentation Presentation Presentation Presentation Presentation Presentation Wizards & Builders GmbH Visual FoxPro und SQL-Server Visual FoxPro arbeitet im Client/Server Bereich besonders gut mit SQL Server zusammen (Upsizing Wizard) - was aber nichts über die erreichbare Performance aussagen soll ... Grundsätzlich sind fast alle hier vorgestellten Möglichkeiten auch mit anderen ODBC Datenquellen gegeben (in Abhängigkeit vom jeweiligen Treiber) Wizards & Builders GmbH ODBC-Architektur Application ODBC API Driver manager ODBC SPI ODBC driver Network interface Network Database Wizards & Builders GmbH Connections und Remote Views Interaktive und programmatische Definition von Connections/Remote Views Wizards & Builders GmbH ODBC-Manager ODBC-Manager (Systemsteuerung) Installation der ODBCVerbindung ggf. Network Lib ggf. Trusted Conn. ggf. Database Name Wizards & Builders GmbH Interaktive Definition Auswahl von Datasource oder Definiton einer Connection Auswahl Tabellen Definition von Remote Views Zusatzeinstellungen für Remote Views (im Menü) Wichtig: Vergabe von Parametern! Wizards & Builders GmbH Auswahl Datasource Anlegen / Öffnen Datenbank-container Auswahl Datasource oder Definition einer Connection Wizards & Builders GmbH Definition Connection User/Pwd/Databas e Aysnchron (?) EndanwenderWarnungen (?) Transaktionen Paketgröße diverse Zeiten Wizards & Builders GmbH Auswahl Tabellen Übersicht über „Database“ Join auf dem Server (siehe ODBC-Join) Wizards & Builders GmbH Definition Remote View (1) Komplett-download ohne Unterbrechung Parameter: ? Abfrage Variable Property Wildcards % _ Wizards & Builders GmbH Definition Remote View (2) Primärschlüssel Änderbare Felder „Send SQL-Update“ SQL-Where: Key Fields Key & Updatable Key & Modified Key & Timestamp (!) Wizards & Builders GmbH Zusatzparameter Remote View Share Connection No. of Records to Fetch at a time Maximum No. of Records to fetch Use Memo when character field length > No. of Records to Batch Update Fetch Memo Include Memo fields in Where-Clause Precompile on Backend Server Wizards & Builders GmbH Programmatisch Anlegen CREATE CONNECTION DATASOURCE sqlremote userid password CREATE SQL VIEW REMOTE oder CONNECTION <nameofconnection> USE AGAIN (ggf. gleiche Parameter!) NOREQUERY(gleiche Daten) NODATA (keine Daten, nur Struktur) Wizards & Builders GmbH SQL-Passthrough Direktzugriff auf SQL-ServerDatenbanken statt Verwendung von Remote Views in Microsoft Visual FoxPro Wizards & Builders GmbH Unterschiede zwischen Remote View / SQL-PassThrough Remote View: VFP SQL-Select Controlsource Connection-Mgmt. Default-Update-Info Metadaten in DBC Progressive Fetch SQL-Passthrough: Native Server SQL DDL-Zugriff Multiple Result-Sets Transactions Non-Updatable Cursorsetprop() Wizards & Builders GmbH Zugriff mit SQL-Passthrough Test der Connection (ODBC-Test) *-- Verbindung herstellen Handle=SQLConnect(‚data‘, ‘sa‘, ‘pwd‘) *-- Ausführen Abfrage =SQLExec(Handle, „SQL“, ‚cursor‘) *-- Arbeiten mit View (Update/Revert) =SQLDisconnect( Handle ) Wizards & Builders GmbH SQL-Connect / Metadata (1) SQLCONNECT( ) SQLSTRINGCONNECT( ) SQLDISCONNECT( ) SQLTABLES( * ) SQLCOLUMNS( * ) Wizards & Builders GmbH SQL-Statements (2) SQLEXEC( * ) SQLMORERESULTS( * ) SQLCANCEL( = ) SQLPREPARE( ) SQLCOMMIT( ) SQLROLLBACK( ) Abbruch Precompiling Commit Trans. Cancel Trans. Wizards & Builders GmbH SQL-Statements (3) SQLEXEC( Handle, StoredProcedure) SQLEXEC( Handle, Create Proc) myproc as select *, select *, select * / SQLEXEC SQLGETPROP( ) SQLSETPROP( ) AERROR( ) Wizards & Builders GmbH Parameter Aufruf mit Parametern: =SQLExec( Handle, „where = ?cVar“) =SQLExec( Handle, „{CALL sp_test ()}“) z.B. 2,4, ?@Result für Create Procedure sp_test @m1 int, @m2 int, @result int output as select @m1 * @m2 Float (N,F,B) wird zu N konvertiert Anzeigebreite 20 Date, Time wird zu Datetime Wizards & Builders GmbH Joins, Connection Defaults Outer Join auf Server: a *= b Outer Join auf ODBC: {oj expression} from {oj a left outer join b on a.id = b.id} SQLSETPROP/SQLGETPROP( 0 ) Wizards & Builders GmbH Connection Properties ConnectString, DataSource, UserID, Pw DispLogin, DispWarning, ConnectBusy Connect/Idle/QueryTimeout, WaitTime Aynchronous, BatchMode Transactions, PacketSize ODBChdbc2, ODBChstmt2 (für FLLs!) Wizards & Builders GmbH Transaktionen DB/SQLSETPROP( Transaction, n) Automatisch Manuell n = 1 (Default) n=2 VFP-Transaktionen getrennt davon! SQL-Passthrough hat nur einen Transaktions-Level! Wizards & Builders GmbH Asynchrone Ausführung (1) Default: Synchrone Ausführung (Wait) Möglich: Asynchrone Ausführung für SQLEXEC, SQLMORERESULTS SQLTABLES, SQLCOLUMNS Abbruch mit SQLCANCEL( ) Non-Batch-Mode: Sqlmoreresults() Mischung: Async/Sync-Batch/Non-Batch Wizards & Builders GmbH Asynchrone Ausführung (2) Wizards & Builders GmbH MS SQL Server Einführung in das Arbeiten mit Microsoft SQL-Server Wizards & Builders GmbH Vorgeschichte Dr. Eppstein und Mark Hoffmann SYBASE ab 1987 Vertrieb durch Microsoft Übernahme Quellcode als Eigenprodukt Weiterentwicklung (Oberfläche, Integration, Kundenwünsche) Wizards & Builders GmbH Installation Named Pipes als Protokoll (TCP/IP) Physikalischer Pfad Automatischer Start (nur bei Server) Zeichensatz und Sortierung (einheitlich für Datenbank) Lokales Systemkonto (statt User) Anlage MASTER.DAT (25 MB) Wizards & Builders GmbH SQL Enterprise Manager Registrierung beim Erststart („SA“) SQL-Service Manager SQL-Mail, SQL-Executive Database Devices Backup Devices Databases Logins (User, Rechte) Wizards & Builders GmbH Devices eigentlich „Drive“ „Create Now“ oder via Executive Mirroring Vergrößern (Right / Rechte beachten) Verkleinern NEIN Backup Devices Platte, Bandlaufwerk Wizards & Builders GmbH Datenbanken in einem Device Größe änderbar max. 7 Terabyte Gesamtgröße Transaction Log anderes Device ausreichende Größe „Create for Load“ statt mit „0“ auffüllen Wizards & Builders GmbH Tabellen / Zugriffsrechte Tabellen Ansichten (SQL) Stored Procedure Transact SQL extended procedures Regeln (Feld-/SatzValidierung) Defaultwerte Datentypen (s.o.) Wizards & Builders GmbH Pages / Indizes Pagesize 2048 Byte je Page, 2016 für Datensätze Pagelocking (ggf. mehrere Sätze gesperrt!) Indizes CLUSTERED NON-CLUSTERED vorsortiert, Lesen schnell schneller beim Schreiben Transaction Log ohne „Order by“ wird erster Index verwendet Wizards & Builders GmbH Server-Konfiguration Fill Factor LE Treshold Max. Dateisperre LE Treshold Percent Locks Memory Open Databases Open Objects User Connections Verbindungen Füllgröße Indexpages Pagelocks für Dito in Prozent Anzahl Satzsperren (32 B) Speicher (2 Kilobyte) Offene Datenbanken Offene Objekte (70 Byte) Offene Speicherbedarf höher, bei Überschreitung Probleme! Wizards & Builders GmbH Unterschiede SQL-Server-DB Unterschiede von SQL-ServerDatenbanken zu Datenbanken in Microsoft Visual FoxPro Wizards & Builders GmbH Vorbereitung für Upsizing Platz auf Harddisk großzügig! Zugriffsrechte Create Table/Default, Database/Select, Admin Datenbankgröße (DBF*1.3, FPT*x) Memofeld 32 Byte wird zu Page a 2048 Byte (z.B. 10.000 Memos = 320 KB -> 20 MB ) Alter Database Device-Größe Größe Transaction-Log > Datenerstbestand Wizards & Builders GmbH Objekt-Mapping (1) MS Visual FoxPro: Datenbank Tabelle Feld Index Default Satzvalidierung Feldvalidierung Persistente Relation MS SQL-Server: Datenbank Tabelle Feld Index Default Stored Proc (Upd/Ins) Stored Proc (Upd/Ins) Upd/Ins/Del-Trigger oder Table Constraints Wizards & Builders GmbH Field-Mapping (2) MS Visual FoxPro: Character Currency Date Datetime Double Float General MS SQL-Server: Char Money Datetime Datetime Float Float Image Wizards & Builders GmbH Field-Mapping (3) MS Visual FoxPro: Integer Logical Memo Memo Binary Character Binary Numeric MS SQL-Server: Int Bit Text Image Binary Float Wizards & Builders GmbH Index-Mapping (4) MS Visual FoxPro: Primary Candidate Regular Unique MS SQL-Server: Clustered Unique Unique Non-Unique Non-Unique Keine Ausdrücke Kein Asc/Desc Wizards & Builders GmbH Expression Mapping (5 ff.) MS Visual FoxPro: cMonth() usw. Day(), Hour() usw. Dtoc() usw. Date() usw. .T. / .F. keine Punkte bei MS SQL-Server: DATENAME() DATEPART() CONVERT() GETDATE() 0/1 AND/OR/NOT/NULL Wizards & Builders GmbH Aufräumarbeiten Nachbesserung Konvertierung: Eindeutige Schlüssel nachtragen (Upd) Konfiguration von: Datenbankzugriffsrechte (sp_adduser) Objektzugriffsrechte (GRANT/REVOKE) Recovering (ggf. Database Dump) Backup Scheduling Device Mirroring Wizards & Builders GmbH Überprüfungen Referentielle Integrität / Trigger (Neu!) Default-Werte (erst nach Insert!) Field/Table-Validations (Neu!) Event Order ggf. anders Lostfocus (Satz statt Feld) Optimistic Record Locking (Page Lock!) Wizards & Builders GmbH Optimierung Client/Server Zugriffsoptimierung von Client/Server unter Microsoft Visual FoxPro Wizards & Builders GmbH Connections In Vorbereitung Wizards & Builders GmbH Data Retrieval In Vorbereitung Wizards & Builders GmbH Queries und Views In Vorbereitung Wizards & Builders GmbH Masken In Vorbereitung Wizards & Builders GmbH Einfügen und Löschen In Vorbereitung Wizards & Builders GmbH Red Classes Darstellung der Red ClassesKlassenbibliothek für C/S für Microsoft Visual FoxPro Wizards & Builders GmbH Red Classes für C/S Application Manager Form Manager Toolbar Manager Report Manager Data Manager Remote Views Parameterized Views SQL Pass Through Connections Wizards & Builders GmbH Was ist zu bedenken? Parallentwicklung lokal/remote ist leider aufwendig Ggf. immer C/S ? (zB SQL Anywhere) Ggf. Nie C/S ? Optimierungen... Red Classes kaufen Wizards & Builders GmbH Vielen Dank! Das waren die Themen: Client/Server Connections Remote Views SQL-Pass-Through MS SQL-Server Unterschiede zu Serverdatenbanken Optimierung C/S The Red Classes Wizards & Builders GmbH Wenn Fragen bestehen: Wizards & Builders Methodische SoftwareEntwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175 Wizards & Builders GmbH