Estimados, desde hace algún tiempo estoy sumergido en el proceso de migración de Sql Server 200 a 2005, ya que al subir una base a un motor 2005 perdía rendimiento. Aquí me dijeron que debía cambiar el nivel de compatibilidad, actualizar estadisticas, etc.
Quiero hacer mención al nivel de compatibilidad. Me di cuenta que el nivel de compatibilidad de mi base era 80 (Es decir sql server 2000) y debía estar en 90 (sql server 2005)
Revisé en el BOL sobre el tema y llegué al procedimiento sp_dbcmptlevel con el cual cambiamos a 60, 70, 80, 90 el nivel de compatibilidad.
En el link se muestra una lista de las diferencias de compabilidad entre 80 y 90 por ejemplo:
En 80: Los operadores de combinación externa *= e =* se admiten con un mensaje de advertencia.
En 90: Estos operadores no se admiten; debe utilizarse la palabra clave OUTER JOIN.
Lo que entiendo por esto es que hay que tener cuidado con los cambios en las versiones, ya que un procedimiento almacenado que contenga un select con *= en compatibilidad 80 me va a funcionar pero en compatibilidad 90 me va a dar error.
En todo caso hay que tener en cuenta el nivel de compatibilidad por la programación que hacemos ya que con si tenemos una aplicación desarrollada bajo SQL Server 2000 y luego la subimos a SQL Server 2005, con el solo hecho de a la base cambiarle compatibilidad 80 a 90 podemos tener errores, está claro.
Ahora, en que me puede afectar esto al rendimiento?
Lo pregunto porque de buenas a primeras no le puedo decir al departamento de desarrollo que cambie el nivel de compatibilidad a 90 ya que la aplicación en producción se me puede caer si en algún procedimiento almacenado hay algún código que no funcione igual en compatibilidad 80 y 90. Y revisar todo el código para poder darle el visto bueno para cambiarnos a compatibilidad 90 es un proceso algo largo.