Como cualquier otro software, Microsoft SQL Server debe mantenerse actualizado. Microsoft lanza rutinariamente paquetes de servicio para SQL Server que deben instalarse. Para instalar un service pack, puede conectarse a una consola remota de SQL Server, ejecutar el instalador y hacer clic en el asistente, o puede hacerlo de forma sencilla.
Cada instalador de service pack para SQL Server admite instalaciones silenciosas. Este tipo de instalación le permite utilizar la línea de comando para iniciar una instalación. Además, también le permite automatizar el proceso de instalación del paquete de servicio en uno, decenas o cientos de servidores SQL a la vez.
Una vez que descubra cómo instalar un paquete de servicio de forma silenciosa a través de la línea de comandos, podrá crear una herramienta de automatización utilizando PowerShell para implementar paquetes de servicio de manera rápida y eficiente.
Requisitos previos
Este artículo tutorial explica cómo implementar paquetes de servicio de SQL Server con PowerShell desde una computadora remota. Para seguir adelante, asegúrese de tener lo siguiente:
- Un SQL Server para actualizar (la versión no importa)
- Permisos de usuario para instalar un service pack en SQL Server
- Comunicación remota con PowerShell disponible en el servidor SQL remoto
- Se descargó un instalador de service pack (puede encontrar todos los service packs aquí.)
- Un conocimiento de nivel intermedio de secuencias de comandos de PowerShell.
Si tienes todo en orden, ¡comencemos!
Para instalar un service pack de forma silenciosa y remota, se necesitan aproximadamente cinco pasos:
- Asegúrese de que el servidor no tenga un reinicio pendiente.
- Copie el instalador del paquete de servicio al servidor SQL remoto.
- Extraiga el instalador comprimido.
- Inicie el instalador en silencio.
- Limpia el instalador.
Prueba de reinicio pendiente
Debido a que un paquete de servicio no se puede instalar a menos que Windows Server no esté pendiente de reiniciar, debe verificar esta situación con anticipación. Una forma rápida de hacerlo es utilizar PowerShell. Prefiero usar una función llamada Reinicio pendiente de prueba. Al apuntar esta función a un servidor, devuelve un simple Verdadero/Falso, lo que le permite saber si el servidor está pendiente de reiniciar.
Copie el instalador del Service Pack al servidor SQL
A continuación, copie el instalador que descargó de Microsoft al servidor SQL remoto. Supongo que la computadora desde la que está copiando el instalador está en el mismo dominio de Active Directory que SQL Server. Si ambas computadoras están en el mismo dominio de Active Directory, no necesita preocuparse por proporcionar credenciales alternativas para sus comandos de PowerShell.
Suponiendo que el service pack en su disco duro local es C:SQLServerServicePacksSQL2016SP2.exe y su SQL Server remoto se llama SQLSRV, abra una consola PowerShell y ejecute:
Copy-Item -Path C:SQLServerServicePacksSQL2016SP2.exe -DestinationPath \SQLSRVc$
Ahora debería tener el instalador del service pack en la raíz de la unidad C de su SQL Server.
Una vez que el instalador esté en el servidor, puede extraer su contenido. Para extraer el instalador, utilice los argumentos /extract:”C:TempSQLSP” /quiet. Usando el nombre de archivo del ejemplo anterior, ejecute el siguiente código en SQL Server:
C:SQLServerServicePacksSQL2016SP2.exe /extract:"C:TempSQLSP" /quiet
Sin embargo, debido a que está instalando un paquete de servicio de forma remota, no necesita abrir una sesión de consola RDP en el servidor para hacerlo. En su lugar, puedes usar una función llamada Programa de invocaciónque es la función de PowerShell que le permite ejecutar procesos remotos.
Puede ejecutar extraer el contenido del service pack en el SQL Server remoto, utilizando el siguiente código:
Invoke-Program -ComputerName SQLSRV -FilePath 'C:SQLServerServicePacksSQL2016SP2.exe' -ArgumentList "/extract:"C:TempSQLSP" /quiet"
Ejecute el instalador del Service Pack
En este punto, está listo para comenzar el proceso de instalación. Usando nuevamente la función Invoke-Program PowerShell, ejecute el instalador setup.exe que se extrajo del archivo original y proporcione los modificadores /q y /allinstances. Le indica al instalador del paquete de servicio que no abra una ventana de instalación y que parchee todas las instancias de SQL en el servidor.
Puede ver un ejemplo de cómo iniciar el instalador aquí:
Invoke-Program -ComputerName SQLSRV -FilePath "C:TempSQLSPsetup.exe" -ArgumentList "/q /allinstances"
Limpiar el instalador
Si todo va bien, tendrá un SQL Server actualizado una vez que finalice el instalador. Sin embargo, te queda una última tarea que realizar: limpiar.
Suponiendo que no desea dejar los archivos que había transferido previamente al servidor, elimínelos usando el comando Remove-Item PowerShell. Sin embargo, debe proporcionar la ruta a la carpeta donde se extrajo el archivo original y el instalador original. He aquí cómo hacerlo:
Remove-Item -Path "\SQLSRVc$SQLServerServicePacksSQL2016SP2.exe","\SQLSRVc$tempSQLSP" -Recurse -Force
Resumen
Ha instalado con éxito de forma remota un paquete de servicio de SQL Server utilizando nada más que un archivo y un script de PowerShell. Ahora que tiene las habilidades para actualizar SQL Server para un servidor, puede extender fácilmente este código a varios servidores.
Para implementar un paquete de servicio en varios servidores, utilice construcciones de PowerShell como un bucle foreach. Coloque el código que aprendió en este artículo dentro de un bucle foreach para procesar rápidamente uno o cien servidores SQL a la vez.