Nivel de compatibilidad de Base de datos

Nivel de compatibilidad de Bases de datos

El nivel de compatibilidad de las bases de datos en SQL Server permite definir la versión en la que se ha creado la base de datos o en la que se desea o debe mantenerse.
El nivel de compatibilidad de la base de datos está definido por defecto en cada versión, la tabla siguiente resume los niveles de compatibilidad para cada versión. 

Producto Versión del Motor de base de datos Nivel de Compatibilidad Niveles de Compatibilidad soportados
SQL Server 2017 14 140 140, 130, 120, 110, 100
Azure SQL Database 12 130 140, 130, 120, 110, 100
SQL Server 2016 13 130 130, 120, 110, 100
SQL Server 2014 12 120 120, 110, 100
SQL Server 2012 11 110 110, 100, 90
SQL Server 2008 R2 10.5 100 100, 90, 80
SQL Server 2008 10 100 100, 90, 80
SQL Server 2005 9 90 90, 80
SQL Server 2000 8 80 80



Cambiar el nivel de compatibilidad por defecto

Al crear una base de datos el nivel de compatibilidad de esta se crea de acuerdo a la versión de SQL Server, por ejemplo, para SQL Server 2014, al crear una base de datos sin haber hecho cambios, el nivel de compatibilidad de la base de datos nueva será de 120.

Ejemplo

Create database PruebaCompatibilidad
go

Al visualizar las propiedades de la base de datos, al seleccionar la página Opciones se muestra el nivel de compatibilidad de 120.

Usando T-SQL la instrucción es como sigue: (Ver Filtros en Select)

select name As ‘Base de datos’, compatibility_level As ‘Nivel de compatibilidad’ from sys.databases
where name like ‘P%’
go

Para cambiar el nivel de compatibilidad de las bases de datos por defecto, diferente al nivel de compatibilidad definido en la versión de SQL Server, se debe cambiar el nivel de compatibilidad a la base de datos del sistema MODEL.

Por ejemplo, en SQL Server 2014, cuyo nivel de compatibilidad es 120, al cambiar el nivel de compatibilidad de Model, todas las nuevas bases de datos creadas con Create Database  (Ver Crear Bases de datos), toman el nivel definido en model. (Ver bases de datos del sistema)

use master
go
Alter database model set compatibility_level = 100
go

Al crear otra base de datos, tomará el nivel de compatibilidad de 100, siendo el nivel por defecto de SQL Server 2014 de 120.

Create database PruebaNueva
go

Ver las opciones en la página de propiedades

Esto puede ser útil cuando se tienen instancias de SQL Server de versiones en desarrollo que no tienen los clientes en Producción, es decir, la empresa desarrolladora tiene SQL Server 2014 cuya versión tiene un nivel de compatibilidad de 120, pero el cliente tiene SQL Server 2008, con un nivel de compatibilidad de 100. Se recomienda instancias de la misma versión con diferentes niveles de compatibilidad.

Cambiar el nivel de compatibilidad de una base de datos

Esto es necesario para tener en cuenta puestas en producción bases de datos que han sido trabajadas en desarrollo con un nivel de compatibilidad diferente, no se recomienda hacer este trabajo ya que de acuerdo al nivel de compatibilidad hay ciertas funcionalidades que cambian.

Instrucción: Alter Database (Ver Modificar una base de datos con Grupos de archivos y archivos de base de datos)

Permite modificar una base de datos, una de las opciones es cambiar el nivel de compatibilidad.

Sintaxis:
Alter database NombreBaseDatos set compatibility_level = Valor

El valor del nivel de compatibilidad se encuentra en la tabla de la parte superior de este artículo.

Ejemplos

Cambiar el nivel de compatibilidad de AdventureWorks de SQL Server 2014 para que sea restaurada en SQL Server en SQL Server 2008, es decir, al nivel 100.

Alter database AdventureWorks set compatibility_level = 100
go

Ver el nivel de compatibilidad

select name As ‘Base de datos’, compatibility_level As ‘Nivel de compatibilidad’ from sys.databases
where name like ‘A%’
go

De esta forma es posible hacer una backup de AdventureWorks desde SQL Server 2014 y restaurarlo en SQL Server 2008.

Importante

  • Revise la documentación Microsoft de las funcionalidades de acuerdo a la versión de SQL Server.
  • Para poder realizar esta operación se debe tener el permite de Alter en la base de datos (Ver permisos Grant)

El procedimiento sp_dbcmptlevel

Este procedimiento permite cambiar el nivel de compatibilidad de una base de datos

Sintaxis:
sp_dbcmptlevel ‘NombreBaseDatos’, ValorCompatibilidad

Ejemplo

Para cambiar el nivel de compatibilidad a 110 en la base de datos Norhtwind

Execute sp_dbcmptlevel ‘Northwind’,110
go