Modificare il livello di compatibilità del database e usare Query Store
Si applica a: SQL Server - solo Windows
In SQL Server 2016 (13.x) e versioni successive, alcune modifiche vengono abilitate solo dopo la modifica del livello di compatibilità del database. Questa operazione viene eseguita per diversi motivi:
Poiché l'aggiornamento è un'operazione unidirezionale, in quanto non è possibile effettuare il downgrade del formato del file, è utile impostare l'abilitazione delle nuove funzionalità come un'operazione separata all'interno del database. È possibile ripristinare un'impostazione a un livello di compatibilità del database precedente. Il nuovo modello riduce il numero di operazioni che devono essere eseguite durante un intervallo di interruzione.
Le modifiche apportate a Query Processor possono avere effetti complessi. Anche se una modifica "positiva" al sistema è ideale per la maggior parte dei carichi di lavoro, potrebbe causare una regressione inaccettabile altrove in una query importante. Separare la logica dal processo di aggiornamento consente a funzionalità quali Query Store di ridurre rapidamente le regressioni della scelta del piano o persino di evitarle completamente nei server di produzione.
Sono previsti i comportamenti seguenti per SQL Server 2017 (14.x) quando un database viene collegato o ripristinato e dopo un aggiornamento sul posto:
- Se il livello di compatibilità di un database utente era 100 o superiore prima dell'aggiornamento, rimane invariato dopo l'aggiornamento.
- Se il livello di compatibilità di un database utente è 90 prima dell'aggiornamento, nel database aggiornato viene impostato su 100, ovvero sul livello di compatibilità supportato più basso in SQL Server 2017 (14.x).
- I livelli di compatibilità dei database
tempdb
,model
,msdb
e Resource vengono impostati sul livello di compatibilità corrente dopo l'aggiornamento. - Per il database di sistema
master
viene mantenuto il livello di compatibilità precedente l'aggiornamento.
Il processo di aggiornamento per abilitare nuove funzionalità di Query Processor è correlato al modello di manutenzione post-rilascio del prodotto. Alcune di queste correzioni vengono rilasciate con il flag di traccia 4199. I clienti che necessitano di correzioni possono acconsentire esplicitamente a esse senza causare regressioni impreviste per altri clienti. Il modello di manutenzione post-rilascio per gli aggiornamenti rapidi di Query Processor è documentato qui. A partire da SQL Server 2016 (13.x) il passaggio a un nuovo livello di compatibilità implica che il flag di traccia 4199 non è più necessario, in quanto tali correzioni sono ora abilitate per impostazione predefinita nel livello di compatibilità più recente. Come parte del processo di aggiornamento, è pertanto importante verificare che al termine del processo di aggiornamento il flag di traccia 4199 non sia abilitato.
Nota
Il flag di traccia 4199 tuttavia è ancora necessario per abilitare eventuali nuove correzioni di Query Processor rilasciate dopo la versione RTM, se applicabile.
Il flusso di lavoro consigliato per aggiornare Query Processor alla versione più recente del codice è documentato nella sezione Mantenere la stabilità delle prestazioni durante l'aggiornamento alla nuova versione di SQL Server in Scenari di utilizzo di Query Store, come illustrato di seguito.
A partire da SQL Server Management Studio v18, gli utenti possono essere guidati nel flusso di lavoro consigliato con l'Assistente ottimizzazione query. Per altre informazioni, vedere Aggiornamento di database mediante l'Assistente ottimizzazione query.