¿Existe una forma genial de realizar actualizaciones de CU para SQL Server en cientos de máquinas?

19

Mi compañía ha crecido de 50 servidores SQL a más de 200 durante la noche en una adquisición de fusión. ¡AYUDA!

Mis preguntas son:

  • ¿Cómo puedo realizar actualizaciones de CU en este número de servidores y seguir teniendo vida y mantener la cordura? SCCM no parece poder realizar actualizaciones de CU.

  • ¿Alguien más ha podido realizar actualizaciones de CU en cientos de servidores?

  • ¿Cuáles son algunas otras alternativas?

Russ Starksen
fuente
El método de Shawn es ciertamente un método genial para hacerlo. WSUS es mucho menos genial, pero más compatible. Ambas son buenas soluciones.
Ali Razeghi
55
¿Cuáles son sus ventanas de interrupción permitidas en esas máquinas? ¿Puede tomar interrupciones cuando lo desee o tiene que hacer horarios para máquinas específicas? ¿Están involucrados los grupos? ¿Duplicación y replicación? ¿Siempre grupos de disponibilidad? ¿Trabajos por lotes que pueden necesitar detenerse, como copias de seguridad o trabajos de carga ETL?
Brent Ozar
"Genial" no es una forma objetiva de describir algo. = / Iba a sugerir una edición, pero no se me ocurrió nada que funcionara.
jpmc26
Hubo una gran respuesta a esta pregunta publicada en el sitio de Bret Ozars en su artículo. "Por qué nadie nunca parchea sus servidores sql". brentozar.com/archive/2015/08/…
Russ Starksen

Respuestas:

15

El cool wayobjetivo es utilizar un script de instalación desatendida que simplemente se llama desde cada servidor, donde los medios para la instalación se encuentran en un directorio central de su red, al que se puede acceder desde cada servidor. Tendrá que ejecutar el script en modo elevado, lo cual es bastante fácil en PowerShell.

Necesitará usar la CLI para extraer la revisión, lo encontré aquí . Entonces, las opciones de CLI para el parche de SQL Server se pueden encontrar aquí .

Los siguientes comandos son los que utilicé para aplicar el parche CU6 a la instancia local de SQL Server 2012 SP2 en mi computadora portátil. Cambié al directorio donde descargué la revisión:

.\SQLServer2012-KB3052468-x64.exe /X:E:\Software\SQL_Server\2012\SP2_CU6\Extracted
cd Extracted
.\setup.exe /action=patch /instancename=SQL12 /quiet /IAcceptSQLServerLicenseTerms

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Prácticamente solo trabaja escribiendo esto como una secuencia de comandos para cada servidor, luego extrae ese bit del registro de resumen (o solo el registro completo) en un lugar central para que pueda regresar y determinar el estado. La opción 2 sería incluir algunas líneas de código para conectarse a cada instancia y verificar el número de compilación.

Shawn Melton
fuente
9

La instalación desatendida es el camino a seguir, como mencionó @ShawnMelton . Para implementar CU en cientos de servidores, puede explorar las siguientes opciones (pruébelas, para saber qué funcionará para usted y su entorno):

  1. Sysinternals : PsExecle permitirá generar la instalación en máquinas remotas.
  2. PowerShell : utilice la función de comunicación remota en PowerShell 3.0 y versiones posteriores para realizar la instalación. p.ejEnter-PSSession -ComputerName <COMPUTERNAME>
  3. Viejo es oro - usando el .batarchivo. <== esto definitivamente funciona con SCCM ya que puede implementar .batarchivos en múltiples servidores usando SCCM.

    A continuación se muestra una muestra de instalación SQL2008_SP2_and_CU_2k8_64bit (modifique según sus necesidades) . Puede alimentar el archivo bat a SCCM para que pueda realizar una instalación masiva.

    REM starting SQL SP2 cu install.
    "C:\temp\SQL2008_SP2_and_CU_2k8_64bit\CU\SQLServer2008-KB2467239-x64.exe" /allinstances /quiet
    REM SQL SP2 cu install complete
    
    REM optional   STEP to reboot your machine 
    REM Reboot the host before kicking off the install
    shutdown.exe /r /f /c "DBA scheduled reboot" /t 30

Como nota al margen (¡Precaución!):

Nunca haría este tipo de actualización masiva para estos muchos servidores (100's) de una sola vez. En su lugar, agrúpelos en grupos manejables y luego parchelos en grupos.

De esta manera, puede averiguar fácilmente si algo sale mal, por ejemplo, si hay un error en la CU que está instalando y se soluciona en una CU o SP posterior. O también en cuanto a la instalación, si está parcheando 100 servidores de una sola vez y de ellos 5 o 7 servidores no se parchearon correctamente, ¿cómo va a resolver eso?

Administro más de 300 servidores en mi empresa y prefiero parchearlos en lotes más pequeños semanalmente. Entonces comienzas con un número pequeño y una vez que ganas confianza, repites lo mismo.

EDITAR:

Ahora dbatools tiene Update-DbaInstance.ps1que puede realizar la instalación de Service Pack de SQL Server y actualizaciones acumulativas en servidores locales y remotos.

Kin Shah
fuente