DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 973103 - Geändert am: Montag, 17. August 2009 - Version: 1.2

Hotfix-Download ist verfügbar
Hotfix-Downloads anzeigen und anfordern
 
 
Microsoft stellt Updates für Microsoft SQL Server 2005 als downloadbare Datei. Da die Updates kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2005 enthalten waren.

Auf dieser Seite

Problembeschreibung

Verwenden Sie die Transaktionsreplikation in Microsoft SQL Server 2005. Wenn Sie der Verteilungs-Agent die Abonnenten mit dem Verleger synchronisieren ausführen, der Verteilungs-Agent fehlschlagen, und in der Verteilungs-Agent-Verlauf oder das Ausgabeprotokoll, erhalten folgende Fehlermeldung:

42000 Der eingehende tabular Data stream (TDS) remote Procedure Call (RPC) Protokollablauf falsch ist. Zu viele Parameter wurden in dieser RPC-Anforderung bereitgestellt. Der Höchstwert beträgt 2100. 8003

Wenn dieser Fehler wiederholt auftreten, kann die Leistung beeinflusst werden. Wenn ein solcher Fehler auftritt, der Verteilungs-Agent hat keine Wiederholung Verarbeitung dieselbe versuchen erneut Befehle. Daher verwendet der Verteilungs-Agent mehr Zeit, die Abonnenten mit dem Verleger synchronisieren, da jeder problematische Batch zweimal versucht wird.

Ursache

Wenn der Verteilungs-Agent die ausstehenden Befehle in der Distribution-Datenbank verarbeitet, den ­CommitBatchSize -Parameter verwendet wird und der Parameter CommitBatchThreshold , um festzustellen, wie viele Befehle werden zusammen als eine Ausführung zusammengefasst, wenn Sie diese Befehle an die Abonnenten sendet.

Der ­CommitBatchSize -Parameter ist die Anzahl der Transaktionen, die an die Abonnenten gesendet werden, bevor eine COMMIT -Anweisung ausgegeben wird. Der Standardwert ist 100. Der Parameter CommitBatchThreshold ist die Anzahl der Replikationsbefehle, die an die Abonnenten gesendet werden, bevor eine COMMIT -Anweisung ausgegeben wird. Der Standardwert ist 1000.

Da eine einzelne Transaktion einen Befehl enthalten kann oder kann viele Befehle enthalten, könnte den ­CommitBatchSize -Parameter auf 100 und Festlegen des Parameters CommitBatchThreshold auf 1000 für mehrere Tausend Befehle in einem Batch von Befehlen übermittelt werden.

Wenn ein Artikel einer Publikation @ Ins_cmd hinzugefügt , @ Upd_cmd , und @ Del_cmd Parameter des Typs Befehl Replikation für angegeben sind die Sp_addarticle gespeicherten Prozedur, die bestimmen, wie übermitteln an den Abonnenten Befehle. Darüber hat hinaus den ­CommitBatchSize und CommitBatchThreshold -Parameter der Verteilungs-Agent zu berücksichtigen, dass maximale Anforderungen in SQL Native Client OLE DB Provider auf wie viele Parameter in einem Batch von Befehlen gebunden werden können, die an den Abonnenten gesendet wird, vorhanden sind.

Es ist maximal 2100 Parameter, die in einem Batch von Befehlen verwendet werden können. Der Verteilungs-Agent teilt daher automatisch großen Batches in nur genügend Anweisungen pro Batch so, dass die maximale Anzahl von 2100 Parameter nicht überschritten wird. Alle weiteren Befehle im Befehlsstapel werden dann automatisch in der nächsten Ausführung Stapelverarbeitung verschoben.

Dieses Problem tritt, wenn der Verteilungs-Agent die Anzahl der Parameter falsch berechnet, die einen Batch von Befehlen übermitteln erforderlich sind. Dies geschieht, wenn der Verteilungs-Agent der dynamischen gespeicherten Prozedur Sp_executesql als Wrapper für einen Stapel von vielen replizierten Befehle verwendet.

Des replizierten Befehls enthält mehr als 2098 Parameter im Batchbefehl, und der Batchbefehl eingebundenes mit der Prozedur Sp_executesql gespeichert, um den Batch als eine dynamisch erstellte Transact-SQL-Anweisung zu übermitteln, ist der Verteilungs-Agent nicht enthalten in der Berechnung, dass der Sp_executesql Prozedur muss zwei zusätzliche gebundene Parameter gespeichert selbst funktionieren. Daher kann die Gesamtanzahl der Parameter 2100 Parameter überschreiten.

Der Verteilungs-Agent können diese Auswahl Übermittlung der dynamisch erstellten Transact-SQL-Anweisung zusammen mit der Sp_executesql gespeicherten Prozedur in den folgenden Situationen verwenden:
  • Dieser Artikel enthält BLOB (Binary Large Object) Spalten wie z. B. Text oder Image-Spalten.
  • Mehr als eine Replikation Befehlstyp wird über alle Artikel verwendet. Wenn ein Artikel SQL Übermittlung Replikationstyp Befehl verwendet, aber einem anderen Artikel verwendet die Sp_MSins_procedure gespeicherte Prozedur als den Replikationstyp Befehl beispielsweise.

Lösung

SQLServer 2005

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulative Update 5 für SQL Server 2005 Service Pack 3 veröffentlicht. Weitere Informationen zu diesem kumulativen Update-Paket finden Sie im folgenden Artikel der Microsoft Knowledge Base:
972511   (http://support.microsoft.com/kb/972511 /LN/ ) Kumulatives Updatepaket 5 für SQL Server 2005 Service Pack 3
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:
960598  (http://support.microsoft.com/kb/960598/LN/ ) SQL Server 2005 erstellt, die nach SQL Server 2005 Service Pack 3 veröffentlicht wurde veröffentlicht wurden
Microsoft SQL Server 2005-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen einen SQL Server 2005 Service Pack 3 Hotfix auf eine Installation von SQL Server 2005 Service Pack 3 anwenden. Standardmäßig ist jeder Hotfix, der in einer SQL Server Service Pack bereitgestellt wird in das nächste SQL Server Service Pack enthalten.

SQLServer 2008

SQLServer 2008

wichtig Sie müssen dieses Update verwenden, wenn Sie die Release-Version von SQL Server 2008 ausgeführt werden.

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 7 freigegeben. Weitere Informationen, wie Sie dieses kumulative Updatepaket für SQL Server 2008 erhalten finden Sie im folgenden Artikel der Microsoft Knowledge Base:
973601  (http://support.microsoft.com/kb/973601/ ) Kumulatives Updatepaket 7 für SQL Server 2008
Hinweis: Da die Builds kumulativ sind, enthält jede neue Update-Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 enthalten waren. Wir empfehlen Sie die neueste Hotfix-Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
956909  (http://support.microsoft.com/kb/956909/ ) SQL Server 2008 erstellt, die nach SQL Server 2008 veröffentlicht wurde veröffentlicht wurden

SQL Server 2008 Service Pack 1 (SP1)

wichtig Sie müssen dieses Update verwenden, wenn Sie SQL Server 2008 Service Pack 1 (SP1) ausführen.

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulative Update 4 für SQL Server 2008 Service Pack 1 veröffentlicht. Weitere Informationen zu diesem kumulativen Update-Paket finden Sie im folgenden Artikel der Microsoft Knowledge Base:
973602  (http://support.microsoft.com/kb/973602/LN/ ) Kumulatives Updatepaket 4 für SQL Server 2008 Service Pack 1
Hinweis: Da die Builds kumulativ sind, enthält jede neue Update-Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 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:
970365  (http://support.microsoft.com/kb/970365/LN/ ) SQL Server 2008 erstellt, die nach Freigabe von SQL Server 2008 Service Pack 1 veröffentlicht wurden
Microsoft SQL Server 2008 Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen einen SQL Server 2008 Service Pack 1 Hotfix auf eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einer SQL Server Service Pack bereitgestellt wird in das nächste SQL Server Service Pack enthalten.

Abhilfe

Wenden Sie eines der folgenden Verfahren an, um dieses Problem zu umgehen:

Methode 1

Um Vorkommen dieser Fehler auf eine weitere tolerierbare Ebene zu reduzieren, verringern Sie den Wert der ­CommitBatchSize und CommitBatchThreshold -Parameter für Verteilungs-Agent. Das Ziel besteht darin, die maximale Anzahl der Befehle pro Commit Batch überschreiten 2.100 Parameter pro Batch von Befehlen zu vermeiden zu beschränken.

Beispielsweise ist der Standardwert des Parameters ­CommitBatchSize 100. Sie können auf 10 ändern. Der Standardwert des Parameters CommitBatchThreshold ist 1000. Sie können es in 100 ändern.

Verringern diese Werte kann die Leistung beeinflussen, da Batches in der ursprünglich optimale Größe nicht übermittelt werden. Diese Methode kann jedoch die Fehlerbedingungen vermieden, die im Abschnitt Ursache beschrieben werden.

Sie können die Parameter ­CommitBatchSize und CommitBatchThreshold mithilfe einer der folgenden Methoden ändern:
  • Der ­CommitBatchSize und CommitBatchThreshold Parameter im Befehl für das Distribution Agent Auftrag Schritt in SQL Server Agent hinzufügen
  • Ändern Sie die ­CommitBatchSize und CommitBatchThreshold -Parameter, wenn Sie ein neues Agentprofil aus dem Dialogfeld Verteilereigenschaften oder von Replication Monitor erstellen.
Weitere Informationen zum Ändern Website dieser Parameter die folgenden Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx (http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx)


Wenn Sie diesen Fehler in späteren Wiederholung des Stapels vollständig zu vermeiden möchten, müssen Sie für den schlimmsten Fall planen. Gehen Sie hierzu finden Sie den breitesten Artikel, der meisten Anzahl der Spalten in der Publikation verfügt. Wenn Sie eine Tabelle mit 100 Spalten, die in die Transaktionspublikation publiziert wird verfügen, kann ein replizierter Befehl für die Tabelle z. B. 100 Parameter enthalten. Sie müssen der Parametereinstellung CommitBatchThreshold reduzieren, so dass die maximale Anzahl von Parametern, die der Verteilungs-Agent in jedem Batch senden höchstens 2098 ist. Wenn alle Spalten mit dem Befehl betroffen sind, muss der Parametereinstellung CommitBatchThreshold 20 oder verkleinern, damit für maximal 2000 Parameter pro Batch von Befehlen anhand der Tabelle 20 sein.

Methode 2

Verwenden Sie den gleichen Befehl Replikationstyp für alle Artikel in der Publikation, wenn Sie die Publikation einrichten. Vermeiden Sie Mischen der Befehl Übermittlungsmechanismen für Artikel in der gleichen Publikation um die Notwendigkeit der Verteilungs-Agent zum Übermitteln des Stapels mithilfe der Sp_executesql gespeicherten Prozedur als Wrapper im Batchmodus Befehle auswählen zu reduzieren.

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.

Weitere Informationen

Weitere Informationen zur Replikation Verteilungs-Agent die folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx (http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx)

Weitere Informationen über Profile der Replikations-Agent die folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx (http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx)

Informationsquellen

Weitere Informationen zu inkrementellen Dienstmodell für SQL Server finden Sie im folgenden Artikel der Microsoft Knowledge Base:
935897  (http://support.microsoft.com/kb/935897/ ) Ein inkrementelles Dienstmodell steht SQL Server-Team zum Übermitteln von Hotfixes für gemeldete Probleme
Weitere Informationen zum Beziehen von SQL Server 2005 Service Pack 3 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
913089  (http://support.microsoft.com/kb/913089/ ) Beziehen der neuesten Service Packs für SQL Server 2005
Weitere Informationen über die neuen Features in SQL Server 2005 SP3 und die Verbesserungen in SQL Server 2005 SP3 die folgende Microsoft-Website:
http://go.microsoft.com/fwlink/?LinkId=131442 (http://go.microsoft.com/fwlink/?LinkId=131442)
Weitere Informationen zum Benennungsschema für SQL Server-Updates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
822499  (http://support.microsoft.com/kb/822499/ ) Neues Namensschema für Microsoft SQL Server-Softwareupdate-Paketen
Weitere Informationen zur Terminologie für Softwareupdates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684  (http://support.microsoft.com/kb/824684/ ) Erläuterung von Standardbegriffen bei Microsoft Softwareupdates

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Keywords: 
kbmt kbsurveynew kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver KB973103 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
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: 973103  (http://support.microsoft.com/kb/973103/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store