Frage

Ich habe ein DTS-Paket, das einen Fehler mit einer „Copy SQL Server Objects“ Aufgabe erzieht. Die Aufgabe wird das Kopieren einer Tabelle und Daten von einem SQL Server 2000 SP4 Server auf einen anderen (gleiche Version) und geben Sie den Fehler: -

finden kann nicht CHECK-Einschränkung für 'dbo.MyTableName', obwohl die Tabelle markiert ist eine hat.

Die Quelltabelle hat eine Check-Einschränkung definiert, um das Problem zu verursachen scheint. Nachdem das DTS-Paket ausgeführt wird, wird die Sache richtig zu arbeiten - die Tabelle, alle Einschränkungen und Daten auf dem Zielserver erstellt? Aber der Fehler oben angehoben wird, verursacht die nachfolgenden Schritte nicht ausgeführt werden.

Jede Idee, warum dieser Fehler ausgelöst wird?

War es hilfreich?

Lösung

Dies zeigt an, dass die Metadaten in den sys Tabellen haben nicht synchron mit Ihrem tatsächlichen Schema bekommen. Wenn Sie keine anderen Anzeichen von allgemeineren Korruption sehen, tun eine der Tabelle wieder aufzubauen, indem es auf eine andere Tabelle kopieren (select * in newtable von OldTable), die alte Tabelle löschen und dann die neue Umbenennung und ersetzt die Zwänge werden Hilfe. Dies ist ähnlich wie die Enterprise Manager für das Jahr 2000 Dinge tun, wenn Sie eine Spalte einzufügen, die nicht am Ende der Tabelle ist, so eine neue Spalte in der Mitte der Tabelle einfügen und dann erreichen zu entfernen, die gleiche Sache, wenn Sie don ‚t wollen, um manuell die Abfragen schreiben.

Ich würde etwas von dem Zustand der Datenbank als Ganzes betroffen sein, wenn Sie andere Vorkommnisse dieser Art von Fehler zu sehen. (Ich gehe davon aus hier, dass Sie bereits CHECKDB Befehle durchgeführt und der Fehler wird persistierende ...)

Andere Tipps

Dieser Fehler gestartet, wenn eine neue Spalte (mit einer Check-Bedingung) zu einer vorhandenen Tabelle hinzugefügt wurde. Um zu untersuchen, die ich habe: -

  • die Tabelle zu einem anderen Ziel SQL Server kopiert und bekam den gleichen Fehler.
  • eine neue Tabelle erstellt mit genau den gleichen Struktur, aber unterschiedlichen Namen und ohne Fehler kopiert.
  • Dropped und die Check-Einschränkung auf das Problem Tabelle neu erstellt, aber immer noch die gleichen Fehler.
  • dbcc checktable ( 'MyTableName') mit ALL_ERRORMSGS gibt keine Fehler.
  • dbcc checkdb in der Quell- und Zieldatenbank gibt keine Fehler.

Interessanterweise ist das DTS-Paket erscheint: -

  • Kopieren Sie die Tabelle.
  • Kopieren Sie die Daten.
  • Erstellen Sie die Einschränkungen

Da die Check-Constraint Zeit erstellen 7 Minuten nach der Tabelle Zeit schaffen das heißt, es schafft das Prüf-Integritäts, nachdem es die Daten bewegt hat. Das macht Sinn, da es nicht um die Daten zu überprüfen hat, wie es das Kopieren ist, vermutlich Leistung verbessert wird.

Wie Godeke schon sagt, glaube ich, etwas in den Systemtabellen korrupt geworden ist, als eine neue Tabelle mit den gleichen Spalten funktioniert. Auch wenn die DBCC Aussagen geben keine Fehler?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top