Modificare la modalità di compatibilità del database e usare l'archivio queryChange the Database Compatibility Mode and Use the Query Store

In SQL Server 2016 e SQL Server 2017 alcune modifiche vengono abilitate solo dopo aver modificato il livello DATABASE_COMPATIBILITY di un database.In SQL Server 2016 and SQL Server 2017, some changes are only enabled once the DATABASE_COMPATIBILITY level for a database has been changed. Questa operazione viene eseguita per diversi motivi:This was done for several reasons:

  • 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.Since upgrade is a one-way operation (it is not possible to downgrade the file format), there is value in separating the enablement of new features to a separate operation within the database. È possibile ripristinare un'impostazione a un livello di DATABASE_COMPATIBILITY precedente.It is possible to revert a setting to a prior DATABASE_COMPATIBILITY level. Il nuovo modello riduce il numero di operazioni che devono essere eseguite durante un intervallo di interruzione.The new model reduces the number of things that must happen during an outage window.

  • Le modifiche apportate a Query Processor possono avere effetti complessi.Changes to the query processor can have complex effects. Anche se una modifica "positiva" al sistema è ideale per la maggior parte dei clienti, potrebbe causare una regressione inaccettabile altrove in una query importante.Even though a “good” change to the system may be great for most customers - it may cause an unacceptable regression on an important query for others. Separare la logica dal processo di aggiornamento consente a funzionalità quali l'archivio di query di ridurre rapidamente le regressioni della scelta del piano o persino di evitarle completamente nei server di produzione.Separating this logic from the upgrade process allows for features, such as the Query Store, to mitigate plan choice regressions quickly or even avoid them completely in production servers.

Nota

Se il livello di compatibilità di un database utente era 100 o superiore prima dell'aggiornamento, rimane invariato dopo l'aggiornamento.If the compatibility level of a user database was 100 or higher before the upgrade, it remains the same after upgrade. Se il livello di compatibilità è 90 prima dell'aggiornamento, nel database aggiornato viene impostato su 100, ovvero sul livello di compatibilità supportato più basso in SQL Server 2017SQL Server 2017.If the compatibility level was 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2017SQL Server 2017. I livelli di compatibilità dei database tempdb, model, msdb e Resource vengono impostati sul livello di compatibilità corrente dopo l'aggiornamento.The compatibility levels of the tempdb, model, msdb and Resource databases are set to the current compatibility level after upgrade. Per il database di sistema master viene mantenuto il livello di compatibilità precedente l'aggiornamento.The master system database retains the compatibility level it had before upgrade.

Il processo di aggiornamento per abilitare nuove funzionalità di Query Processor è correlato al modello di manutenzione post-rilascio del prodotto.The upgrade process to enable new query processor functionality is related to the post-release servicing model of the product. Alcune di queste correzioni vengono rilasciate con il flag di traccia 4199.Some of those fixes are released under trace flag 4199. I clienti che necessitano di correzioni possono acconsentire esplicitamente a esse senza causare regressioni impreviste per altri clienti.Customers needing fixes can opt-in to those fixes without causing unexpected regressions for other customers. Il modello di manutenzione post-rilascio per gli aggiornamenti rapidi di Query Processor è documentato qui.The post-release servicing model for query processor hotfixes is documented here. A partire da SQL Server 2016 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.Beginning with SQL Server 2016, moving to a new compatibility level implies that the 4199 trace flag is no longer needed because those fixes are now enabled by default in the latest compatibility level. Come parte del processo di aggiornamento, è pertanto importante verificare che al termine del processo di aggiornamento il flag di traccia 4199 non sia abilitato.Therefore, as part of the upgrade process, it is important to validate that 4199 is not enabled once the upgrade process completes.

Il flusso di lavoro consigliato per l'aggiornamento di Query Processor alla versione più recente del codice è:The recommended workflow for upgrading the query processor to the latest version of the code is:

  1. Aggiornare un database a SQL Server 2016 senza modificare il livello di compatibilità del database, mantenendolo al livello precedenteUpgrade a database to SQL Server 2016 without changing the database compatibility level (keep it at prior level)

  2. Abilitare l'archivio query nel database.Enable the query store on the database. Per altre informazioni sull'abilitazione e l'uso dell'archivio query, vedere Monitoring Performance By Using the Query Store.For more information about enabling and using the query store, see Monitoring Performance By Using the Query Store.

  3. Attendere un tempo sufficiente per raccogliere dati rappresentativi del carico di lavoro.Wait sufficient time to collect representative data of the workload.

  4. Impostare il livello di compatibilità del database su quello attuale.Change the compatibility level of the database to the current compatibility level.

    Nota

    Il livello di compatibilità più recente dipende dalla versione di SQL Server.The latest compatibility level depends on the SQL Server version.

    • SQL Server 2016: 130SQL Server 2016: 130
    • SQL Server 2017: 140SQL Server 2017: 140
  5. Valutare mediante SQL Server Management Studio se sono presenti regressioni delle prestazioni in query specifiche dopo la modifica del livello di compatibilità.Using SQL Server Management Studio, evaluate if there are performance regressions on specific queries after the compatibility level change.

  6. Per i casi in cui sono presenti regressioni, forzare il piano precedente nell'archivio query.For cases where there are regressions, force the prior plan in the query store.

  7. Se non è possibile forzare i piani di query o se le prestazioni sono ancora insufficienti, è consigliabile ripristinare il livello di compatibilità all'impostazione precedente e contattare il supporto tecnico Microsoft.If there are query plans that fail to force or if performance is still insufficient, consider reverting the compatibility level to the prior setting and then engaging Microsoft Customer Support.

Vedere ancheSee Also

Visualizzare o modificare il livello di compatibilità di un databaseView or Change the Compatibility Level of a Database