Oprava: chybová zpráva při spuštění Agent distribuce synchronizovat odběratelům s vydavatelem v Microsoft SQL Server 2005 nebo SQL Server 2008: "The příchozí tabulková data datového proudu (TDS) vzdálené volání procedury proudu protokol (RPC) je nesprávná"

Společnost Microsoft distribuuje opravy Microsoft SQL Server 2005 jako jeden soubor ke stažení. Protože jsou kumulativní opravy, každá nová verze tedy obsahuje všechny opravy hotfix a verzí oprav všech oprav zabezpečení, které byly součástí předchozích SQL Server 2005.

Příznaky

Použití transakční replikace v Microsoft SQL Server 2005. Při spuštění Agent distribuce synchronizovat odběratelům s vydavatelem distribuce Agent může selhat a v historii distribuce agenta nebo výstup protokolu se zobrazí následující chybová zpráva:

42000 příchozí tabulková data datový proud (TDS) vzdálené volání procedury proudu protokol (RPC) je nesprávná. Příliš mnoho parametrů jsou uvedeny v tento požadavek RPC. Maximální počet je 2100. 8003

Dojde-li tyto chyby opakovaně, může být ovlivněn výkon. Dojde-li k takové poruchy, Agent distribuce bude provádět zpracování opakování pokusu stejné příkazy, znovu. Agent distribuce proto používá více času synchronizovat odběratelům s vydavatelem, protože každá problematické partie je vyzkoušeli dvakrát.

Příčina

Při distribuci Agent zpracovává čekající příkazy v distribuční databáze, používá parametr CommitBatchSize a parametr CommitBatchThreshold určit, kolik příkazy jsou v dávce společně jako jeden provádění při odešle tyto příkazy odběratelům.

Parametr CommitBatchSize je číslo vystavené odběratelům před vydáním příkazu potvrzení transakce. Výchozí hodnota je 100. Parametr CommitBatchThreshold je počet příkazů replikace vystavené odběratelům před vydáním příkazu potvrzení . Výchozí hodnota je 1000.

Protože jediné transakce může obsahovat jeden příkaz nebo může obsahovat mnoho příkazů, nastavení parametru CommitBatchSize 100 a nastavení parametru CommitBatchThreshold 1000 by mohla umožnit pro několik tisíc příkazy být doručeny v jediné dávkové příkazy.

Pokud článek je přidán do publikace, @ins_cmd, @upd_cmda @del_cmd parametry typ příkazu replikace jsou určeny pro sp_addarticle uložené procedury k určení způsobu doručit příkazy odběratele. Kromě parametrů CommitBatchSize a CommitBatchThreshold Agent distribuce má také zvážit, že jsou maximální požadavky v nativní klient zprostředkovatele SQL OLE DB na kolik parametry mohou být vázány v jedné dávce příkazy, který je odeslán účastníkovi.

Existuje maximální 2100 parametry, které lze použít v jediné dávkové příkazy. Agent distribuce proto automaticky rozdělí velké listy na právě dostatek výkazů za dávky tak, že není překročena maximální 2100 parametry. Pak všechny zbývající příkazy v dávce, příkaz automaticky přesunuty do další dávku provádění.

K tomuto problému dochází, pokud Agent distribuce nesprávně vypočte počet parametrů, které jsou nezbytné k provádění dávkových příkazů. Tato situace nastane, pokud Agent distribuce používá dynamické uložené procedury sp_executesql jako obálka pro dávkové replikované mnoho příkazů.

Replikované příkaz obsahuje více než 2098 parametry v příkazu Dávka a dávkový příkaz zabaleno pomocí sp_executesql uložená procedura k poskytování dávek jako dynamicky předdefinovaný příkaz Transact-SQL, Agent distribuce nezahrnuje do výpočtu, že sp_executesql uložené procedury potřebám dva další vázaného parametry samotné funkce. Celkový počet parametrů tedy nesmí přesáhnout 2100 parametry.

Agent distribuce může použít tento výběr doručení dynamicky předdefinovaný příkaz Transact-SQL vnořen sp_executesql uložené procedury v následujících situacích:
  • Článek obsahuje binární velké objekt (BLOB) sloupce, například text nebo obrázek sloupce.
  • Přes všechny články se používá více než jeden typ příkazu replikace. Například pokud jednoho článku používá typ příkazu SQL doručení replikace, ale jiného článku používá sp_MSins_procedure uložené procedury jako typ příkazu replikace.

Řešení

SQL Server 2005


Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 5 pro SQL Server 2005 Service Pack 3. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
972511 kumulativní aktualizace 5 pro SQL Server 2005 Service Pack 3
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a verzí oprav všech oprav zabezpečení, které byly součástí předchozích SQL Server 2005. Společnost Microsoft doporučuje zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
960598 SQL Server 2005 vytvoří, které byly vydány po vydání SQL Server 2005 Service Pack 3
Opravy hotfix pro Microsoft SQL Server 2005 jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2005 Service Pack 3 musí použít k instalaci aplikace SQL Server 2005 Service Pack 3. Ve výchozím žádné opravy hotfix, která je poskytována v aktualizace service pack serveru SQL Server je součástí další aktualizaci service pack pro SQL Server.

SQL Server 2008

SQL Server 2008

Důležité: Tato oprava musíte použít, pokud používáte verzi systému SQL Server 2008.

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 7. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
973601 kumulativní aktualizace balíčku 7 pro SQL Server 2008
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
956909 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008

SQL Server 2008 Service Pack 1 (SP1)

Důležité: Tato oprava musíte použít, pokud používáte systém SQL Server 2008 Service Pack 1 (SP1).


Oprava tohoto problému byla vydána nejprve v kumulativní aktualizace 4 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
973602 kumulativní aktualizace 4 pro SQL Server 2008 Service Pack 1
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Společnost Microsoft doporučuje zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
970365 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2008 Service Pack 1 musí použít k instalaci aplikace SQL Server 2008 Service Pack 1. Ve výchozím žádné opravy hotfix, která je poskytována v aktualizace service pack serveru SQL Server je součástí další aktualizaci service pack pro SQL Server.

Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:

Metoda 1

Chcete-li snížit výskyty této chyby více přípustná úroveň snížení hodnoty parametry CommitBatchSize a CommitBatchThreshold Agent distribuce. Cílem je omezit maximální počet příkazů v dávce potvrzení, aby nedošlo k překročení 2100 parametry za dávkové příkazy.

Například výchozí hodnota parametru CommitBatchSize je 100. Lze změnit na 10. Výchozí hodnota parametru CommitBatchThreshold je 1000. Lze změnit na hodnotu 100.

Snížení tyto hodnoty mohou ovlivnit výkon, protože listy nejsou doručeny v původně optimální velikosti. Tato metoda pomáhá zabránit chybové podmínky, které jsou popsány v části Příčina.

Parametry CommitBatchSize a CommitBatchThreshold můžete změnit pomocí jedné z následujících metod:
  • Přidat CommitBatchSize a CommitBatchThreshold parametrů v příkazu v kroku úlohy Agent distribuce Agent serveru SQL Server
  • Změníte parametry CommitBatchSize a CommitBatchThreshold při vytváření nového profilu agenta z dialogového okna Vlastnosti Distributor nebo sledování replikace.
Další informace o tom, jak změnit tyto parametry naleznete následujícím webu Microsoft Developer Network (MSDN):


Zcela se vyhnout této chybě v pozdější opakování dávky, plánujete musí pro scénář nejhorší případu. Chcete-li to provést, najděte nejširší článek, který má většina počet sloupců v publikaci. Například máte tabulku, která má 100 sloupce, který je publikován v publikaci transakční replikované jediného příkazu proti tabulky mohou obsahovat 100 parametry. Nastavení parametru CommitBatchThreshold musí snížit tak, aby maximální počet parametrů, které Agent distribuce musí poslat v každé dávce, jeden nejvíce 2098. Pokud pomocí příkazu jsou ovlivněny všechny sloupce, nastavení parametru CommitBatchThreshold musí být 20 nebo menší umožňující maximálně 2000 parametry za dávkové příkazy 20 proti tabulky.

Metoda 2

Pokud nastavíte publikaci, použijte stejný typ příkazu replikace pro všechny články v publikace. Vyhnout směšování mechanismy doručování příkaz pro články ve stejné publikaci snížit nutné Agent distribuce vyberte doručování dávky pomocí sp_executesql uložené procedury jako souhrnný na dávkové příkazy.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Další informace

Další informace o replikace distribuční Agent naleznete následujícím webu Microsoft Developer Network (MSDN):

Další informace o profilech agenta replikace naleznete následujícím webu Microsoft Developer Network (MSDN):

Odkazy


Další informace o přírůstkové Model servis pro SQL Server získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
935897
Dílčí Model obsluhy je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže

Další informace o možnostech získání aktualizace SQL Server 2005 Service Pack 3 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
913089
Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Další informace o nových funkcích v aktualizaci SQL Server 2005 SP3 a o vylepšeních v aktualizaci SQL Server 2005 SP3 naleznete na následujícím webu společnosti Microsoft:

Další informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499
Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server pro
Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684
Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft
Vlastnosti

ID článku: 973103 - Poslední kontrola: 13. 1. 2017 - Revize: 1

Váš názor