Jump to content
Sign in to follow this  
Tossi65

SQL Replikation - Primary Key Fehler

Recommended Posts

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

Share this post


Link to post
Share on other sites
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)

 

der primarykey ist doppelt.

 

vg DerFrank

Share this post


Link to post
Share on other sites

Hallo DerFRank,

das weiss ich auch. Aber wie löse ich das Problem wieder auf. Agenten neustart bringt nichts. Neuer Snapshot bringt auch nichts. Ich habe verschiedene Szenarien durch aber ohne erfolg.

Wie bekomme ich den vermeindlichen Datensatz heraus????

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Edited by Tossi65
Rechtschreibung

Share this post


Link to post
Share on other sites

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.

 

 

Share this post


Link to post
Share on other sites

hi tossi65

sorry aber bei der Replication bin ich raus... zu lange her.. vielleicht weiss hier im Board jemand eine adäquate Lösung.

 

falls ich doch noch was finde melde ich mich....

 

vg

derFrank

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?!

,

 

Share this post


Link to post
Share on other sites

Hallo wir-ra,

ich habe vollzugriff. Das neue betanken der Zieldatenbank ist nicht so einfach. Wie gesagt, dort laufen aus verschiedenen Standorte die Daten zusammen.

Einfacher wäre es die Methode dem Bearbeiten der zu übertragenden Daten. Gibt es dazu keine Anleitung??

Share this post


Link to post
Share on other sites

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

Edited by Tossi65

Share this post


Link to post
Share on other sites

Guten Morgen wi-ra,

diese Option habe ich vorgeschlagen, aber die Obrigkeit will das nicht. Dagegen konnte ich nicht argumentieren,

Was meinst Du da arbeitet "jemand" mit / gegen?

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...