¿Cómo implementar paquetes de servicios de SQL Server de forma gratuita con PowerShell?

Como cualquier otra pieza de software, Microsoft SQL Server debe mantenerse actualizado. Microsoft lanza periódicamente paquetes de servicio para SQL Server que deben instalarse.

Para instalar un paquete de servicio, puedes conectarte a una consola remota de SQL Server, ejecutar el instalador y hacer clic en el asistente o puede hacerlo de manera sencilla.

Cada instalador de Service Pack para SQL Server admite instalaciones silenciosas. Este tipo de instalación permite utilizar la línea de comandos para iniciar una instalación.

Además, tambiénpermite automatizar el proceso de instalación del Service Pack en uno, decenas o cientos de servidores SQL a la vez.

Una vez que descubres cómo instalar un paquete de servicio de forma silenciosa a través de la línea de comandos, puedes crear una herramienta de automatización con PowerShell para implementar paquetes de servicio de manera rápida y eficiente.

Requisitos previos

Este artículo explica cómo implementar Service Packs de SQL Server con PowerShell desde una computadora remota. Para seguir, asegúrate de tener lo siguiente:

  • Un servidor SQL para actualizar (la versión no importa)

  • Permisos de usuario para instalar un paquete de servicio en SQL Server

  • PowerShell Remoting disponible en el SQL Server remoto

  • Se descargó un instalador de paquete de servicio (puede encontrar todos los paquetes de servicio aquí ).

  • Un conocimiento de nivel intermedio de secuencias de comandos de PowerShell

Si tienes todo en orden, ¡comencemos!

Para instalar un paquete de servicio de forma silenciosa y remota, se necesitan aproximadamente cinco pasos:

  1. Asegurar que el servidor no tenga un reinicio pendiente.

  2. Copiar el instalador del paquete de servicios en el servidor SQL remoto.

  3. Extraer el instalador comprimido.

  4. Iniciar el instalador en silencio.

  5. Limpiar el instalador.

Probar un reinicio pendiente

Debido a que un paquete de servicios no se puede instalar a menos que Windows Server no esté pendiente de un reinicio, debes verificar esta situación por adelantado. Una forma rápida de hacerlo es usar PowerShell.

Prefiero usar una función llamada Test-PendingReboot. Al apuntar esta función a un servidor, devuelve un verdadero/falso simple, lo que permite saber si el servidor está pendiente de reiniciar.

Copiar el instalador del paquete de servicios en el servidor SQL

A continuación, copia el instalador que descargaste de Microsoft en el servidor SQL remoto. Supón que la computadora desde la que estás copiando el instalador está en el mismo dominio de Active Directory que el servidor SQL.

Si ambas computadoras están en el mismo dominio de Active Directory, no necesitas preocuparte por proporcionar credenciales alternativas a tus comandos de PowerShell.

Suponiendo que el Service Pack está en tu disco duro local es C:SQLServerServicePacksSQL2016SP2.exe y tu SQL Server remoto se llamará SQLSRV, abre una consola de PowerShell y ejecuta:

Copy-Item -Path C:SQLServerServicePacksSQL2016SP2.exe -DestinationPath \SQLSRVc$

Ahora deberías tener el instalador del paquete de servicios en la raíz de la unidad C de tu servidor SQL.

Extraer el instalador comprimido

Una vez que el instalador está en el servidor, puedes extraer el contenido del instalador. Para extraer el instalador, usa los argumentos /extract:"C:TempSQLSP" /quiet.

Con el nombre de archivo del ejemplo anterior, ejecuta 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 necesitas abrir una sesión de consola RDP en el servidor para hacerlo.

En su lugar, puedes usar una función llamada Invoke-Program que es una función de PowerShell que permite ejecutar procesos remotos.

Puedes ejecutar extraer el contenido del paquete de servicio en el SQL Server remoto, utilizando el siguiente código:

Invoke-Program -ComputerName SQLSRV -FilePath 'C:SQLServerServicePacksSQL2016SP2.exe' -ArgumentList "/extract:"C:TempSQLSP" /quiet"

Ejecutar el instalador del paquete de servicio

En este punto, estás listo para comenzar el proceso de instalación. Usando la función de PowerShell Invoke-Program, ejecuta el instalador setup.exe que se extrajo del archivo original, utiliza /qy /allinstances al comando.

Esto dirá al instalador del paquete de servicios que no abra una ventana de instalación y que parchee todas las instancias de SQL en el servidor.

Puedes ver un ejemplo de inicio del instalador aquí:

Invoke-Program -ComputerName SQLSRV -FilePath "C:TempSQLSPsetup.exe" -ArgumentList "/q /allinstances"

Limpiar el instalador

Si todo va bien, tendrás un servidor SQL actualizado una vez que finaliza el instalador. Sin embargo, tiene una última tarea que realizar: Limpiar la instalación.

Suponiendo que no deseas dejar los archivos que habías transferido previamente al servidor, elimínalos con el comando Remove-Item de PowerShell.

Sin embargo, debes proporcionar la ruta a la carpeta que extrajo el archivo original y el instalador original. Aquí tienes cómo hacerlo:

Remove-Item -Path "\SQLSRVc$SQLServerServicePacksSQL2016SP2.exe","\SQLSRVc$tempSQLSP" -Recurse -Force

Resumen final

Has instalado con éxito de forma remota un paquete de servicio de SQL Server usando nada más que un archivo y un script de PowerShell.

Ahora que tiene las habilidades para actualizar un servidor SQL para un servidor, puedes extender fácilmente este código a varios servidores.

Para implementar un paquete de servicios en varios servidores, usa construcciones de PowerShell como un bucle foreach.

Coloca el código que aprendiste dentro de un bucle foreach para procesar rápidamente uno o cien servidores SQL a la vez.

🔥 MÁS ARTÍCULOS RECOMENDADOS 🔥

Comparte tu opinión