Cambiar nivel de compatibilidad SQL Server de 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

 

Actualizar modelo .edmx con los cambios de la base de datos

La realización de cambios en la base de datos debe reflejarse dentro del modelo generado en Visual Studio. Desde un cambio mínimo, por ejemplo un campo de una tabla determinada pasa a admitir valores nulos, a cualquier otro complejo de adición/modificación/eliminación de tablas, referencias, triggers, procedimientos, relaciones...

1.- Abrimos nuestro archivo edmx con el editor predeterminado de Visual Studio: ADO.NET Entity Data Model Designer y pulsamos con el botón derecho sobre una zona libre en la opción "Udate Model from Database"

2.- Una vez que tenemos nuestro modelo reflejado, actualizamos el fichero con extension "IntranetModel.TT" pulsando con el botón derecho sobre ellos y seleccionado "Run custom tool"

3.- Lanzamos "Run custom tool" sobre el fichero "IntranetModel.context.TT"

En el caso de haber cambiado el namespace o el nombre del proyecto, deberemos renombrarlos de nuevo en el archivo CS correspondiente del context de la clase. Tambien es posible realizar cambios parciales en partes concretar del modelado desde "Model browser".

NOTA: Si a pesar de ello, no se reflejan los cambios, podemos eliminar ambos ficheros y volver a añadir "Add code generation item" seleccionando la versión correspondiente de "EF 6.x DbContext Generator"

Ficheros bak no aparecen en SQL Server

Al trasladar copias de seguridad de SQL Server e intentar restaurarlas desde una ubicación diferente a la predeterminada, desde el explorador de Management Studio (SMSS) aunque sepamos que dentro de una carpeta concreta están los ficheros pueden no aparecer, si no están asignados los permisos; deberemos asignar permisos de lectura por lo menos sobre el usuario "NT SERVICE\MSSQLSERVER" del equipo local donde se ejecuta la instancia (por defecto)

Cuenta con la que se ejecuta el servicio:


Asignación de permisos a la carpeta donde se encuentran las copias de seguridad: