Update: Der Verteilungs-Agent überspringen einige Zeilen beim Konfigurieren einer Transaktionsreplikation, die verwendet die "-SkipErrors" Parameter in SQL Server 2005

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 938671
Problembeschreibung
Beim Konfigurieren einer Transaktionsreplikation, die verwendet die -SkipErrors Parameter in Microsoft SQL Server 2005, der Verteilungs-Agent möglicherweise einige Zeilen überspringen. Dieses Verhalten führt ein Problem mit Daten Inkonsistenz zwischen dem Verleger und Abonnenten.

Wenn dieses Problem auftritt, kann der Verteilungs-Agent darüber hinaus die folgenden Meldungen angezeigt:
007-05-18 22:49:38.195 Der Prozess konnte nicht abgeschlossen letzte Batch in Multi-streaming-Modus, wurde in den einzelnen Verbindungsmodus zurückgesetzt und wird den Vorgang wiederholen.

007-05-18 22:49:38.273 1 Übersprungene Fehler wurde(n) bei Transaktionen auf dem Abonnenten angewendet. 007-05-18 22:49:38.367 101 Transaktion(en) mit 100 Befehl(en) abgeschlossen wurden übermittelt.

007-05-18 22:49:38.477 100 Transaktion(en) mit 100 Befehl(en) abgeschlossen wurden übermittelt. 007-05-18 22:49:38.570 Wurde 1 Fehler übersprungen, wenn Transaktionen auf dem Abonnenten angewendet werden.

007-05-18 22:49:38.664 100 Transaktion(en) mit 100 Befehl(en) abgeschlossen wurden übermittelt.
Lösung
Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 2 freigegeben. Weitere Informationen, wie Sie dieses kumulative Updatepaket für SQL Server 2005 Service Pack 2 zu erhalten finden Sie im folgenden Artikel der Microsoft Knowledge Base:
936305Kumulatives Updatepaket 2 für SQL Server 2005 Service Pack 2
Hinweis: Da die Builds kumulativ sind, enthält jede neue Update-Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2005 enthalten waren. Microsoft empfiehlt, dass Sie in Erwägung ziehen Anwenden der neuesten Update-Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
937137SQL Server 2005 erstellt, die veröffentlicht wurden, nachdem SQL Server 2005 Service Pack 2 freigegeben wurde
Microsoft SQL Server 2005-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen ein SQL Server 2005 Service Pack 2 Hotfix auf eine Installation von SQL Server 2005 Service Pack 2 anwenden. Standardmäßig ist jeder Hotfix, der in einer SQL Server Service Pack bereitgestellt wird in das nächste SQL Server Service Pack enthalten.
Status
Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.
Weitere Informationen
Standardmäßig stößt der Verteilungs-Agent einen Fehler, sollte der Verteilungs-Agent angehalten werden. Wenn Sie für bestimmte Fehler den –SkipErrors -Parameter verwenden, wird der Verteilungs-Agent überspringt diese Fehler und weiterhin aufeinander folgenden Transaktionen verarbeiten.

Schritte zum Reproduzieren des Problems

  1. Richten Sie eine Replikationsumgebung. To do this, run the following scripts in SQL Query Analyzer.
    use mastergoexec sp_adddistributor  @distributor = @@SERVERNAMEgoexec sp_adddistributiondb  @database = 'distribution'goexec sp_adddistpublisher  @publisher = @@SERVERNAME, @distribution_db = 'distribution'goexec sp_replicationdboption pubdb, publish, falsegoexec sp_replicationdboption subdb, publish, falsegoif db_id('pubdb') is not null    drop database pubdbgocreate database pubdbgoif db_id('subdb') is not null    drop database subdb gocreate database subdbgoexec sp_replicationdboption pubdb, publish, truegouse pubdbgocreate table t(c1 int primary key, c2 int, c3 sysname null, c4 nchar(200) default 'a')gocreate unique index c2_idx on t(c2)gosp_addpublication @publication = 'p1', @status = 'active'gosp_addarticle @publication = 'p1', @article = 'a1', @source_table = 't', @schema_option = 0x00000000000300f3gosp_addsubscription @publication = 'p1', @article = 'all', @subscriber = @@servername, @destination_db = 'subdb'go
  2. Save the following command as a batch file, and then run the file to insert data.
    c: pushd "c:\program files\microsoft sql server\90\com\" del dist.outcall snapshot.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1call logread.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 call distrib.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1 -subscriber %COMPUTERNAME% -subscriberdb subdb start cmd.exe /s /k "logread.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -continuous"start cmd.exe /s /k "distrib.exe -publisher %COMPUTERNAME% -publisherdb pubdb -distributor %COMPUTERNAME% -distributorsecuritymode 1 -publication p1 -subscriber %COMPUTERNAME% -subscriberdb subdb -subscriptionstreams 8 -SkipErrors 2601:2627 -Output dist.out -OutputVerboseLevel 2 -continuous"popdosql -E -S[SQL_server] -Q"insert subdb..t (c1, c2) values (1000, 1000)"osql -E -S[SQL_server] -Q"insert subdb..t (c1, c2) values (2500, 1015)"osql -E -S[SQL_server] -Q"begin tran declare @v int select @v = 1 while (@v < 1020) begin insert pubdb..t (c1, c2) values (@v, @v) select @v = @v + 1 end commit tran"osql -E -S[SQL_server] -Q"declare @v int select @v = 3100 while (@v < 3500) begin insert pubdb..t (c1, c2) values (@v, @v) select @v = @v + 1 waitfor delay '0:0:0.10' end"
    Beachten Sie die Platzhalter SQL_server steht den Namen des SQL Server-Instanz.
  3. Beachten Sie, dass die Daten auf der Abonnentendatenbank nicht repliziert wurde.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 938671 – Letzte Überarbeitung: 08/01/2007 17:52:33 – Revision: 1.4

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems

  • kbmt kbexpertiseinter kbqfe KB938671 KbMtde
Feedback