Instalación Microsoft SQL Server 2017 desatendida

17 octubre 2017
Josep Ma Solanes 0

Dando continuación a la entrada de instalación de Microsoft SQL Server 2017, esta vez se realiza una instalación Microsoft SQL Server 2017 desatendida  sobre un servidor Microsoft Windows Server 2016 en la edición CORE. Aunque se haga en esta edición de Windows Server, el proceso también sirve para la edición Desktop.

Para los que ya habéis leído la entrada sobre la instalación de Microsoft SQL Server 2017 en Windows Server 2016 os podéis saltar la parte de requisitos ya que es lo mismo, sin embargo, la configuración la realizamos desde la consola en lugar del entorno gráfico.

 

Requisitos para la instalación Microsoft SQL Server 2017 en Windows Server core

Para esta entrada utilizaré un Microsoft Windows Server 2016 en la edición CORE. Aparte de la instalación básica del propio servidor, debéis tener en cuenta la configuración especial de discos por el SQL Server. Sobre todo para los entornos de producción. En la instalación básica utilizaremos cuatro:

  • Volumen para la aplicación y instancia principal de la base de datos.
  • Volumen para las bases de datos de usuario
  • Volumen para las transacciones (logs) de las bases de datos
  • Volumen para las bases de datos y archivos de transacciones de la base de datos TempDB

En el momento de inicializar los discos, aseguraos que utilizáis el formato de partición GPT en todos ellos.

 

Desde la consola, arrancar la herramienta de gestión de discos diskpart, escribiendo el comando:

diskpart

Localizamos los discos que tenemos reconocidos por el sistema:

list disk

Perfecto, se visualizan los cuatro discos a punto para dar formato. Fijaos que están sin conexión.

Empezamos la configuración de los discos por el de aplicaciones. Sistema de archivos NTFS asignado a la unidad E y con la unidad de asignación por defecto.

Seleccionar el primer disco:

Select disk 1

Se pone en línea:

online disk

Borrar su posible contenido en cuanto a configuraciones y particiones:

clean

Eliminar el bloqueo contra escritura:

attribute disk clear readonly

Convertirlo a GPT:

convert gpt

Crear la primera partición primaria con todo el espacio de disco:

create partition primary

Listar los volúmenes que contiene el sistema, debe aparecer el nuevo volumen en crudo (RAW):

list volume

Seleccionar el nuevo volumen (que está en crudo – RAW):

select volume 3

Formatear el volumen con sistema de archivos NTFS y unidad de asignación por defecto, además, le añadimos la etiqueta SQLApps para que nos sea más fácil reconocerlo:

format fs=NTFS label="SQLApps" quick

Asignar la letra de unidad que le corresponda, en mi caso la E:

assign letter=e

Listar los volúmenes para comprobar que todo está correcto:

list volume

Repetir el proceso para el volumen de base de datos, pero esta vez con tipo de sistema de archivos ReFS, unidad de asignación de 64K y unidad de disco K. Ejecuto los list para ir comprobando la creación de los diferentes elementos y poder asegurar que lo que se selecciona es lo correcto:

list disk
select disk 2
online disk
clean
attribute disk clear readonly
convert gpt
create partition primary
list volume
select volume 4
format fs=ReFS unit=64k label="SQLdb" quick
assign letter=K
list volume

Repetir el proceso para el volumen de logs, igual que el anterior, pero con unidad de disco L:

list disk
select disk 3
online disk
clean
attribute disk clear readonly
convert gpt
create partition primary
list volume
select volume 5
format fs=ReFS unit=64k label="SQLlogs" quick
assign letter=L
list volume

Finalmente, creación del volumen para la base de datos TempDB, igual que el anterior, pero con unidad de disco T:

list disk
select disk 4
online disk
clean
attribute disk clear readonly
convert gpt
create partition primary
list volume
select volume 6
format fs=ReFS unit=64k label="SQLTempDB" quick
assign letter=T
list volume

Con los volúmenes creados, ya se puede salir del diskpart con un:

exit

 

Instalación de Microsoft SQL Server 2017 desatendida

Para la instalación Microsoft SQL Server 2017 desatendida en un servidor Windows Server 2016 edición core, se puede hacer desde la línea de comandos añadiendo los parámetros uno a uno o bien utilizar un archivo de configuración. Yo prefiero el archivo de configuración que es más rápido de reproducir y gestionar. Por lo tanto, procedemos primero a crear el archivo con extensión .INI en el bloc de notas, o cualquier otro editor de texto de comandos, con todos los parámetros necesarios para la instalación de Microsoft SQL Server 2017.

El primer comando que indicaremos es [OPTIONS] y a continuación iremos poniendo las diferentes variables de configuración del SQL Server

[OPTIONS]

Vamos sumando los parámetros de instalación. Lo primero es el método, instalación o actualización. Indicar Instalación

ACTION="Install"

Gestión de los términos de la licencia, naturalmente los aceptamos:

IACCEPTPYTHONLICENSETERMS = "True"
IACCEPTROPENLICENSETERMS = "True"

Como que no disponemos de entorno gráfico, aseguramos que no aparezcan los cuadros de diálogo, pero si las ventanas con las barras de progreso para hacer un seguimiento visual. Sin embargo, se podría obviar:

SUPPRESSPRIVACYSTATEMENTNOTICE="True"
QUIET="False"
QUIETSIMPLE="True"
HELP="False"
INDICATEPROGRESS="False"

Localización de la instalación, dejémoslo en Inglés para evitar problemas de idioma:

ENU="True"

Posibilidad de realizar las típicas actualizaciones durante el proceso de instalación. Lo dejo configurado para que se hagan las actualizaciones descargando directamente desde Internet del Microsoft Update (parámetro UpdateSource MU). En caso que las actualizaciones se tuvieran descargadas en una carpeta local, en lugar del MU se indica la ruta de esta carpeta

UpdateEnabled="True"
UpdateSource="MU"
USEMICROSOFTUPDATE="False"

¿Que se debe instalar? Sólo el motor de base de datos (SQLENGINE), en directorio WOW64 (x64).

Los valores válidos sobre un Windows Server core de las FEATURES a instalar son

Servicio de SQL Server Valor
Motor de base de datos SQLEngine
Sistema de réplicas Replication
Búsqueda a texto completo FullText
Analysis Services AS
Integration Services IS
Herramientas de conectividad Conn
FEATURES=SQLENGINE,Replication,FullText,Conn
X86="False"

Empiezan los parámetros de personalización del servidor Microsoft SQL Server 2017:

Nombre de la instancia:

INSTANCENAME="MSSQLSERVER"

Ubicación de los directorios compartidos y instancia afectada por la instalación (como que sólo tenemos una, la seleccionamos, es la que se ha indicado en el punto anterior).

INSTALLSHAREDDIR="E:\Program Files\Microsoft SQL Server"
INSTALLSHAREDWOWDIR="E:\Program Files (x86)\Microsoft SQL Server"
INSTANCEID="MSSQLSERVER"

Ubicación de la instancia:

INSTANCEDIR="E:\Program Files\Microsoft SQL Server"

Cuentas de usuario de servicio:
Telemetría:

SQLTELSVCACCT="NT Service\SQLTELEMETRY"
SQLTELSVCSTARTUPTYPE="Automatic"

Servicio de Agente:

AGTSVCACCOUNT="NT Service\SQLSERVERAGENT"
AGTSVCSTARTUPTYPE="Automatic"

Motor de base de datos:

SQLSVCACCOUNT="NT Service\MSSQLSERVER"
SQLSVCSTARTUPTYPE="Automatic"

Especificar el Collation por defecto del motor de base de datos:

SQLCOLLATION="Modern_Spanish_CI_AS"

Usuarios con permisos administrativos para la base de datos, añado el usuario local del servidor, ojo que como valor debe tener el nombre del servidor y el nombre del usuario que corresponda. Lo podéis comprobar por PowerShell con los comandos Hostname y Get-LocalUser:

SQLSYSADMINACCOUNTS="SQL2017CORE\Administrador"

Este punto permite añadir el usuario que instala el SQL Server como administrador del mismo. Yo prefiero añadir el grupo de seguridad de administradores de SQL Server y no usuarios individuales.

ADDCURRENTUSERASSQLADMIN="False"

Especificar el tipo de seguridad mixta en el SQL Server. La contraseña del sa no se especifica dentro del archivo sinó que se hace desde la línea de comandos de la instalación con el parámetro /SAPWD=»contraseña»:

SECURITYMODE="SQL"

Configuración del FILESTREAM, dejo valor 0:

FILESTREAMLEVEL="0"

Configuración de la base de datos temporal TEMPDB:

SQLTEMPDBDIR="T:\MSSQL\Data"
SQLTEMPDBLOGDIR="T:\MSSQL\Data"
SQLTEMPDBFILECOUNT="1"
SQLTEMPDBFILESIZE="8"
SQLTEMPDBFILEGROWTH="64"
SQLTEMPDBLOGFILESIZE="8"
SQLTEMPDBLOGFILEGROWTH="64"

Ubicación de los archivos de la base de datos, sigo las letras de la unidad del apartado de requerimientos de esta entrada:

SQLUSERDBDIR="K:\MSSQL\Data"
SQLUSERDBLOGDIR="L:\MSSQL\Logs"

Protocolos de conexión para el servidor Microsoft SQL Server 2017. Tenemos dos, el TCP y el Named Pipes. Naturalmente, el primero habilitado, el TCP, y el segundo deshabilitado. No deberíais utilizar Named Pipes a estas alturas.

TCPENABLED="1"
NPENABLED="0"

Los siguientes parámetros se deben incluir en valor 0 al archivo, sin embargo, no he encontrado información al respecto de su función:

COMMFABRICPORT="0"
COMMFABRICNETWORKLEVEL="0"
COMMFABRICENCRYPTION="0"
MATRIXCMBRICKCOMMPORT="0"

Otros parámetros:
Habilitar el RANU para la edición SQL Server Express (permitir a usuarios no administradores utilizar SQL Server como un almacén de datos para aplicaciones de Windows Forms).

ENABLERANU="False"

Deshabilitar el inicio del servicio de Browser:

BROWSERSVCSTARTUPTYPE="Disabled"

Garantizar los permisos de las tareas de mantenimiento de volúmenes al servicio de SQL Server. Utilizar según creáis conveniente según las capacidades y configuración del servidor. En mi caso, la desactivo por motivos de seguridad:

SQLSVCINSTANTFILEINIT="False"

A continuación todos los comandos al completo para que los podáis copiar, modificar y pegar donde os interese:

;Fitxer de configuració SQL Server 2017 core
[OPTIONS]
ACTION="Install"
IACCEPTPYTHONLICENSETERMS="True"
IACCEPTROPENLICENSETERMS="True"
SUPPRESSPRIVACYSTATEMENTNOTICE="True"
QUIET="False"
QUIETSIMPLE="True"
;UIMODE="EnableUIOnServerCore"
ENU="True"
UpdateEnabled="True"
UpdateSource="MU"
USEMICROSOFTUPDATE="False"
FEATURES=SQLENGINE
HELP="False"
INDICATEPROGRESS="False"
X86="False"

INSTANCENAME="MSSQLSERVER"
INSTALLSHAREDDIR="E:\Program Files\Microsoft SQL Server"
INSTALLSHAREDWOWDIR="E:\Program Files (x86)\Microsoft SQL Server"
INSTANCEID="MSSQLSERVER"
INSTANCEDIR="E:\Program Files\Microsoft SQL Server"

SQLTELSVCACCT="NT Service\SQLTELEMETRY"
SQLTELSVCSTARTUPTYPE="Automatic"
AGTSVCACCOUNT="NT Service\SQLSERVERAGENT"
AGTSVCSTARTUPTYPE="Manual"
SQLSVCACCOUNT="NT Service\MSSQLSERVER"
SQLSVCSTARTUPTYPE="Automatic"

SQLCOLLATION="Modern_Spanish_CI_AS"
SQLSYSADMINACCOUNTS="SQL2017CORE\Administrador"
ADDCURRENTUSERASSQLADMIN="False"
SECURITYMODE="SQL"
FILESTREAMLEVEL="0"

SQLTEMPDBDIR="T:\MSSQL\Data"
SQLTEMPDBFILECOUNT="1"
SQLTEMPDBFILESIZE="8"
SQLTEMPDBFILEGROWTH="64"
SQLTEMPDBLOGFILESIZE="8"
SQLTEMPDBLOGFILEGROWTH="64"

SQLUSERDBDIR="K:\MSSQL\Data"
SQLUSERDBLOGDIR="L:\MSSQL\Logs"

TCPENABLED="1"
NPENABLED="0"

COMMFABRICPORT="0"
COMMFABRICNETWORKLEVEL="0"
COMMFABRICENCRYPTION="0"
MATRIXCMBRICKCOMMPORT="0"

ENABLERANU="False"
BROWSERSVCSTARTUPTYPE="Disabled"
SQLSVCINSTANTFILEINIT="False"

Tenemos el archivo, que podemos crear directamente en el servidor Windows Server core con el notepad y pegar el contenido:

notepad e:\SQL2017core.ini

 

Instalación Microsoft SQL Server 2017 desatendida

Con el archivo de configuración creado, sólo queda realizar la instalación desde la línea de comandos indicando la ruta y nombre del archivo así como las contraseñas de los usuarios de las cuentas de servicio (en caso que sean usuarios externos) y sa (en caso que la configuración del SQL sea mixta) necesarios:

Servei de SQL Server Paràmetre
Motor de base de datos /SQLSVCPASSWORD=»****»
Agente /AGTSVCPASSWORD=»****»
Analysis Services /ASSVCPASSWORD=»****»
Granja Analysis Services /FARMPASSWORD=»****»
Reporting Services /RSSVCPASSWORD=»****»
Usuario administrador SQL Server sa /SAPWD=»****»

Ejecutar el comando:

setup /IAcceptSQLServerLicenseTerms /SAPWD="Hola!Hola!" /ConfigurationFile=e:\sql2017core.ini

Primero hace la comprobación de actualizaciones

Y después el proceso de instalación propiamente dicho. Un poco de paciencia mientras se instala.

Finalizada la instalación, accedemos a la PowerShell, ejecutando el comando:

powershell

 

Configuración del cortafuegos

Con el Microsoft SQL Server 2017 instalado, queda pendiente poder conectarnos desde la red a él. Para hacerlo, hay que habilitar el puerto TCP 1433 y UDP 1434 o bien dar de alta el servicio en el cortafuegos.

Abrir los puertos TCP 1433 y UDP 1434

Ejecutar los comandos:

New-NetFirewallRule -Name "SQLServerTCP1433" -DisplayName "SQL Server TCP 1433" -Enabled True -Profile Any -Direction Inbound -Action Allow -Protocol "TCP" -LocalPort 1433
New-NetFirewallRule -Name "SQLServerUDP1434" -DisplayName "SQL Server UDP 1434" -Enabled True -Profile Any -Direction Inbound -Action Allow -Protocol "UDP" -LocalPort 1434

Comprobar que se han creado las dos reglas:

Get-NetFirewallRule |Where-Object{$_.Name -like "*sql*"}

Para deshabilitar las reglas anteriores, en caso que fuera necesario:

Get-NetFirewallRule |Where-Object{$_.Name -like "*sql*"} | Set-NetFirewallRule -Enabled false

 

Configuración de cortafuegos a nivel del servicio SQL

En caso de hacerlo a nivel de servicio y que el ejecutable se encuentre en la ruta indicada, ejecutar el comando:

New-NetFirewallRule -Name "SQLServer2017" -DisplayName "SQL Server 2017" -Enabled True -Profile Any -Direction Inbound -Action Allow -Program 'E:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\sqlservr.exe'

¡Ya podemos realizar la conexión desde la consola al nuevo servidor Microsoft SQL Server 2017 sobre Windows Server Core y a trabajar!

 

¿Te ha gustado el artículo? Lo puedes compartir en las redes sociales. También puedes dejar tu opinión, comentario o sugerencia. ¡Gracias!

Similar Posts by The Author: