Jump to content

SQL Replikation - Primary Key Fehler


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

wieder ein neues Problem. Wir setzen Replikationein, um Daten aus ausgelagerte Datenbanken in einer zentralen Datenbank zusammn zu führen.

Eine davon geht nicht mehr. Es kommt folgende Fehlermeldung:

 

Zitat

Command attempted:
declare @event_type SMALLINT = 1, @distributor_major_version SMALLINT = 11, @distributor_minor_version SMALLINT = 0, @distributor_build_number SMALLINT = 6251, @totalruntime INT = 8969, @totalworktime INT = 8125, @totalnumtrans INT = 0, @numtranspersec REAL = 0.00, @totalnumcmds INT = 0, @numcmdspersec REAL = 0.00, @totalskippedcmds INT = 0, @totalidletime INT = 0 if object_id(N'sys.sp_repl_generate_subscriber_event') is not null exec sys.sp_repl_generate_subscriber_event @event_state = @event_type,@distrib
(Transaction sequence number: 0x000CD8100000007F003300000000, Command ID: 89)

Error messages:
The process could not bulk copy into table '"dbo"."t_Test"'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20037)
Get help: http://help/MSSQL_REPL20037
Batch send failed
Violation of PRIMARY KEY constraint 'PK_t_Test'. Cannot insert duplicate key in object 'dbo.t_Test'. The duplicate key value is (2, 3). (Source: MSSQLServer, Error number: 2627)
Get help: http://help/2627
To obtain an error file with details on the errors encountered when initializing the subscribing table, execute the bcp command that appears below.  Consult the BOL for more information on the bcp utility and its supported options. (Source: MSSQLServer, Error number: 20253)
Get help: http://help/20253
bcp "PruefDB"."dbo"."t_Test" in "\\zfrlinesql1\ReplData\unc\ZFRLINESQL1$FRPRODUCTION_PRUEFDB_PRUEFDB_TDATA_TOZENTRALE\20190729082802\t_Test_7#1.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -SZDELINESQL1\DEPRODUCTION -T -w (Source: MSSQLServer, Error number: 20253)
Get help: http://help/20253

Ich habe schon ddas Internet gequält, aber bin nicht weitergekommen. Kennt jemand sich damit aus?

 

 

Mfg Torsten

Link zu diesem Kommentar

Hallo

Frank war schneller ;-)

vor 35 Minuten schrieb Tossi65:
 

Violation of PRIMARY KEY constraint 'PK_t_Test'. Cannot insert duplicate key in object 'dbo.t_Test'. The duplicate key value is (2, 3). (Source: MSSQLServer, Error number: 2627)

 

Dieser Wert scheint in deiner Tabelle T_test schon zu stehen.

Was für eine Art Replikation verwendet ihr?

Link zu diesem Kommentar

Hallo MDD,

wenn ich wüsste welchen Datensatz die Replikation in der Zieltabelle einfügen will, dann kann ich auch eingreifen. Der Key liegt bei der Tabelle auf dem Feld ID und diese Werte sind natürlich schon drin.

Seit dem Jahr 2012! Microsoft scheint hier wieder einen nicht aussagekräftige Meldung auszugeben. Kann man die  letzte übetragende ID der Quelle ermitteln???

 

Mdg Torsten

bearbeitet von Tossi65
Rechtschreibung
Link zu diesem Kommentar
  • 2 Wochen später...

Hallo DerFrank,

ich habe den Eintrag in der Tabelle gefunden, zielseitig. Leider kann ich diesen Eintrag nicht löschen, da er Abhängigkeiten zu anderen Einträgen hat. Mist.

 

Wie und Wo kann ich den Befehl(Command) finden, damit ich diesen Inaktiv oder so setzen kann??? In MySQl setzt man einfach die Abarbeitung auf die nächste Sequenznummer(Step)

Wie geht das bei MS SQL????

 

Noch komischer ist der Umstand, das in der Fehlermeldung einen andere Tabelle genannt wird als in dem betreffenden Command?? Alles etwas verwirrend, Aber es muss doch gehen.

Die Kollegen sind schon sauer weil die Replikation seit Wochen nicht richtig läuft.

 

 

Link zu diesem Kommentar

Hallo wi-ra,

 

da wir die Datenbanken von den Standorten zu uns replizieren, sind diese unterschiedlich groß. Im Schnit ca 200 bis 500 MB. Aber sie werden alle gemeinsam in eine Zieldatenbank repliziert und die hat schon ca 1,5 GB.

 

Mich interessiert meht die distributio n DB. So wie ich es gelesen haben stehen dort die Commans drin. Wie und wo kann ich da eingreifen????

Die Beschreibung im Internet sind alle nicht so recht zielführend. Den Command über Transaction und CommandID zu identifizieren hat zu verschiedenen Ergenbnissen geführt.

Als Ursache wurden 2 verschiedene Tabellen genannt.

 

Mfg Torsten

Link zu diesem Kommentar

Ja das hast du richtig verstanden. Die Resultate werden in einer Datenbank zusammengeführt. Die Tabellen sind überall gleich nur die Datenmenge ist durch where ... unterschiedlich und werden übertragen. Fakt ist das eine Tabelle der Meinung ist, das der neue Eintrag schon vorhanden ist. Jetzt möchte ich diesen Eintrag für diese Datenmenge ermitteln und aus den Commands deaktivieren. Wenn es geht?!

,

 

Link zu diesem Kommentar

Guten Morgen wi-ra,

das Problemm wird immer bizzarer. Die eine Replikation, welche vorher gestört war, ist nun grün und keine Fehler. Aber es werden keine Daten übermittelt.

 

Bei sder 2. Replikation, welche einen Fehler mit einem schon vorhandenen Eintrag in einer Tabelle meldet, zeigt auf 2. Tabellen.

Im Fehlertext vom Agenten steht Tabelle a. Werte ich die Transaktion mit dem Command ID aus, wird dort eine andere Tabelle genannt.

 

Wie soll man da richtig vorgehen???

 

Mfg Torsten

bearbeitet von Tossi65
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...