Compartir a través de


Certificación de compatibilidad

Se aplica a:SQL ServerBase de datos de Azure SQLAzure SQL Managed Instance

La certificación de compatibilidad permite que las empresas actualicen y modernicen una base de datos de SQL Server en el entorno local, en la nube y en el perímetro, lo cual elimina los riesgos relativos a la compatibilidad de las aplicaciones.

El mismo Motor de base de datos activa SQL Server y Azure SQL Database, incluido Azure SQL Managed Instance. Este recurso compartido del motor de base de datos significa que una base de datos de usuario puede moverse sin problemas entre SQL Server en el entorno local y Azure SQL Database, mientras que el código de aplicación que se ejecuta en la base de datos como Transact-SQL sigue funcionando como en su sistema de origen.

En cada versión nueva de SQL Server, el nivel de compatibilidad predeterminado se establece en la versión de Motor de base de datos. Sin embargo, el nivel de compatibilidad de las versiones anteriores se conserva para mantener la compatibilidad continua de las aplicaciones existentes. Esta matriz de compatibilidad se puede ver aquí. Por lo tanto, una aplicación que estuviera certificada para trabajar con una versión determinada de SQL Server en realidad estaba certificada para funcionar en el nivel de compatibilidad predeterminado de esa versión.

Por ejemplo, el nivel de compatibilidad de la base de datos 130 era el valor predeterminado en SQL Server 2016 (13.x). Dado que los niveles de compatibilidad fuerzan determinados comportamientos funcionales y de optimización de consultas de Transact-SQL, una base de datos certificada para funcionar en SQL Server 2016 (13.x) se ha certificado implícitamente en el nivel de compatibilidad 130 de la base de datos. Esta base de datos puede funcionar tal cual en una versión más reciente de SQL Server (como SQL Server 2019 (15.x)) y Azure SQL Database, siempre que el nivel de compatibilidad de la base de datos se mantenga en 130.

Este es un principio fundamental para el modelo de operación de integración continua de Microsoft Azure SQL Database. El Motor de base de datos se mejora y actualiza continuamente en Azure, pero dado que las bases de datos existentes mantienen su nivel de compatibilidad actual, estas continúan funcionando como se han diseñado incluso después de las actualizaciones al Motor de base de datossubyacente.

Así también se certifica SharePoint Server 2016 y SharePoint Server 2019 en SQL Server y Azure SQL Managed Instance. Puede implementar cualquier motor de base de datos de SQL Server que use los niveles de compatibilidad de base de datos admitidos para esas versiones de SharePoint Server. Para más información, consulte Requisitos de hardware y software para SharePoint Server 2016 y Requisitos de hardware y software para SharePoint Server 2019.

Administración del riesgo de actualización con la certificación de compatibilidad

El uso de la certificación de compatibilidad es un enfoque valioso para la modernización de las bases de datos. Cuando los desarrolladores certifican en función del nivel de compatibilidad, establecen los requisitos técnicos de una aplicación que se admiten en SQL Server y Azure SQL Database, pero desacoplan el ciclo de vida de la aplicación del ciclo de vida de la plataforma de la base de datos. Esto permite a las empresas mantener el Motor de base de datos de SQL Server actualizado según sea necesario de acuerdo con las directivas del ciclo de vida, usando las nuevas mejoras de escalabilidad y rendimiento que no dependen del código y conectando aplicaciones para mantener su estado funcional a través de actualizaciones.

Los principales factores de riesgo para cualquier actualización son la posibilidad de afectar negativamente a la funcionalidad y a los problemas de rendimiento. La certificación de compatibilidad representa una tranquilidad en cuanto a la administración de estos riesgos de actualización:

  • En lo que se refiere al comportamiento de Transact-SQL, cualquier cambio significa que una aplicación debe volver a certificarse para que sea correcta. Sin embargo, la configuración del nivel de compatibilidad de la base de datos proporciona compatibilidad con versiones anteriores de SQL Server solo para la base de datos especificada, no para todo el servidor. Mantener el nivel de compatibilidad de la base de datos tal y como está garantiza que las consultas de las aplicaciones existentes sigan mostrando el mismo comportamiento antes y después de una actualización del motor de base de datos. Para obtener más información sobre los niveles de compatibilidad y comportamiento de Transact-SQL, consulte Uso del nivel de compatibilidad para la compatibilidad con versiones anteriores.

  • En lo que se refiere al rendimiento, dado que las mejoras en el optimizador de consultas se introducen con cada versión, se podrían esperar diferencias en los planes de consulta entre distintas versiones de Motor de base de datos. Las diferencias del plan de consulta en el ámbito de una actualización normalmente se traducen en riesgo, cuando hay posibilidades de que algunos cambios puedan ser perjudiciales para una determinada consulta o carga de trabajo. A su vez, este riesgo es el que suele impulsar la necesidad de recertificación de las aplicaciones, que puede retrasar las actualizaciones y plantear problemas relativos al ciclo de vida y el soporte técnico.

    La mitigación de los riesgos de actualización es el motivo por el que las mejoras del optimizador de consultas se canalizan en el nivel de compatibilidad predeterminado de una nueva versión (en otras palabras, el nivel de compatibilidad más elevado disponible para cualquier versión nueva). La certificación de compatibilidad incluye la protección de formas del plan de consulta: la noción de mantener un nivel de compatibilidad de base de datos as-is, inmediatamente después de una actualización del motor de base de datos, se traduce en el uso del mismo modelo de optimización de consultas en la nueva versión que antes de la actualización y la forma del plan de consulta no debe cambiar.

    Para obtener más información, consulte la sección ¿Por qué es necesaria la forma del plan de consulta? de este artículo.

Para obtener más información sobre los niveles de compatibilidad, consulte Usar el nivel de compatibilidad para la compatibilidad con versiones anteriores.

Para una aplicación existente que ya estaba certificada para un nivel de compatibilidad determinado, actualice el Motor de base de datos de SQL Server y mantenga el nivel de compatibilidad de base de datos anterior. No es necesario volver a certificar una aplicación en este escenario. Para obtener más información, consulte Actualizaciones del motor de base de datos y niveles de compatibilidad, más adelante en este artículo.

Para el nuevo trabajo de desarrollo, o cuando una aplicación existente requiere el uso de nuevas características, como el procesamiento de consultas inteligentes, y algunas nuevas transact-SQL, planee actualizar el nivel de compatibilidad de la base de datos a la versión más reciente disponible en SQL Server y vuelva a certificar la aplicación para que funcione con ese nivel de compatibilidad. Para obtener más información sobre cómo actualizar el nivel de compatibilidad de base de datos, consulte Prácticas recomendadas para actualizar el nivel de compatibilidad de base de datos.

¿Por qué es necesaria la forma del plan de consulta?

La forma del plan de consulta hace referencia a la representación visual de los distintos operadores que componen un plan de consulta. Esto incluye operadores como búsquedas, exámenes, combinaciones y ordenaciones, así como las conexiones entre ellos que indican el flujo de datos y el orden de las operaciones que se deben ejecutar para conseguir el conjunto de resultados previsto. El optimizador de consultas determina la forma del plan de consulta.

Para que el rendimiento de las consultas sea predecible durante una actualización, uno de los objetivos fundamentales es asegurarse de que se usa la misma forma del plan de consulta. Esto se puede lograr si no se cambia el nivel de compatibilidad de la base de datos inmediatamente después de una actualización, aunque el Motor de base de datos subyacente tenga versiones diferentes. Si no ha cambiado nada en el ecosistema de ejecución de consultas, como cambios significativos en los recursos disponibles o la distribución de datos en los datos subyacentes, el rendimiento de una consulta debe ser inalterable.

Sin embargo, mantener la forma de un plan de consulta no es el único factor que podría tener implicaciones de rendimiento después de una actualización. Si mueve la base de datos a un motor de base de datos más reciente y también realiza cambios en el entorno, podría introducir factores que tengan un efecto inmediato en el rendimiento de una consulta, incluso si el plan de consulta conserva la misma forma entre versiones. Estos cambios de entorno pueden incluir el nuevo motor de base de datos que tiene más o menos memoria y recursos de CPU disponibles, cambios en las opciones de configuración del servidor o de la base de datos, o cambios en la distribución de datos que afectan a cómo se crea un plan de consulta. Esta es la razón por la que es importante comprender que mantener el nivel de compatibilidad de la base de datos protege frente a los cambios en la forma del plan de consulta, pero no ofrece protección contra otros aspectos ambientales que influyen en el rendimiento de las consultas, algunos de los cuales son cambios que el usuario inicia.

Para más información, vea la Guía de arquitectura de procesamiento de consulta.

Ventajas de la certificación de compatibilidad

El uso de la certificación de bases de datos como enfoque basado en la compatibilidad, en lugar de un enfoque de versión con nombre, ofrece varias ventajas inmediatas:

  • Desacople la certificación de la aplicación de la plataforma. Debido a su recurso compartido del motor de base de datos, en el caso de las aplicaciones que solo necesitan ejecutar consultas de Transact-SQL, no es necesario mantener procesos de certificación independientes para Azure y el entorno local.

  • Reduzca los riesgos de las actualizaciones, ya que, durante la modernización de la plataforma de las bases de datos, los ciclos de actualización del nivel de plataforma de las bases datos y la aplicación pueden separarse con menos interrupciones y una administración de cambios mejorada.

  • Realice actualizaciones sin cambios en el código. La actualización a una nueva versión de SQL Server o Azure SQL Database puede realizarse sin cambios en el código, manteniendo el mismo nivel de compatibilidad que el sistema de origen y sin la necesidad inmediata de volver a realizar la certificación hasta que la aplicación necesite usar las mejoras que solo estén disponibles en un nivel de compatibilidad superior de la base de datos.

  • Mejore la capacidad de administración y escalabilidad sin necesidad de realizar cambios en la aplicación, con mejoras que no se canalicen mediante el nivel de compatibilidad de la base de datos. En SQL Server se incluyen, por ejemplo:

Las nuevas bases de datos todavía se establecen en el nivel de compatibilidad predeterminado de la versión de Motor de base de datos. Sin embargo, cuando se restaura o adjunta una base de datos de una versión anterior de SQL Server a una nueva versión de SQL Server o Azure SQL Database, la base de datos mantiene su nivel de compatibilidad existente.

Comprobación del nivel de compatibilidad admitido

Antes de mover una base de datos a una nueva versión de SQL Server o Azure SQL Database, compruebe si todavía se admite el nivel de compatibilidad de la base de datos. La matriz de soporte del nivel de compatibilidad de la base de datos se puede ver en los argumentos de nivel de compatibilidad de ALTER DATABASE.

Actualizar una base de datos con un nivel de compatibilidad inferior al nivel permitido (por ejemplo, 90, que era el valor predeterminado en SQL Server 2005 (9.x)) hace que la base de datos se establezca automáticamente en el nivel de compatibilidad más bajo permitido (100).

Para determinar el nivel de compatibilidad actual, consulte la compatibility_level columna en sys.databases.

Actualizaciones del motor de base de datos y niveles de compatibilidad

Para actualizar el motor de base de datos a la versión más reciente, al tiempo que mantiene el nivel de compatibilidad de la base de datos que existía antes de la actualización y su estado de compatibilidad, debe realizar la validación de área expuesta funcional estática del código de la aplicación en la base de datos (objetos de programación, como procedimientos almacenados, funciones, desencadenadores y otros) y en la aplicación (mediante un seguimiento de carga de trabajo que captura el código dinámico enviado por la aplicación).

Esto se puede hacer fácilmente mediante el componente de migración de SQL Server en SQL Server Management Studio. La ausencia de errores en el resultado del informe, sobre funcionalidades faltantes o incompatibles, protege a la aplicación de cualquier regresión funcional en la nueva versión de destino. Si se requieren cambios para asegurarse de que la base de datos funcionará en la nueva versión, la herramienta le permite identificar dónde se necesitan los cambios y qué soluciones alternativas están disponibles.

Esta validación funcional es especialmente importante al mover una base de datos de una versión heredada (como SQL Server 2008 R2 (10.50.x) o SQL Server 2012 (11.x)) a una nueva versión de SQL Server o Azure SQL Database, ya que el código de la aplicación podría estar usando Transact-SQL que no están protegidos por el nivel de compatibilidad de base de datos. Pero al pasar de una versión más reciente (como SQL Server 2016 (13.x)) a SQL Server 2022 (16.x) o Azure SQL Database, no hay que preocuparse por ningunos Transact-SQL descontinuados. Para obtener más información sobre las instancias de Transact-SQL descontinuadas, consulte Uso del nivel de compatibilidad para la compatibilidad con versiones anteriores.

Nota

El componente de migración de SQL Server admite el nivel de compatibilidad de base de datos 100 y versiones posteriores. Queda excluido SQL Server 2005 (9.x) como versión de origen.

Se recomienda realizar algunas pruebas mínimas para validar el éxito de una actualización, al tiempo que mantiene el nivel de compatibilidad de la base de datos anterior. Debe determinar qué comprenderían estas pruebas mínimas para su aplicación y su escenario.

Protección del plan de consulta

Microsoft ofrece protección de formas de los planes de consulta cuando:

  • La nueva versión de SQL Server (destino) se ejecuta en un hardware comparable al hardware en el que se ejecutaba la versión de SQL Server anterior (origen).

  • El mismo nivel de compatibilidad de base de datos compatible se usa tanto en SQL Server de destino como en SQL Server de origen.

  • La misma base de datos y carga de trabajo se usa tanto en SQL Server de destino como en el servidor SQL Server de origen.

Se abordará cualquier cambio regresivo en la estructura del plan de consulta (en comparación con el SQL Server original) que se produzca en estas condiciones. Póngase en contacto con el soporte técnico al cliente de Microsoft en este caso.