Como hacer copia de seguridad (.bak) de SQL Server a una unidad externa

En este articulo de forma breve explico los pasos a seguir para poder configurar una unidad externa de red para las copias de seguridad de SQL Server.

Para realizar los pasos necesitamos acceso a la red, tener permisos para modificar fichero hosts del ordenador y poder ejecutar consultas contra base de datos mater en SQL Server. En este pequeño manual no tenemos en cuenta tema de permisos como firewall, estructuras de redes complicadas, proxy, etc.

  1. En fichero hosts tenemos que añadir el IP de la maquina con su nombre. Por ejemplo para IP 192.168.1.2 el nombre de la maquina es “servidor-backups”, asi que en fichero de hosts debe haber una linea “192.168.1.2 servidor-backups #comentario”.
  2. En Microsoft SQL Server Management Studio creamos un nuevo script con “New Query” y creamos un script para habilitar funcionalidad de adjuntar unidad de red:

    — Para habilitar opciones avanzadas.
    EXEC sp_configure ‘show advanced options’, 1;
    GO
    — Para aplicar los cambios a configuración actual
    RECONFIGURE;
    GO
    — Para habilitar funcionalidad
    EXEC sp_configure ‘xp_cmdshell’, 1;
    GO
    — Para aplicar los cambios a configuración actual
    RECONFIGURE;
    GO

  3. Ejecutar funcion que asigna una unidad nueva a una ruta de red:

    EXEC XP_CMDSHELL ‘net use Z: \\freser\bd_sitel /user:usuarioCopias contraseñaUsuario’

En cambio si queremos quitar una unidad de red hay que ejecutar el comando: EXEC XP_CMDSHELL ‘net use Z: /delete’

En caso que vamos a querer comprobar si unidad funciona o no, ejecutar el comando:
EXEC XP_CMDSHELL ‘Dir Z:’

Como eliminar estadisticas de consultas pesadas SQL Server + Recent Expensive Queries

Se describe como vaciar de forma instantanea lo que tenemos en el listado de consultas pesadas. De esta manera es mas facil buscar nuevas consultas.

Para ver consultas pesadas:
1. Click derecho sobre el servidor dentro del SSMS
2. Elegir menu Activity monitor
3. Desplegar la pestaña horizontal “Recent Expensive Queries”

Para eliminar historico de estas consultas:
Ejecutar una consulta con siguiente codigo:

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS


Análisis de rendimiento en consultas MS Sql Server

Pequeño script para analizar rendimiento de consultas

SELECT [Metodo],Max([Tiempo]),SUM([Tiempo]), Count(*)
  FROM [MiDb].[dbo].[optimizacion]
  Group by [Metodo]
  Having Max([Tiempo]) > 0 and SUM([Tiempo]) > Max([Tiempo])
  order by Max([Tiempo]) desc;

SELECT [Metodo],Count(*)
  FROM [MiDb].[dbo].[optimizacion]
  group by [Metodo]
  having Count(*)>1
  order by Count(*) desc;

-- CacheData.IncidenciaGetAll Corregir cache
-- Especifico
SELECT * FROM [MiDb].[dbo].[optimizacion]
where [Metodo] = 'CacheData.IncidenciaGetAll';

Formato JSON en respuestas SQL Server >= 2016

Se puede forzar a una base de datos normal, que devuelve datos en formato JSON. Para ello se necesita realizar modificaciones en la consulta.

Basicamente es instrucción “FOR JSON“, gracias a la cual SQL Server devuelve datos y les da formato JSON a los resultados de consulta.

Por ejemplo:

SELECT campo1, campo2 FROM tabla1 FOR JSON AUTO;

SELECT TOP (10) [TagId]
      ,[ValueBool]
      ,[ValueInt]
      ,[ValueFloat]
      ,[ValueStr]
      ,[ValueEnumId]
      ,[SourceTimestamp]
      ,[UpdateTimestamp]
      ,[QualityId]
      ,[QualityDetailId]
      ,[QualitySourceId]
  FROM [DBEjemplo].[System].[TagValues]
  FOR JSON AUTO, INCLUDE_NULL_VALUES