Sintomi
Quando si eseguono le operazioni DDL, ad esempio crea indice o tronca tabella in SQL Server 2016, le operazioni potrebbero essere bloccate se è in esecuzione un'altra transazione DDL nello stesso database.
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server:
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. È consigliabile scaricare e installare gli aggiornamenti cumulativi più recenti per SQL Server:
Ulteriori informazioni
Quando un DDL crea o Elimina una tabella o un indice, deve inserire o eliminare l'ID del rowset della tabella o dell'indice da sysrowsets, per cui deve contenere un blocco X di livello di riga nella voce. Quando l'operazione viene eseguita all'interno di una transazione, il blocco X verrà mantenuto per la durata della transazione. Quando Tuple Mover individua i buffer di eliminazione svuotabili, è necessario scorrere sysrowsets per individuare le tabelle o gli indici esistenti. Per leggere ogni riga da sysrowsets deve contenere un blocco di livello di riga sulla voce che sta leggendo. Il processo di individuazione si arresta quando viene individuato il primo rowset su cui può eseguire il lavoro. A questo punto, la tupla Mover eseguirà il lavoro effettivo di svuotare il buffer di eliminazione, ma per assicurarsi che il rowset rilevato sia ancora valido, il blocco verrà bloccato in tutti i rowset valutati durante il processo di individuazione fino a quando non termina il lavoro.Sysrowsets viene ordinato dall'ID rowset, quindi può succedere che Tuple Mover abbia analizzato più set di righe esistenti in cui non ha alcuna azione da eseguire, ma continuerà a contenere il blocco Sch-S e arriverà a una voce di sysrowsets per cui non può acquisire il blocco del livello di riga, perché attualmente viene modificato da una transazione a esecuzione prolungata che contiene un blocco X. A questo punto, DDLs che coinvolgono la modifica dell'ID rowset sono bloccati dietro i blocchi SCH-S di Tuple Mover.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.