Spoločnosť Microsoft distribuuje Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) alebo Microsoft SQL Server 2012 opravy v jednom súbore na stiahnutie. Keďže opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchlych opráv a všetky aktualizácie zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 Service Pack 1 (SP1) alebo Microsoft SQL Server 2012 Update Release.
Príznaky
Zoberme si nasledujúcu situáciu:
-
Na základe jednej databázy v Microsoft SQL Server 2008 R2 alebo Microsoft SQL Server 2012 vytvoríte aspoň dve transakčné publikácie replikácie.
-
Každá publikácia obsahuje aspoň jeden článok. Články sa neprekrývajú a každý článok patrí iba k jednej publikácii.
-
Môžete nastaviť vlastnosť @sync_method publikácií na súčasné.
-
Môžete nastaviť vlastnosť @immediate_sync publikácií na hodnotu True.
-
Parameter MaxCmdsInTran v agentovi čítačky denníka sa nastaví na hodnotu nula.
-
Jedna z publikácií dostáva veľa vložiek v jednej transakcii.
-
Po dokončení transakcie sa agent čítačky denníka spustí spracovať a rozdelí transakciu podľa parametra MaxCmdsInTran .
-
Agent snapshotu v inej publikácii sa spustí pred dokončením úlohy agenta čítačky denníka.
V tomto scenári agent čítačky denníka zlyhá a zobrazí sa toto chybové hlásenie:
Proces sa nepodarilo spustiť ' sp_MSadd_replcmds ' na ' server\instance '. (Zdroj: MSSQLServer, číslo chyby: 1007) Nie je možné vložiť duplicitný riadok kľúča v objekte dbo. MSrepl_commands ' s jedinečným indexom ' ucMSrepl_commands '. (Zdroj: MSSQLServer, číslo chyby: 1007)
Riešenie
Kumulatívna aktualizácia informácií
SQL Server 2012
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 1 pre SQL Server 2012. Ďalšie informácie o tomto balíku kumulatívnych aktualizácií nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2679368 Kumulatívna aktualizácia balíka 1 pre SQL Server 2012Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2012 opraviť uvoľnenia. Spoločnosť Microsoft odporúča, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:
2692828 Zostavy SQL servera 2012, ktoré boli vydané po vydaní SQL servera 2012 Ak chcete nainštalovať SQL Server 2012, musíte použiť rýchlu opravu SQL servera 2012.
Kumulatívna aktualizácia balíka 4 pre SQL Server 2008 R2 SP1
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 4. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2008 R2 SP1 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2633146 Kumulatívna aktualizácia balíka 4 pre SQL Server 2008 R2 SP1Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 SP1 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:
2567616 Zostavy SQL servera 2008 R2, ktoré boli vydané po vydaní SQL servera 2008 R2 SP1
Alternatívne riešenie
Ak chcete obísť tento problém, použite jednu z uvedených metód:
-
Nenastavujte vlastnosť @sync_method publikácií na "súčasné" a nenastavte vlastnosť @immediate_sync publikácií na hodnotu True.
-
Nastavte hodnotu parametra MaxCmdsInTran na nulu.
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.