Announcement

Collapse
No announcement yet.

Daten von der BDE nach SQL-Server 2000 portieren

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

  • Daten von der BDE nach SQL-Server 2000 portieren

    Hallo,

    ich komme derzeit einfach nicht weiter und brauche dringend einen Tipp.
    <br><br>
    Ich möchte eine etwas komplexere BDE-Datenbank im Paradox-Format programmgesteuert nach MS SQL-Server 2000 portieren und habe das grundsätzliche Problem, dass zwischen den BDE-Tabellen referentielle Integritäten bestehen, die natürlich nicht verloren gehen dürfen.
    <br><br>
    Die neuen Tabellen sind auf dem SQL-Server schon komplett vorhanden und funktionieren auch soweit perfekt. Da ich im MS-SQL-Server 2000 das jeweilige Primärindexfeld der Tabelle mit dem IDENTITY-Flag gekennzeichnet habe, setzt der SQL-Server natürlich den Feldwert selbst (AUTOINC). Wie kann ich nun aber für die Dauer eines Imports per Schleife (ADODataSet.Insert ... Feldzuweisungen ...ADODataSet.Post) verhindern, dass der SQL-Server den Wert für das IDENTITY-Feld selbst vergibt und stattdessen den Wert aus der BDE-Tabelle annimmt.
    <br><br>
    Ich habe schon vieles probiert, aber bisher leider ohne Erfolg. Hier im Forum habe ich leider auch noch nichts Passendes gefunden. Mein Problem kann aber doch nicht so selten sein. Schließlich will ich doch nicht mehr tun als eine Datenübernahme von einer Datenbank in eine andere, also eine Standardaktion.
    <br><br>
    Viele Grüße
    <br>
    Reinhold

  • #2
    Klar,

    einfach vorher
    "ALTER TABLE [TableName] SET IDENTITY_INSERT ON"
    und wenn du fertig bist dann
    "ALTER TABLE [TableName] SET IDENTITY_INSERT OFF".
    Dazwischen kannst du nun alle Identity Felder selbst im Wert bestimmen

    Gruß
    Sasch

    Comment


    • #3
      Danke für den Tipp.
      <br>
      Ich habe in der Dokumentation zum SQL-Server folgende Syntax gefunden:
      <br>
      SET IDENTITY_INSERT [Tabellenname] ON
      <br>
      Jetzt scheint zwar das Einfügen eingeschaltet zu sein, leider klappt der Datenimport aber immer noch nicht. Jetzt kommt die Fehlermeldung, dass er das IDENTITY-Feld nicht ändern könne. Vielleicht hat ja jemand auch hierfür einen Tipp. Ich bin das ewige Suchen und erfolglose Ausprobieren etwas leid.
      <br>
      Vielen Dank und viele Grüße.
      <br>
      Reinhol

      Comment


      • #4
        Hallo,

        ja stimmt, im Syntax hatte ich mich geirrt...
        Ich füge mit dieser Methode aber auch schon Datensätze in die Datenbank ein. Es sollte auf jedenfall funktionieren. Die Fehlermeldung die Sie bekommen haben, tritt ´nur auf, wenn IDENTITY_INSERT auf OFF steht. Vielleicht nocheinmal probieren.

        Gruß
        Sasch

        Comment


        • #5
          Hallo,

          ich möchte von einer BDE-Datenbank (Paradox 7.0 - Format) Daten in eine Tabelle auf dem SQL-Server 2000 importieren. Da die Werte des primären Indexfeldes im Original übernommen werden müssen (zum Erhalt der referentiellen Integritäten), verwende ich das "INSERT INTO"-Kommando, weil nur mit diesem das vorherige Einschalten des Befehls "SET IDENTITY_INSERT" die gewünschte Wirkung zeigt. Dies alles funktioniert soweit prima.

          Jetzt das Problem:
          In der BDE-Tabelle befindet sich ein Memo-Feld, das auf dem SQL-Server in ein Text-Feld geschrieben werden soll.

          Bei einigen Datensätzen funktioniert dies auch. Bei den meisten Datensätzen aber kommt folgender Fehler: "Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben.".

          Wer kann mir sagen, wo ich suchen muss oder weiß gar einen Workaround.

          Gruß
          Reinhol

          Comment

          Working...
          X