Microsoft SQL Server Management Studio: cache is out of date

Es agosto, el software tambien necesita vacaciones…

Si durante las consultas a algunas tablas en MSSMS aparece el error «The Visual Studio componente cache is out of date» la solución rápida y sencilla pasa por vaciar la carpeta temporales de windows %TMP%

C:\Users\nombre_usuario_windows\AppData\Local\Temp\

Si además el servidor SQL esta en medio de la playa mientras tu sigues programando, puedes probar a seguir con la limpieza de más memorias intermedias, si utilizas Server 2016 o Azure puedes limpiar la cache de los procedimientos de la base de datos:

USE NombreDeMiBBDD;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

 

Mientras esperas que la consulta devuelva los valores esperados ;D

 

 

Cambiar compatibilidad en todas las bases de datos

Antes o después de ciertas migraciones podemos cambiar el nivel de compatibilidad SQL con el motor instalado. Si desconocemos la versión, podemos obtenerlas con la siguiente consulta:

SELECT SERVERPROPERTY('ProductVersion');  

Así como el nivel actual de las bases de datos:

SELECT name, compatibility_level FROM sys.databases;

Para realizar el cambio a todas, excepto las 4 primeras del sistema:

declare @nivel_compatible  varchar(max)
set     @nivel_compatible  = ''
select  @nivel_compatible = @ nivel_compatible +

from   sys.databases
where  database_id > 4 and compatibility_level not in ('100')
exec   (@ nivel_compatible)

En este ejemplo cambiaríamos el nivel de compatibilidad de las que no son 100 a 100, jugando con la clausula WHERE de la instrucción podemos realizar los cambios que necesitemos.

 

Fuente: Diferencias entre niveles de compatibilidad

Desinstalación manual de SQL Server

Si el método habitual de desinstalación desde el Panel de control resulta imposible, revisamos los registros del desinstalador y seguimos sin poder quitarlo… como último recurso podemos «extirpar»:

  1. Desinstalar todos los componentes desde el panel de control, los auxiliares que tiene que ver con SQL, todos los que podamos, aunque nos pregunte que existen dependencias…
  2. Realizar copia de seguridad del registro.
  3. Borrar las siguientes claves:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

  4. Borrar las referencias a SQL server dentro de la clave:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  5. Lo mismo para eliminar los servicios: browser, agente, instancias…
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  6. Renombra las carpetas de instalación:
    C:\Program Files\Microsoft SQL Server
 

Tamaño de Base de datos y log en SQL Server

Desde las bases de datos del sistema podemos extraer todo tipo de información, para localizar dentro de una BBDD de una instancia concreta de SQL podemos extraer con una consulta la información de los tamaños que ocupan:

with mf
as
(
    select database_id, type, size * 8.0 / 1024 size
    from sys.master_files
)
select 
    name, db.is_auto_shrink_on, 
    (select sum(size) from mf where type = 0 and mf.database_id = db.database_id) DatosMB,
    (select sum(size) from mf where type = 1 and mf.database_id = db.database_id) LogMB
from sys.databases db

Evento 17137 en bases de datos SQL Server

La configuración por defecto de una base dedatos en Microsoft SQL Server en sus diferentes versiones, permite descargar al servidor de la caché la propia base de datos cuando la propiedad «AUTO CLOSE» esta activada, se genera el evento:

«Event ID 17137 Source: MSSQL$NOMBREUSUARIO Starting up database ‘NombreDeLaBBDD'»

Es posible modificar el comportamiento desde SQL Management Studio, haciendo clic con el botón derecho sobre la base de datos, en Opciones indicar la propiedad «Auto Close» a False:

En las versiones SQL Express siempre aparece activado, en el resto desactivado, si el acceso es muy esporádico puede mantenerse en OFF
Listado de las BBDD con la propiedad activada:

SELECT name FROM master.sys.databases WHERE is_auto_close_on = 1

Cambiar mediante sentencia SQL:

ALTER DATABASE <NombreBBDD> SET AUTO_CLOSE OFF