Sintomi
Supponiamo che tu usi la replica di tipo merge in Microsoft SQL Server 2012 o in Microsoft SQL Server 2014. Come parte del processo di sincronizzazione, l'agente di merge crea una nuova generazione in una sessione. Se per qualche motivo, ad esempio un deadlock o un timeout, la transazione di generazione è selezionata come vittima di un deadlock e viene eseguito il rollback della transazione, potrebbe essere presente una grande catena di blocchi per MSinternal_makegeneration_inprog blocco dell'applicazione nei prossimi tipi di generazione e la sessione menzionata in precedenza viene visualizzata come blocco principale.
Causa
Il blocco dell'applicazione usato per proteggere un processo di creazione di una generazione è un blocco dell'applicazione a livello di sessione. Quando viene rilevato un deadlock durante il processo di creazione di una generazione, viene eseguito il rollback solo della transazione, ma la sessione non viene disconnessa. Per rilasciare un blocco dell'applicazione a livello di sessione, la sessione deve disconnessione. Di conseguenza, a causa della progettazione della logica di ripetizione (la sessione non verrà disattivata durante la generazione che non riesce a eseguire la replica di tipo merge), se la prima generazione ha esito negativo con un deadlock, il blocco di sessione (MSinternal_makegeneration_inprog) ottenuto non verrà rilasciato durante il rollback delle transazioni. In questo modo, il blocco della catena di richieste di blocco viene effettuato nel processo di creazione di prossima generazione. Il blocco per la testa viene visualizzato per essere la prima generazione che effettua una richiesta che non riesce con un deadlock. Prima dell'hotfix, SQL Server cancella solo il blocco per un processo di creazione di generazione riuscito. Lascia un blocco dell'applicazione di sessione orfana prima della disconnessione della sessione se si verifica un deadlock.
Risoluzione
Questo problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 5 per SQL Server 2014 /en-us/help/3011055
Aggiornamento cumulativo 3 per SQL Server 2012 SP2 /en-us/help/3002049
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".