SQL Server: Como mover la Tempdb paso a paso

En varias ocasiones hemos tenido la necesidad de mover nuestros archivos de la base de datos Tempdb a otra ubicación , por ejemplo si nos hemos quedado sin espacio, si la hemos alocado originalmente en un lugar inadecuado , etc.

En este post te muestro los pasos que debes seguir para mover tus archivos de Tempdb a otra unidad.

Paso 1: Conocer su ubicación actual y sus nombres

En este primer paso lo que haremos es buscar los nombres lógicos y su ubicación actual en nuestros discos , para ello ejecutaremos el siguiente script

SELECT NAME, PHYSICAL_NAME   
FROM SYS.MASTER_FILES  
WHERE DATABASE_ID = DB_ID(N'TEMPDB')

El cual arroja un resultado similar a la siguiente imagen

En este caso podemos ver que tenemos 8 archivos de data y 1 de log, todos están ubicados en el disco E:\mssql

Paso 2: Modificar la ubicación de los archivos

En este paso lo que haremos es modificar la ubicación del o los archivos que necesitamos mover a otra ubicación, para eso usaremos el siguiente script

USE MASTER;  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMPDEV, FILENAME = 'E:\SQLDATA\TEMPDB.MDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP2, FILENAME = 'E:\SQLDATA\TEMPDB2.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP3, FILENAME = 'E:\SQLDATA\TEMPDB3.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP4, FILENAME = 'E:\SQLDATA\TEMPDB4.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP5, FILENAME = 'E:\SQLDATA\TEMPDB5.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP6, FILENAME = 'E:\SQLDATA\TEMPDB6.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP7, FILENAME = 'E:\SQLDATA\TEMPDB7.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMP8, FILENAME = 'E:\SQLDATA\TEMPDB8.NDF');  
GO  
ALTER DATABASE TEMPDB   
MODIFY FILE (NAME = TEMPLOG, FILENAME = 'F:\SQLLOG\TEMPLOG.LDF');  
GO  

Paso 3: Reiniciar el servicio de SQL Server

Para que se apliquen los cambios debemos hacer un reinicio de los servicios de SQL Server, luego de hacer este paso tendremos nuestro cambio realizado con exito.

Paso 4: Verificamos el cambio

Para verificar luego del reinicio que el cambio se ha aplicado simplemente debemos volver a ejecutar el script del paso 1

SELECT NAME, PHYSICAL_NAME   
FROM SYS.MASTER_FILES  
WHERE DATABASE_ID = DB_ID(N'TEMPDB');

Workshop Herramientas SQL Server RML

Workshop Herramientas SQL Server RML

Las herramientas RML de Microsoft existen desde hace muchos años.

Las mismas son gratuitas y a los DBA o programadores les permiten entre otras cosas poder hacer pruebas de carga (estrés) o también analizar el resultado de un Trace o .XEL de performance.

En el siguiente link de github he creado un workshop en español paso a paso de como usar dos de estas herramientas (ReadTrace y Ostress)

SQL Assessment API (GA)

SQL Assessment API (GA)

Ya se encuentra liberado SQL Assessment API  el cual le permite a los DBA poder realizar un análisis de la configuración de la instancia y bases SQL Server para determinar si se cumple con las mejores prácticas.

La API es una extensión del ya conocido SQL Server Management Object (SMO) y es parte de SqlServer PowerShell module (21.1.18206) .

Para poder instalarla es necesario actualizar los módulos de Powershell
Install-Module -Name SqlServer -AllowClobber -Force
Luego para poder utilizar los distintos rules de instancia o base de datos se los puede llamar con el siguiente codigo de ejemplo 
Import-Module -Name SqlServer
Get-SqlInstance -ServerInstance 'localhost' | Invoke-SqlAssessment
Import-Module -Name SqlServer
Get-SqlDatabase -ServerInstance 'localhost' | Invoke-SqlAssessment
Una de las grandes ventajas que tiene es que por medio de archivos JSON se pueden extender las reglas y crear las propias. En el siguiente link de Github hay algunos ejemplos de extensiones. La API solo es compatible para SQL Server 2012 o superior y como todo codigo de Powershell se lo puede integrar a cosas mas complejas (por ejemplo que la salida se guarde en tablas SQL). Links de interes SQL Assessment API GitHub page SQL Assessment API Tutorial notebook SMO NuGet Package SqlServer PowerShell module 

SQL 2019 CTP 2.5 en Docker

En este articulo vamos a ver como probar SQL Server 2019 CTP 2.5 sobre Docker dektop para Windows 10

Instalando Docker

Lo primero que debemos hacer es instalar docker desktop, para ello simplemente debemos bajarlo del siguiente link y luego ejecutar el instalador.

Para comprobar el funcionamiento abrimos una consola de PowerShell o CMD en modo administrador y ejecutamos el siguiente comando.

PS C:\> DOCKER VERSION 

Configurar un disco compartido (shared disk)

Si bien este paso no es un requisito si es recomendable. Lo que haremos aquí es compartir un disco externo al contenedor para así poder tener persistencia de los datos fuera del contenedor, para leer sobre discos compartidos en docker podes acceder al siguiente link .

Para habilitar el shared disk desde docker desktop es bastante simple, como primer paso abrimos el docker desktop y vamos a discos compartidos, en mi caso compartí el disco E de mi SO.

Bajando la imagen de SQL 2019 CTP 2.5

Nuestro siguiente paso es bajar la imagen de SQL Server 2019 CTP 2.5, la misma tiene como base un Linux Ubuntu.

Para esta operación desde la consola de PS o CMD como administrador ejecutaremos el siguiente comando.

PS c:\> docker pull mcr.microsoft.com/mssql/server:2019-CTP2.5-ubuntu

Creando el container

En este paso vamos a crear un contenedor con la imagen que hemos descargado anteriormente, para ello ejecutaremos desde la consola el siguiente comando.

PS c:\> docker run -d -p 15790:1433 --env ACCEPT_EULA=Y 
        --env SA_PASSWORD=123@Passw0rd 
        -v e:\Docker\SQL:/sql --name sql2019ctp 
        mcr.microsoft.com/mssql/server:2019-CTP2.5-ubuntu

El comando creara un contenedor con la imagen de SQL 2019CTP2.5 donde se mapea el puerto 15790 del SO anfitrión contra el 1433 del contenedor. No es requisito cambiar el puerto pero en mi caso ya tengo instalado un SQL Server en mi windows 10 en el puerto 1433.

Con el parametro -V montamos la ruta e:\docker\sql para que nuestro container pueda tener acceso.

Nuestro siguiente paso es iniciar el contenedor, para ellos ejecutaremos el siguiente comando desde la consola.

PS c:\> docker start sql2019ctp

Conectándonos a la instancia de SQL Server

Ahora lo que vamos a hacer es usar una herramienta cliente (en mi caso el Management Studio V18) para podernos conectar a la instancia de SQL Server 2019 CTP 2.5 que esta en el contenedor en el puerto 15790

Como podemos observar en la imagen anterior vemos que la versión es la 15 correspondiente a SQL Server 2019. También probaremos el siguiente comando TSQL para tener mas información de la instancia MSSQL.

select @@version 

Restaurar una base de datos de ejemplo

Nuestro siguiente paso es hacer un restore de la base de datos de ejemplo WideWordl

Para ello lo que vamos a hacer es bajar el archivo .bak
WideWorldImporters-Full.bak y copiarlo en nuestro disco compartido del SO, en mi caso lo copiare en el disco E:\Docker\sql\bkp

Luego desde el SSMS conectado a la instancia haremos un simple restore de ese archivo, podemos hacer que los MDF , LDF y NDF se persistan dentro del container o bien hacerlo afuera, esto ultimo nos daría la ventaja de no perder luego esos archivos al borrar el container.

Aquí para acceder a nuestro recurso compartido simplemente ponemos /SQL el cual fue mapeado con la unidad cuando creamos el container y en donde tendremos nuestro archivo .bak a restaurar.

El siguiente código TSQL hace el restore de nuestra base

USE [master]
RESTORE DATABASE [WideWorldImporters] 
FROM  DISK = N'/sql/Bkp/WideWorldImporters-Full.bak' WITH  FILE = 1,  
MOVE N'WWI_Primary' TO N'/var/opt/mssql/data/WideWorldImporters.mdf',  
MOVE N'WWI_UserData' TO N'/var/opt/mssql/data/WideWorldImporters_UserData.ndf',  
MOVE N'WWI_Log' TO N'/var/opt/mssql/data/WideWorldImporters.ldf',  
MOVE N'WWI_InMemory_Data_1' TO N'/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1',  
NOUNLOAD,  STATS = 5
GO

Ahora lo que haremos con la base restaurada en nuestro container con SQL 2019 es cambiarle el modo de compatibilidad a 150.

Conclusiones

En este post no solo hemos visto como podemos probar la versión beta de SQL Server 2019 sino que también como montarla en un container de docker

SSMS v18 GA

Se ha liberado la versión 18 de SQL Server Management Studio la cual contiene muchas novedades comparada con su versión anterior.

Entre las distintas novedades podemos destacar:

  • Soporte para SQL Server 2019 (Compatibilidad 150)
  • Integración con Azure data Studio
  • Database Upgrade compatibility level
  • Soporte de SQL Managed Instance
  • Varias mejoras en el editor
  • Arreglos de varios Fix
  • Menor tamaño de instalador
  • Instalación en una custom path
  • No hay más componentes ligados al Engine
  • Un solo instalador múltiple idioma

Desde el siguiente link puede descargar la versión final de SSMS V18