Certificação de compatibilidadeCompatibility Certification

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

A certificação de compatibilidade permite que as empresas atualizem e modernizem um banco de dados SQL ServerSQL Server local, na nuvem e na borda, eliminando os riscos de compatibilidade do aplicativo.Compatibility certification allows businesses to upgrade and modernize a SQL ServerSQL Server database on-premises, in the cloud, and on the edge, eliminating risks of application compatibility.

O mesmo Mecanismo de Banco de DadosDatabase Engine alimenta SQL ServerSQL Server e Banco de dados SQL do AzureAzure SQL Database (incluindo a Instância Gerenciada).The same Mecanismo de Banco de DadosDatabase Engine powers both SQL ServerSQL Server and Banco de dados SQL do AzureAzure SQL Database (including Managed Instance). Esse Mecanismo de Banco de DadosDatabase Engine compartilhado significa que um banco de dados do usuário pode ser movido diretamente entre SQL ServerSQL Server e Banco de dados SQL do AzureAzure SQL Database locais, enquanto o código do aplicativo executado no banco de dados como Transact-SQLTransact-SQL continua funcionando como ele faria em seu sistema de origem.This shared Mecanismo de Banco de DadosDatabase Engine means that a user database can be moved seamlessly between on-premises SQL ServerSQL Server and Banco de dados SQL do AzureAzure SQL Database, while the application code that executes in the database as Transact-SQLTransact-SQL continues to work as it would in its source system.

Para cada nova versão de SQL ServerSQL Server, o nível de compatibilidade padrão é definido como a versão do Mecanismo de Banco de DadosDatabase Engine.For each new release of SQL ServerSQL Server, the default compatibility level is set to the version of the Mecanismo de Banco de DadosDatabase Engine. Mas o nível de compatibilidade de versões anteriores é preservado para garantir a compatibilidade contínua dos aplicativos existentes.But the compatibility level of previous versions is preserved for continued compatibility of existing applications. Essa matriz de compatibilidade pode ser vista aqui.This compatibility matrix can be seen here. Portanto, um aplicativo que foi certificado para funcionar com uma determinada versão SQL ServerSQL Server estava, de fato, certificado para funcionar no nível de compatibilidade padrão dessa versão.Therefore, an application that was certified to work with a given SQL ServerSQL Server version was in fact certified to work on that version's default compatibility level.

Por exemplo, o nível de compatibilidade do banco de dados 130 era o padrão em SQL Server 2016 (13.x)SQL Server 2016 (13.x).For example, database compatibility level 130 was the default in SQL Server 2016 (13.x)SQL Server 2016 (13.x). Como os níveis de compatibilidade forçam comportamentos de otimização de consulta e funcionais Transact-SQLTransact-SQL específicos, um banco de dados certificado para trabalhar no SQL Server 2016 (13.x)SQL Server 2016 (13.x) foi certificado implicitamente no nível de compatibilidade do banco de dados 130.Because compatibility levels force specific Transact-SQLTransact-SQL functional and query optimization behaviors, a database certified to work on SQL Server 2016 (13.x)SQL Server 2016 (13.x) was implicitly certified on database compatibility level 130. Esse banco de dados pode funcionar no estado em que se encontra em uma versão mais recente de SQL ServerSQL Server (como SQL ServerSQL Server) e Banco de dados SQL do AzureAzure SQL Database, desde que o nível de compatibilidade do banco de dados seja mantido como 130.This database can work as-is on a more recent version of SQL ServerSQL Server (such as SQL ServerSQL Server) and Banco de dados SQL do AzureAzure SQL Database, as long as the database compatibility level is kept as 130.

Esse é um princípio fundamental do modelo de operação de integração contínua do MicrosoftMicrosoft Banco de dados SQL do AzureAzure SQL Database.This is a fundamental principle for MicrosoftMicrosoft Banco de dados SQL do AzureAzure SQL Database continuous integration operation model. O Mecanismo de Banco de DadosDatabase Engine é continuamente aprimorado e atualizado no Azure, mas como os bancos de dados existentes mantêm seu nível de compatibilidade atual, eles continuam funcionando conforme projetado após as atualizações no Mecanismo de Banco de DadosDatabase Engine subjacente.The Mecanismo de Banco de DadosDatabase Engine is continuously improved and upgraded in Azure, but because existing databases keep their current compatibility level, they continue to work as designed even after upgrades to the underlying Mecanismo de Banco de DadosDatabase Engine.

Gerenciar risco de atualização com a Certificação de CompatibilidadeManaging upgrade risk with Compatibility Certification

Usar a Certificação de Compatibilidade é uma abordagem valiosa à modernização do banco de dados.Using Compatibility Certification is a valuable approach to database modernization. Ao certificar com base no nível de compatibilidade, os desenvolvedores definem os requisitos técnicos de um aplicativo com suporte no SQL ServerSQL Server e no Banco de dados SQL do AzureAzure SQL Database, mas desacoplam o ciclo de vida do aplicativo do ciclo de via da plataforma do banco de dados.By certifying based on compatibility level, developers set the technical requirements for an application to be supported on SQL ServerSQL Server and Banco de dados SQL do AzureAzure SQL Database, but decouple the application lifecycle from the database platform lifecycle. Isso permite que as empresas mantenham o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine atualizado conforme necessário pelas políticas de ciclo de vida, além de aproveitar novos aprimoramentos de escalabilidade e desempenho que não dependem de código, e os aplicativos em conexão mantêm seu status funcional por meio de atualizações.This allows companies to keep the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine upgraded as needed by lifecycle policies, as well as leveraging new scalability and performance enhancements that are not code dependant, and connecting applications maintain their functional status through upgrades.

A possibilidade de afetar negativamente a funcionalidade e o desempenho são os principais fatores de risco de qualquer atualização.The possibility of adversely affecting functionality and performance are the main risk factors for any upgrade. A Certificação de Compatibilidade representa a tranquilidade em termos de gerenciamento destes riscos de atualização:Compatibility Certification represents peace of mind in terms of managing these upgrade risks:

  • No que se refere ao comportamento do Transact-SQLTransact-SQL, qualquer alteração significa que um aplicativo precisa ser recertificado quanto à exatidão.In what relates to Transact-SQLTransact-SQL behavior, any change means that an application needs to be recertified for correctness. No entanto, a configuração de nível de compatibilidade do banco de dados oferece compatibilidade com versões anteriores do SQL ServerSQL Server apenas para o banco de dados especificado, não para todo o servidor.However, the database compatibility level setting provides backward compatibility with earlier versions of SQL ServerSQL Server only for the specified database, not for the entire server. Manter o nível de compatibilidade do banco de dados no estado em que se encontra faz as consultas de aplicativo existentes continuarem exibindo o mesmo comportamento antes e depois de uma atualização Mecanismo de Banco de DadosDatabase Engine.Keeping the database compatibility level as-is ensures that existing application queries continue to display the same behavior before and after a Mecanismo de Banco de DadosDatabase Engine upgrade. Para saber mais sobre o comportamento Transact-SQLTransact-SQL e níveis de compatibilidade, confira Usar níveis de compatibilidade para compatibilidade com versões anteriores.For more information about Transact-SQLTransact-SQL behavior and compatibility levels, see Using compatibility levels for backward compatibility.

  • Em relação ao desempenho, como as melhorias no Otimizador de Consulta são introduzidas com cada versão, poderia ser esperado encontrar diferenças de plano de consulta entre diferentes versões do Mecanismo de Banco de DadosDatabase Engine.In what relates to performance, because improvements in the Query Optimizer are introduced with every version, it could be expected to encounter query plan differences between different Mecanismo de Banco de DadosDatabase Engine versions. As diferenças de plano de consulta no escopo de uma atualização geralmente representam risco quando há potencial de que algumas alterações possam ser prejudiciais para uma determinada consulta ou carga de trabalho.Query plan differences in the scope of an upgrade usually translate to risk, when there is potential that some changes may be detrimental for a given query or workload. Por sua vez, esse risco é uma motivação para a recertificação, que pode atrasar atualizações e gerar desafios de ciclo de vida e de suporte.In turn, this risk is a motivation for recertification, which can delay upgrades and pose lifecycle and support challenges. A mitigação de riscos de atualização é o motivo pelo qual os aprimoramentos do Otimizador de Consulta estão restritos ao nível de compatibilidade padrão de uma nova versão (ou seja, o nível de compatibilidade mais alto disponível para qualquer nova versão).Mitigating upgrade risks is why Query Optimizer improvements are gated to the default compatibility level of a new release (in other words, the highest compatibility level available for any new version). A Certificação de Compatibilidade inclui a proteção de forma do plano de consulta: a noção de que manter um nível de compatibilidade do banco de dados no estado em que se encontra imediatamente após uma atualização do Mecanismo de Banco de DadosDatabase Engine significa usar o mesmo modelo de otimização de consulta da nova versão que era usado antes da atualização e que a forma do plano de consulta não deve ser alterada.Compatibility Certification includes query plan shape protection: the notion that maintaining a database compatibility level as-is immediately after a Mecanismo de Banco de DadosDatabase Engine upgrade translates into using the same query optimization model in the new version, as it was before the upgrade, and the query plan shape should not change. Para obter mais informações, confira a seção Por que usar a forma do plano de consulta? neste artigo.For more information, see the Why query plan shape? section in this article.

Para saber mais sobre os níveis de compatibilidade, confira Usar níveis de compatibilidade para compatibilidade com versões anteriores.For more information about compatibility levels, see Using compatibility levels for backward compatibility.

Desde que o aplicativo não precise aproveitar os aprimoramentos que estão disponíveis somente em um nível de compatibilidade do banco de dados mais alto, esta é uma abordagem válida para atualizar o Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine e manter o nível de compatibilidade do banco de dados anterior, sem a necessidade de recertificar um aplicativo.As long as the application does not need to leverage enhancements that are only available in a higher database compatibility level, it is a valid approach to upgrade the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine and maintain the previous database compatibility level, with no need to recertify an application. Para saber mais, confira Níveis de compatibilidade e Atualizações do Mecanismo de Banco de Dados mais adiante neste artigo.For more information, see Compatibility levels and Database Engine upgrades later in this article.

Para um novo trabalho de desenvolvimento ou quando um aplicativo existente exige o uso de novos recursos, como o Processamento de Consulta Inteligente, bem como algum novo Transact-SQLTransact-SQL, planeje atualizar o nível de compatibilidade do banco de dados para a versão mais recente disponível em SQL ServerSQL Server e garanta que o aplicativo funcione com esse nível de compatibilidade.For new development work, or when an existing application requires use of new features such as Intelligent Query Processing, as well as some new Transact-SQLTransact-SQL, plan to upgrade the database compatibility level to the latest available in SQL ServerSQL Server, and certify your application to work with that compatibility level. Para obter mais informações sobre como atualizar o nível de compatibilidade do banco de dados, confira Melhores práticas para atualizar o nível de compatibilidade do banco de dados.For more information on upgrading the database compatibility level, see Best Practices for upgrading Database Compatibility Level.

Por que usar a forma do plano de consulta?Why query plan shape?

Forma do plano de consulta refere-se à representação visual dos vários operadores que compõem um plano de consulta.Query plan shape refers to the visual representation of the various operators that make up a query plan. Isso inclui operadores como buscas, verificações, junções e classificações, bem como as conexões entre eles que indicam o fluxo de dados e a ordem das operações que precisam ser executadas e o conjunto de resultados pretendidos.This includes operators like seeks, scans, joins, and sorts, as well as the connections between them that indicate the flow of data and the order of the operations that must be executed to produce the intended result set. A forma do plano de consulta é determinada pelo otimizador de consulta.The query plan shape is determined by the Query Optimizer.

Para manter o desempenho de consultas previsível durante uma atualização, uma das metas fundamentais é garantir que a mesma forma de plano de consulta seja usada.To keep query performance predictable during an upgrade, one of the fundamental goals is to ensure the same query plan shape is used. Isso pode ser feito ao não alterar o nível de compatibilidade do banco de dados imediatamente após uma atualização, mesmo que o Mecanismo de Banco de DadosDatabase Engine subjacente tenha versões diferentes.This can be achieved by not changing the database compatibility level immediately after an upgrade, even though the underlying Mecanismo de Banco de DadosDatabase Engine has different versions. Se nada mais for alterado no ecossistema de execução de consultas, como alterações significativas em recursos disponíveis ou na distribuição de dos dados subjacentes, o desempenho de uma consulta deverá permanecer inalterado.If nothing else changed in the query execution ecosystem, such as significant changes in available resources, or data distribution in the underlying data, a query's performance should remain unchanged.

No entanto, manter a forma de um plano de consulta não é o único fator que pode ter implicações de desempenho após uma atualização.However, keeping a query plan's shape is not the only factor that may have performance implications after an upgrade. Se mover o banco de dados para um Mecanismo de Banco de DadosDatabase Engine mais recente e também fizer alterações ambientais, você poderá estar introduzindo fatores que terão impacto imediato no desempenho de uma consulta, mesmo se o plano de consulta mantiver a mesma forma entre as versões.If you move the database to a newer Mecanismo de Banco de DadosDatabase Engine and also make environmental changes, you may be introducing factors that will have immediate impact on a query's performance, even if the query plan retains the same shape across versions. Essas alterações ambientais podem incluir o novo Mecanismo de Banco de DadosDatabase Engine ter mais ou menos recursos de memória e CPU disponíveis, alterações nas opções de configuração do servidor ou do banco de dados ou alterações na distribuição de dados que afetam o modo como um plano de consulta é criado.These environmental changes may include the new Mecanismo de Banco de DadosDatabase Engine having more or less memory and CPU resources available, changes to server or database configuration options, or changes to data distribution that affect how a query plan is created. Por isso, é importante entender que manter o nível de compatibilidade do banco de dados protege contra alterações na forma do plano de consulta, mas não oferece proteção contra outros aspectos ambientais que influenciam o desempenho da consulta, alguns dos quais são alterações iniciadas pelo usuário.This is why it's important to understand that maintaining the database compatibility level protects against changes in the query plan shape, but offers no protection from other environmental aspects that influence query performance, some of which are user-initiated changes.

Para obter mais informações, confira o Guia da Arquitetura de Processamento de Consultas.For more information, see the Query Processing Architecture Guide.

Benefícios da Certificação de CompatibilidadeCompatibility Certification benefits

Há vários benefícios imediatos para a certificação do banco de dados como uma abordagem baseada em compatibilidade, em vez de uma abordagem de versão nomeada:There are several immediate benefits to database certification as a compatibility-based approach rather than a named-version approach:

  • Dissociar a certificação do aplicativo da plataforma.Decouple application certification from the platform. Por causa de seu Mecanismo de Banco de DadosDatabase Engine, para aplicativos que só precisam executar consultas Transact-SQLTransact-SQL, não há necessidade de manter processos de certificação separados para o Azure e o local.Because of its shared Mecanismo de Banco de DadosDatabase Engine, for applications that just need to execute Transact-SQLTransact-SQL queries, there is no need to maintain separate certification processes for Azure and on-premises.
  • Reduza os riscos de atualização porque, durante a modernização da plataforma de banco de dados, os ciclos de atualização da camada de plataforma do banco de dados e do aplicativo podem ser separados para que haja menos interrupções e melhor gerenciamento de alterações.Reduce upgrade risks because during database platform modernization, application and database platform layer upgrade cycles can be separated for less disruption, and improved change management.
  • Atualizar sem alterações no código.Upgrade with no code changes. A atualização para uma nova versão de SQL ServerSQL Server ou de Banco de dados SQL do AzureAzure SQL Database pode ser feita sem alterações no código por meio da manutenção do mesmo nível de compatibilidade que o sistema de origem e sem a necessidade imediata de recertificação até o momento em que o aplicativo precisa aproveitar as melhorias que só estão disponíveis em um nível de compatibilidade do banco de dados mais alto.Upgrading to a new version of SQL ServerSQL Server or Banco de dados SQL do AzureAzure SQL Database can be done with no code changes by keeping the same compatibility level as the source system, and no immediate need to recertify until such time when the application needs to leverage enhancements that are only available in a higher database compatibility level.
  • Melhore a capacidade de gerenciamento e a escalabilidade sem exigir alterações no aplicativo, usando aprimoramentos que não estão restringidos pelo nível de compatibilidade do banco de dados.Improve manageability and scalability without requiring application changes, using enhancements that are not gated by database compatibility level. No SQL ServerSQL Server, eles incluem, por exemplo:In SQL ServerSQL Server these include for example:

Novos Bancos de Dados ainda são definidos como o nível de compatibilidade padrão da versão Mecanismo de Banco de DadosDatabase Engine.New Databases are still set to the default compatibility level of the Mecanismo de Banco de DadosDatabase Engine version. Mas, quando um banco de dados é movido de qualquer versão anterior de SQL ServerSQL Server para uma nova versão de SQL ServerSQL Server ou Banco de dados SQL do AzureAzure SQL Database, o banco de dados mantém seu nível de compatibilidade existente.But when a database is moved from any earlier version of SQL ServerSQL Server to a new version of SQL ServerSQL Server or Banco de dados SQL do AzureAzure SQL Database, the database retains its existing compatibility level.

Importante

Antes de mover um banco de dados para uma nova versão de SQL ServerSQL Server ou Banco de dados SQL do AzureAzure SQL Database, verifique se ainda há suporte para o nível de compatibilidade do banco de dados.Before moving a database to a new version of SQL ServerSQL Server or Banco de dados SQL do AzureAzure SQL Database, verify if the database compatibility level is still supported. A matriz de suporte do nível de compatibilidade do banco de dados pode ser vista aqui.The database compatibility level support matrix can be seen here.

A atualização de um banco de dados com um nível de compatibilidade menor do que o permitido (por exemplo, 90 que era o padrão em SQL Server 2005 (9.x)SQL Server 2005 (9.x)), define o banco de dados como o menor nível de compatibilidade permitido (100).Upgrading a database with a compatibility level lower than the allowed level (for example, 90 which was the default in SQL Server 2005 (9.x)SQL Server 2005 (9.x)), sets the database to the lowest compatibility level allowed (100).

Para determinar o nível de compatibilidade atual, consulte a coluna compatibility_level de sys.databases.To determine the current compatibility level, query the compatibility_level column of sys.databases.

Níveis de compatibilidade e atualizações do Mecanismo de Banco de DadosCompatibility levels and Database Engine upgrades

Para atualizar o Mecanismo de Banco de DadosDatabase Engine para a versão mais recente, mantendo o nível de compatibilidade do banco de dados que existia antes da atualização e seu status de capacidade de suporte, é recomendável executar a validação de área de superfície funcional estática do código do aplicativo no banco de dados (objetos de capacidade de programação como procedimentos armazenados, funções, acionadores e outros) e no aplicativo (usando um rastreamento de carga de trabalho que captura o código dinâmico enviado pelo aplicativo) usando a ferramenta DMA (Assistente de Migração de Dados da Microsoft).To upgrade the Mecanismo de Banco de DadosDatabase Engine to the latest version, while maintaining the database compatibility level that existed before the upgrade and its supportability status, it is recommended to perform static functional surface area validation of the application code in the database (programmability objects such as stored procedures, functions, triggers, and others) and in the application (using a workload trace that captures the dynamic code sent by the application), by using the Microsoft Data Migration Assistant tool (DMA). A ausência de erros na saída da ferramenta AMD, sobre a funcionalidade ausente ou incompatível, protege o aplicativo de qualquer regressão funcional na nova versão de destino.The absence of errors in the DMA tool output, about missing or incompatible functionality, protects application from any functional regressions on the new target version. Para saber mais, confira Visão geral do Assistente de Migração de Dados.For more information, see Overview of Data Migration Assistant.

Observação

O AMD é compatível com o nível de compatibilidade do banco de dados de 100 ou mais.DMA supports database compatibility level 100 and above. SQL Server 2005 (9.x)SQL Server 2005 (9.x) como a versão de origem é excluído.as source version is excluded.

Importante

A MicrosoftMicrosoft recomenda que alguns testes mínimos sejam realizados para validar o sucesso de uma atualização, mantendo o nível de compatibilidade do banco de dados anterior.MicrosoftMicrosoft recommends that some minimal testing is done to validate the success of an upgrade, while maintaining the previous database compatibility level. Você deve determinar quais testes mínimos são importantes para seu próprio aplicativo e cenário.You should determine what minimal testing means for your own application and scenario.

Observação

A MicrosoftMicrosoft fornece proteção de forma do plano de consulta quando:MicrosoftMicrosoft provides query plan shape protection when:

  • A nova versão do SQL ServerSQL Server (destino) é executada no hardware que é comparável ao hardware em que a versão anterior do SQL ServerSQL Server (origem) estava em execução.The new SQL ServerSQL Server version (target) runs on hardware that is comparable to the hardware where the previous SQL ServerSQL Server version (source) was running.
  • O mesmo nível de compatibilidade do banco de dados compatível é usado no SQL ServerSQL Server de destino e no SQL ServerSQL Server de origem.The same supported database compatibility level is used both at the target SQL ServerSQL Server and source SQL ServerSQL Server.

Qualquer regressão de forma do plano de consulta (em comparação com o SQL ServerSQL Server de origem) que ocorre nas condições acima será tratada.Any query plan shape regression (as compared to the source SQL ServerSQL Server) that occurs in the above conditions will be addressed. Entre em contato com o atendimento ao cliente da Microsoft se esse for o caso.Please contact Microsoft Customer Support if this is the case.

Consulte TambémSee Also

ALTERAR NÍVEL DE COMPATIBILIDADE DO BANCO DE DADOS ALTER DATABASE COMPATIBILITY LEVEL
Exibir ou alterar o nível de compatibilidade de um banco de dados View or Change the Compatibility Level of a Database
Melhores práticas para atualizar o Nível de Compatibilidade do Banco de DadosBest Practices for upgrading Database Compatibility Level