Announcement

Collapse
No announcement yet.

Dringend! Datenbankumstellung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dringend! Datenbankumstellung

    Hallo Herr Kosch!

    Da ich schon des öfteren durch die Tips die Sie anderen Delphianern gegeben haben profitiert habe,
    habe ich nun selbst ein Problem bei dem ich Sie und alle anderen die mir helfen möchten um Hilfe bitten möchte.

    Und zwar geht es um folgendes unser Projekt das derzeit mit Paradox und der BDE läuft muss auf MS SQL/ADO umgestellt werden, ich
    selbst kenne mich mit der BDE nicht so aus, habe eher mit ADO meine Erfahgrungen gemacht.

    Jetzt möchte ich im ersten Schritt ein Konvertierungstool schreiben das die vorhandene Tabellenstruktur, Indexe, Autowerte von
    Paradox zu MS SQL konvertiert, und dies möglichst schnell. Es sollte deshalb ein tool entwickelt werden
    und nicht die datapump verwendet werden weil beim Kunden auch umgestellt wird.
    1.) Wie macht man das am besten?

    Teilweise muss natürlich auch das Programm umprogrammiert werden, da es großteils TTable verwendet wird.
    2.) Wie realisiert man da am besten eine Umstellung, das Programm ist nähmlich relativ groß

    Wie schnell sind die ADO-Komponenten nun wirklich, es wird ein Clientseitiger Cursor verwendet.
    Die Komponente TADOTable sollte man ja glaub ich nicht verwenden,oder?
    3.) Welche ist die schnellste ADOKomponente? ADOCommand?
    4.) Was ist der Unterschied zwischen nativen und ADOKomponenten die ich auf die Form ziehen kann, weil ich sowas in
    einer Ihrer Hilfestellungen gelesen habe. Wie erzeuge ich native Komponenten sind diese schneller?
    5.) Haben Sie vielleicht sonstige Tips für die Umstellung oder Sachen auf die man achten muss

    Danke für die Hilfe!

    Christian Ranftl

  • #2
    Hallo,<BR>
    ich kenne Ihre Situation. Ich selbst habe so etwas schon mal durchgemacht. Ich kann Ihnen vorher sagen, das Sie das Problem unterschätzen. Die Tabellenstruktur für den SQL-Server solten Sie neu erstellen. Wie umfangreich ist die Struktur ? Wie viele Tabellen ? Vielleicht kann ich zur Hilfe stehen ? Ich Designe meiene Datenbanken mit ERWIN, ein sehr gutes Datenbankdesignprogramm.Aufwendiger ist es die Programme auf ADO umzugestalten. Für eine einfache Datenabfrage sillte man TADOQuery benutzen. Für ein Kommando das keine Ergemnismenge zurück gibt sollte man TADOCommand verwenden. Haben Sie sich schon mal Gedanken über die Benutzerverwaltung gemacht. Ist auch ein Thema! Wenn es wirklich schnell gehen soll, kann ich Ihnen anbieten die Paradox-Tabellen auf SQL Umzudesignen. Währenddessen können Sie die Programme Umsetzten. Vergessen Sie nicht den SQL-Server mit Servicepack 3 zu versorgen und alle Clients mit den MDAC 2.7 treibern auszustatten. Sonst wird es zu problemen kommen. Auch Delphi muß mit den ADO Updates ausgesatttet werden. <BR>
    <BR>
    Gruß Sasch

    Comment


    • #3
      Hallo Sascha!

      Danke für deine rasche Antwort!
      Wie du schon gesagt hast kommt es zu größeren Problemen da die ganze Umstellung nicht so einfach zu bewerkstelligen ist.
      Eine Frage hätte ich aber noch.

      zu welchen Problemen kanne es ohne ServicePack 3 kommen?

      zu welchen ohne ADO Updates?

      Ciao
      Christia

      Comment


      • #4
        Hallo,

        &gt; 1.) Wie macht man das am besten?

        über den DTS-Wizard (alias <i>Daten importieren und exportieren</i>) wird einmalig die Konfiguration zusammengeklickt, um das Ganze als DTS-Paket zu speichern. Dieses Paket kann dann beliebig oft ausgeführt werden, um die alten Daten in die Hilfstabellen abzulegen.

        Im zweiten Schritt werden die "alten" BDE-Daten aus den Hilfstabellen in die neue Struktur der MS SQL Server-Datenbank umkopiert (... INSERT INTO Zieltabelle SELECT a,b,c FROM Hilfstabelle...). Der Grund dafür liegt darin, dass auch das Datenmodell selbst an die Anforderungen einer mengenorientierten SQL-Datenbank angepasst werden muss. Der MS SQL Server stellt dazu viel zahlreichere Optionen zur Verfügung, als das bei der BDE (Paradox) der Fall war.

        &gt;..zu welchen Problemen kanne es ohne ServicePack 3 kommen?

        Wenn der Rechner im Internet sichtbar ist (d.h. kein Firewall dazwischen liegt), beseitigt erst das Service Pack 3a die in der Vergangenheit durch die Presse gegangenen Löcher. Auf Wunsch kann der MS SQL Server sogar im Netzwerk "versteckt" werden, so dass er auf Scan-Aufrufe über die entsprechenden Port-Nummern nicht mehr reagiert, da eigene Programm aber trotzdem darauf zugreifen kann.

        Ansonsten geht mein ADO-Buch (siehe http://www.software-support.biz/sus/sus_buch/psecom,id,21,nodeid,11,_language,de.html) fast ausschließlich auf die Kombination Delphi + ADO + MS SQL Server ein.

        &gt;.. ADO-Updates...

        Für Delphi 5 und 6 sind Patches notwendig, damit die ADO Express-Komponenten (alias dBGo) etwas runder laufen. Die nativen ADO-Objekte (Connection, Command, Recordset) stehen im Gegensatz dazu in jeder beliebigen Delphi-Version fehlerfrei zur Verfügung.

        &gt;.. MDAC 2.7...

        Immer dann, wenn die neuen Datentypen vom MS SQL Server 2000 verwendet werden, muss auf dem Client-Rechner auch das Gegenstück MDAC 2.6 (oder höher) installiert werden.

        &#10

        Comment


        • #5
          Hallo!

          Danke für Eure Hilfe!

          Wir sind gerade mitten in der Umstellung.
          Schön langsam aber sicher tauchen auch die Probleme nach der Reihe auf, da vor der Umstellung fast außschließlich TTables (keine Tquery oder so) verwendet wurden.
          Bei der Paradox Version ist das Geschwindigkeitsmäßig ja nicht so schlimm, bei SQL-Server jedoch schon.

          Außerdem tauchen immer mehr solche dinge auf das zuvor während der geöffneten Datenmenge der Indexname neu gesetzt wurde.

          Zum Sortieren wurden auch fast außschließlich die Indexname verwendet.

          Weiter Dinge die etwas anders werden müssen sind:

          SetRange - GetRange - CancelRange
          SetKey - GotoKey
          FindKey
          FindNext,....

          Bitte schreibt mir Eure erfahrungen!
          Bei was kann es noch zu Problemen kommen bei einer solchen Umstellung?
          Wie kann man Unterschiede zwischen TTable - TADODataset usw. beheben.

          Welche gibt es die zu beachten sind?

          Gibt es irgendeinen optimalen Weg TTables umzustellen vielleicht automatisiert!?

          Danke vielmals!
          Christia

          Comment


          • #6
            Hallo,

            &gt;Zum Sortieren wurden auch fast außschließlich die Indexname verwendet.

            das eine hat mit dem anderen nichts zu tun. Es ist immer unsere Entscheidung, auf welcher Ebene (Schicht) eine bestimmte Aufgabe erledigt wird. Im Fall des Sortierens in der Benutzeroberfläche haben wir zwei Alternativen: <br>
            a) Der SQL-Server sortiert (SELECT ... ORDER BY ...) <br>
            b) Die mit der Ergebnismenge gefüllte Recordset-Instanz auf dem Client-Rechner sortiert.

            Angenommen, der Benutzer soll über den Mausklick auf die TDBGrid-Spalte die Sortierreihenfolge je Spalten abwechselnd auf- und absteigend sortiert darstellen können. Ohne dass der SQL Server eine erneute SELECT-Abfrage abarbeiten muss, kann bereits das Recordset den Job über die Eigenschaft <b>Sort</b> übernehmen:
            <pre>
            <b>procedure</b> TForm1.DBGrid1TitleClick(Column: TColumn);
            <b>var</b>
            i : Integer;
            <b>begin</b>
            <b>with</b> HeaderControl1 <b>do</b>
            <b>for</b> i := 0 <b>to</b> Sections.Count - 1 <b>do</b>
            Sections[i].ImageIndex := -1;
            <b>with</b> TADODataSet(Column.Field.DataSet) <b>do</b> <b>begin</b>
            <b>if</b> Sort = Column.Field.FieldName <b>then</b> <b>begin</b>
            Sort := Column.Field.FieldName + <font color="#9933CC">' DESC'</font>;
            HeaderControl1.Sections[Column.<b>Index</b>].ImageIndex := 1
            <b>end</b>
            <b>else</b> <b>begin</b>
            Sort := Column.Field.FieldName;
            HeaderControl1.Sections[Column.<b>Index</b>].ImageIndex := 0;
            <b>end</b>;
            StatusBar1.SimpleText := Sort;
            <b>end</b>;
            <b>end</b>;
            </pre>
            Dies ist nur ein kleines Beispiel - ohne <b>gründliche</b> Vorbereitung (Information über die Fähigkeiten vom MS SQL Server und den Fähigkeiten von ADO) kann man keine sinnvolle Umstellung machen.

            &gt;..optimalen Weg TTables umzustellen vielleicht automatisiert!?

            Das Recordset-Objekt von ADO (und somit auch das ADO Express-Gegenstück TADODataSet) ist um Größenordnungen flexibler und leistungsfähiger als das die BDE-Gegenstücke TTable oder TQuery jemals waren. Daher kann es keine mechanische (automatische) Konvertierung geben.
            &#10

            Comment


            • #7
              Hallo Christian,

              wir sind gerade in einer ähnlichen Situation, indem wir auch ein Programm von Paradox auf MS-SQL-Server umstellen:

              Wir haben alle TTables und TQueries mit TBetterADODataset ersetzt.

              Auch wir sind gerade am tüfteln, wie wir z.B. FindKey am besten ersetzen.
              Die Methode SEEK entfällt, da diese ganz bestimmte Einstellungen benötigt, wie z.B. clUseServer, was ja lt. Literatur bei einer SQL-Datenbank wenig Sinn macht.

              Also entscheiden wir uns von Fall zu Fall für eine direkte SQL-Abfrage um ganz gezielte Daten zu erhalten oder wir verwenden die Locate-Methode.
              Leider weiss ich da noch nicht so genau, was auf der Server-Seite passiert, sprich wird die Suche optimiert, indem ein Index verwendet wird? Wenn Ihr da schon weiter seit oder eigene Erfahrungen gemacht habt, dann wäre ich über eine Rückmeldung im Forum dankbar.

              Bis dahin
              Jürge

              Comment

              Working...
              X