Příznaky
Předpokládejme, že používáte slučovací replikaci v Microsoft SQL serveru 2012 nebo Microsoft SQL serveru 2014. Součástí procesu synchronizace je to, že agent sloučení vytvoří v relaci novou generaci. Pokud z nějakého důvodu, například zablokování nebo časového limitu, je transakce vyúčtování vybrána jako oběť pro zablokování a transakce se odeberou, může být v nadcházejících operacích vytváření MSinternal_makegeneration_inprog zámek aplikace velký, a ta, která je dřív uvedená, se zobrazí jako blok hlavy.
Příčina
Zámek aplikace, který se používá k zabezpečení procesu generace, je zámek aplikace úrovně relace. Když se během procesu generování zjistí zablokování, jenom transakce se vrátí zpátky, ale relace se odhlásí. Pokud chcete uvolnit zámek aplikace na úrovni relace, musí se relace odhlásit. Vzhledem k tomu, že je proto možné vytvořit logiku opakování (relace nebude při neúspěšném vytváření slučovacích replikací odhlášena), pokud první generace selže s zablokování, nebude uvolněn zámek relace (MSinternal_makegeneration_inprog) , který získal. To způsobuje blokování řetězce požadavků Lock v nadcházející generaci. Blok hlavy se zobrazuje jako první požadavek na vytvoření, který se nedaří zablokování. Systém SQL Server před opravou hotfix pouze vymaže zámek pro úspěšný proces generování. Před odhlášením mezi relacemi v případě, že dojde k zablokování, opustí osamocenou aplikaci relace.
Řešení
Tento problém byl poprvé opraven následující kumulativní aktualizací SQL serveru.
Kumulativní aktualizace 5 pro SQL Server 2014 /en-us/help/3011055
Kumulativní aktualizace 3 pro SQL Server 2012 SP2 /en-us/help/3002049
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.