Korrupten Datensatz importieren

Hallo sql-experten

Ich möchte in einer DB einen korrupten Datensatz zu testzwecken importieren - nur leider haben bisher alle Versuche fehlgeschlagen.

Also folgendes Szenario:
Ich möchte einen bestehenden Datensatz mehr oder minder duplizieren.
Jedoch soll im duplizierten DS das Feld mit dem Uniqueidentifier leer sein. Und hierbei komme ich nicht drüber.

Vorerst habe ich die originale Tabelle mal exportiert bzw. kopiert und umbenannt. Und pfrimle jetzt daran herum bei einem Datensatz ein uniqueidentifier-feld auf leer zu setzen (kein wert drinn).

Und das will (berechtigerweise) nicht gelingen.Dennoch bräuchte ich so einen DS um einen Fehler zu reproduzieren.

Kennt jemand vl. einen Kniff hierfür?

lg
aya

Hi

Welches Datenbanksystem benutzt Du denn?

Also folgendes Szenario:
Ich möchte einen bestehenden Datensatz mehr oder minder
duplizieren.
Jedoch soll im duplizierten DS das Feld mit dem
Uniqueidentifier leer sein. Und hierbei komme ich nicht
drüber.

also, wenn eine Unique-Constraint für die entsprechende Spalte in der Tabelle existiert, ist es generell nicht möglich, diesen Wert einfach zu löschen (die Spalte ist dann ja NOT NULLable).

Und das will (berechtigerweise) nicht gelingen.Dennoch
bräuchte ich so einen DS um einen Fehler zu reproduzieren.

Was für einen Fehler möchtest Du denn genau reproduzieren?

Grüße
m4tt3n

also erstmal vielen Dank für deine rasche Antwort !!!

Kunde hat es irgendwie geschafft bei der Geräte Anlage (via WEbAppl.) einen Doppelten Datensatzeintrag zu reproduzieren. Wie er das gemacht weiss Kunde natürlich nicht.

Fakt ist:
Es gibt 2 Datensätze, bei denen sensitive ID-Felder (aber kein Primärschlüssel oder UI-Felder) vollkommen gleich sind, Bezeichnung und andere DAten auch (ist aber nicht wichtig).

Es gibt im Grunde 3 IDs - eine ObjectId, eine UniqueID und eine VOB_ID und um diese VOB_ID geht es, denn dieses Feld hat den Datentyp ‚uniqueidentifier‘ und ist ein Primärschlüssel und ist systemweit unique.

Ich möchte nun diesen Fall reproduzieren, Indem ich einen Datensatz meiner DB dupliziere und eben a) das Feld VOB_ID leer ist und ein weiteres Feld (objectid) sollte den gleichen Eintrag wie ein bestehendes haben.

Originaldatensatz:
UniqueID ObjectID Name Descr VOB_ID
12345678 98765432 xyz blabla 123456-1234-456123456489

Ich möchte folgenden Datensatz kreiren:
UniqueID ObjectID Name Descr VOB_ID
12345678 5467811 xyz blabla

Die Schwierigkeit hierbei ist, daß auch ein Ändern der Beziehungen(Primärschlüssel weg) und Nullable angehackt keine Wirkung haben, da andere Tabellen diese Optionen nicht haben (Fehlermeldung: in Table xxx sind keine null-werte erlaubt o.ä.)

Im Grunde möchte ich alle Prüfungen der Tabelle und der Felder umgehen um irgendetwas reinschreiben zu können.

Versucht bisher habe ich schon, Tabelle exportieren, Eigenschaften ändern, Feld löschen. DS exportieren und re-importieren, sql-statements - funzen sowieso nicht u.v.m

wer toll wenn du ne idee hättest - oder jemand anderer - egal.

lg und vielen Dank
aya

Hi

Im Grunde möchte ich alle Prüfungen der Tabelle und der Felder
umgehen um irgendetwas reinschreiben zu können.

Um welches Datenbanksystem handelt es sich denn? Bei MS SQL gibt es die NOCHECK Option, welche das ungeprüfte Einfügen erlaubt, bei DB2 wäre dies auch möglich (würde jedoch den Tablespace in einen CHECK-PENDING Status versetzen).

Weißt Du, in welcher Art und Weise der Kunde diesen Eintrag erzeugt hat? (INSERT oder LOAD)

Grüße
m4tt3n

Hi

Im Grunde möchte ich alle Prüfungen der Tabelle und der Felder
umgehen um irgendetwas reinschreiben zu können.

Um welches Datenbanksystem handelt es sich denn? Bei MS SQL
gibt es die NOCHECK Option, welche das ungeprüfte Einfügen
erlaubt

ja MS-SQL

Weißt Du, in welcher Art und Weise der Kunde diesen Eintrag
erzeugt hat? (INSERT oder LOAD)

also zu 99% war es ein insert stmt, die restlichen 1% beziehen sich darauf, daß weder der Kunde noch ich weiss wann und/oder bei welchem Vorgang das passiert ist.

Aber ich bin mir ziemlich sicher, daß es über das Webportal angelegt wurde und damit wurde insert benutzt.

lg
aya

Hi

Im Grunde möchte ich alle Prüfungen der Tabelle und der Felder
umgehen um irgendetwas reinschreiben zu können.

Das beste was mir da noch einfällt, ist folgendes Vorgehen:

DROP den Unique-Constraint für das Feld,
füge deinen Datensatz ein,
Erstelle den Unique-Constraint neu mit der NOCHECK Option:

ALTER TABLE xyz WITH NOCHECK
ADD CONSTRAINT U_Feldname UNIQUE(Feldname)

Grüße
m4tt3n

Hi
mir ist noch eine andere Lösung eingefallen:

Constraints kann man ausschalten:

ALTER TABLE [table_name] NOCHECK CONSTRAINT [unique_constraint_name]

Einschalten wieder mit

ALTER TABLE [table_name] CHECK CONSTRAINT [unique_constraint_name]

Ich weiß aber nicht, ob er das Einschalten bei doppelten Datensätzen erlaubt!

Grüße
m4tt3n

1 Like

*big hug

DANKE!! werde ich morgen sofort ausprobieren, hab deinen Beitrag erst jetzt gesehen - leider.

lg
aya