Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di un database di Microsoft SQL Server 2012 o della versione precedente con più filegroup e il filegroup secondario è il filegroup predefinito.
-
Eseguire il backup del database e quindi ripristinarlo in SQL Server 2014.
-
Si imposta il filegroup primario come filegroup predefinito e quindi si prova a rimuovere il filegroup secondario.
In questo scenario, non è possibile eliminare il filegroup secondario anche se tutti i dati in essa contenuti vengono eliminati. Il messaggio di errore indica che il filegroup secondario non può essere rimosso perché non è vuoto.
Causa
Il problema si verifica perché l'aggiornamento della versione del database crea oggetti di sistema nel filegroup predefinito anziché nel filegroup principale in SQL Server 2014. Il filegroup secondario contiene ancora alcuni oggetti di sistema.
Risoluzione
Questa correzione introduce il flag di traccia 3861 per trasferire le tabelle di sistema nel filegroup principale. Dopo aver applicato l'hotfix descritto in questo articolo, quando si avvia SQL Server con il flag di traccia 3861 come parametro di avvio, è possibile trasferire le tabelle di sistema nel filegroup primario. Se non è ancora stato ripristinato il backup del database, è possibile abilitare il contrassegno di traccia a livello di server:
dbcc traceon(3861,-1)<Restore the database>dbcc traceoff(3861,-1)
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 4 per SQL Server 2014 /en-us/help/2999197
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".