Instalación Microsoft SQL Server 2017 desatendida
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:
- Microsoft SQL Server con SMB3
- Microsoft SQL Server amb SMB3
- Containers en Linux
- Containers amb Linux
- Migrar el servidor de archivos a Windows Server 2019
- Migrar el servidor de fitxers a Windows Server 2019
- Puerta enlace a Azure en el Windows Admin Center
- Porta enllaç a Azure en el Windows Admin Center
- Hola mundo! WordPress 5 y Gutenberg
- Hola món! WordPress 5 i Gutenberg