Announcement

Collapse
No announcement yet.

Fehler beim Einstellen der Integrität per TSQL

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

  • Fehler beim Einstellen der Integrität per TSQL

    Hallo,

    ich möchte eine BDE-Datenbank nach MS SQL-Server 2000 (SP 2) migrieren. Dabei ist es notwendig, dass ich in einigen Tabellen die Werte von AUTOINC-Feldern mit ihrem originalen Wert in die SQL-Server Tabelle übernehme. Dies erreiche ich über das Kommando "SET IDENTITY_INSERT TabName1 ON". Für die Zeit des Imports kann ich im SQL-Server aber keine Referenzintegritäten gebrauchen. Daher schalte ich diese (bei der Tabellengenerierung mit dem Enterprise Manager eingestellten CONSTRAINTS) mit dem Kommando "ALTER TABLE [TabName1] DROP CONSTRAINT [FK_TabName1_TabName2]" aus. Dies alles funktioniert prima (Kontrolle durch Enterprise Manager). Auch der Import der Daten verläuft ohne Probleme.

    Will ich jetzt nach dem Import die zuvor funktionierenden Referenzintegritäten wieder mit "ALTER TABLE [TabName1] ADD CONSTRAINT [FK_TabName1_TabName2] FOREIGN KEY ([Feld1]) REFERENCES [TabName2] ([Feld2])" einstellen, so erhalte ich bei einigen (nicht allen) Tabellen die Fehlermeldung "Die ALTER TABLE-Anweisung verstieß gegen die COLUMN FOREIGN KEY-Einschränkung". Die angezeigte Einschränkung existiert aber zu diesem Zeitpunkt überhaupt nicht (überprüft durch Enterprise Manager).

    Kann mir das jemand erklären?

    Viele Grüße

    Reinhold

  • #2
    Hallo,

    wenn das Veto beim Aktivieren des Fremdschlüssels kommt kann die Ursache auch darin bestehen, dass in den importierten Daten der betroffenen Tabellen eine Inkonsistenz ist und somit die Regeln der referenziellen Integrität verletzt werden

    Comment


    • #3
      Hallo Herr Kosch,

      ich habe das Problem zwischenzeitlich gelöst. In den importierten Daten waren tatsächlich Inkonsistenzen, die ich aber ignorieren möchte. Der Enterprise Manager bietet per Häkchen die Möglichkeit das Prüfen vorhandener Daten zu unterlassen. Das war bei mir unbeabsichtigt so eingestellt. Daher kam es im Enterprise Manager nicht zu der beschriebenen Fehlermeldung. Wenn ich die Referenz mit TSQL einstelle, muss ich das Kommando "WITH NOCHECK" mit angeben, um das gleiche zu erreichen.

      Vielen Dank für den Hinweis. Da hätte ich zwar eigentlich auch schon früher und selbst darauf kommen können/müssen, aber bei diesem Wetter (Temperaturen um die 30 Grad Celsius) macht das klare Denken manchmal auch mir Probleme.

      Herzliche Grüße

      Reinhol

      Comment

      Working...
      X