En muchas ocasiones me encuentro en distintas empresas que tienen su SQL Server 2005 o 2008 y me dicen que sus sistemas son compatibles con estas versiones de SQL ya que esta corriendo sus bases sobre el.
Pero en una gran parte de estos casos la cosa no es tan así como indican, que una base este sobre SQL Server 2005 o 2008 no quiere decir que sea compatible y este usando el poder de estos motores.
Como es esto? simple: se puede tener una base de datos con compatibilidad hacia atrás, o sea puedo tener una base de datos en un 2005 con compatibilidad 80 lo cual significa que la base es un 2000 no usando las features de 2005, en otras palabra no es compatible con 2005
Para lo cual es muy importante saber la compatibilidad de nuestras bases de datos, si es menor que 90 nos indica que no es ni 2005 ni 2008 compatible.
En el siguiente listado les muestro los distintos modos de compatibilidad y a que versión corresponden
| Compatibilidad |
Versión de SQL |
| 65 |
6.5 |
| 70 |
7.0 |
| 80 |
2000 |
| 90 |
2005 |
| 100 |
2008 |
Ahora bien, como saber en nuestro SQL que bases de datos no están siendo compatibles con la versión por mas que estén sobre ella ya que tienen una compatibilidad inferior.
La opción mas simple es ir al Management Studio o al Enterprise Manager y ver las opciones de cada base de datos en la sección options y la propiedad “Compatibility Level”
También podemos hacer esto por medio de un simple query donde nos indicara que bases de datos no están en el modo de compatibilidad adecuado, para ello yo utilizo el siguiente código
1: declare @modo smallint
2:
3: select @modo =
4: convert(smallint,replace(CONVERT(varchar(2),
5: SERVERPROPERTY('Productversion')),'.','')) * 10
6:
7: select name,cmptlevel from master..sysdatabases
8: where cmptlevel < @modo