Por Luis Ramirez

En instalaciones clúster un problema que encontramos en SQL Server 2005 es que la instancia se encuentre en diferentes versiones de parches en los nodos donde corre.

Esto puede ocurrir por varias razones:

  • Se agregó un nuevo nodo a la instancia
  • Previa instalación fallida.
  • Interrupción de instalación.
  • Operaciones pendientes en uno de los nodos
  • etc

En SQL 2005 la instalación de un Service Pack (Parche de servicio) o cumulative updates (Parche acumulativo) se inicia desde el nodo activo. El instalador validara que la versión del parche que se quiere instalar sea igual o mayor que lo se tiene corriendo en el nodo actual.

Una vez pasada esta etapa correrá el instalador en el nodo pasivo donde hará otra validación del nivel del parche instalado en este nodo para proseguir con la instalación (o terminación dependiendo el resultado) en el nodo pasivo y finalizando se realizara la instalación en el nodo Activo.

Durante dicho proceso pudo existir un problema en cualquiera de los nodos motivo por el cual puede ser que uno de los nodos se quede sin actualizar.

Por lo tanto tendremos un nodo en una versión más reciente corriendo en un nodo los cuales nos generaría problemas aleatorios dependiendo donde corra.

Si la versión del nodo más reciente es solo un Parche de Servicio (ya sea SP1, SP2, SP3 o SP4) y NO se tiene un parche acumulativo sobre los parches podríamos volver a ejecutar el instalador del parche de servicio desde el nodo activo.

Lo mismo aplicaría para los parches acumulativos, esto es, si el ambiente es un nodo en SP4 con CU 3 y el otro nodo con solo SP4 se podría volver a ejecutar el instalador para CU 3.

Caso contrario si tenemos nodo A con SP4 con CU 3 y nodo B sin parche (9.00.1399), si intentamos correr solo el parche acumulativo 3 desde el nodo activo nos marcara error en el nodo B ya que no se tiene instalado el prerrequisito de parche de servicio 4.

image

Si se intenta correr el parche de servicio en el nodo activo no nos dejaría pasar porque detectaría que en el nodo actual se tiene una versión más reciente ya instalada.

Bajo el mismo escenario si movemos los servicios al nodo B (9.00.1399) y corremos el parche acumulativo fallaría por el prerrequisito. Si intentamos SP4 al tratar de hacer la instalación en el nodo remoto fallaría en la validación en el nodo pasivo y no correría en el nodo activo quedándose en RTM.

image

Para resolver este escenario tenemos dos opciones y esto dependerá en el nivel de parche más reciente que se tenga en los nodos del Clúster.

Esto se debe ya que a partir de versión 9.00.3228 se hicieron cambios en el instalador de forma que se aceptara el parámetro "/Passive" (desde la línea de comando) el cual indicara al instalador que se correrá desde un nodo que es pasivo por lo tanto no tiene que hacer validaciones en otro nodo como lo haría en una situación normal con la ventaja que no impactara los servicios.

Por lo tanto si la versión más reciente es igual o mayor a 9.00.3228, entonces podremos usar el switch "passive" desde el nodo pasivo con la versión inferior de parche para nivelarlos. De lo contrario si el nodo más reciente es menor a nivel 9.00.3228 la opción sería temporalmente “remover” el nodo con el parche más reciente (para evitar la validación) y correr la instalación desde el nodo con la versión inferior de parche

Supongamos los siguientes escenarios:

-ESCENARIO 1.

Nodo A en versión 9.00.5266 (SP4 CU3) y nodo B en 9.00.1399 (RTM sin parche).

Como el nodo con la versión más reciente está en un nivel mayor a 9.00.3228 podemos usar el switch passive e instalar el parche en el nodo pasivo.

Pasos

1.- Confirmamos que el nodo A (9.00.5266) es el activo y el nodo B (9.00.1399) es el pasivo.

2.- Descargar el parche de servicio 4 y las actualizaciones acumulativas SP4 CU 3 en el nodo B

3.- Abrir ventana de comando (con permisos de administrador) y ejecutar el parche con el parámetro /passive

c:\SP4\SQLServer2005SP4-KB2463332-x64-ENU.exe /passive

4.- Una vez finalizado si fue exitosa la instalación pedirá reinicio del nodo.

5.- Después del Reinicio, abrimos la ventana de comando (con permisos de administrador) y ejecutar el archivo de las actualizaciones acumulativas con el parámetro /passive

c:\SP4\SQLServer2005-KB2507769-x64-ENU.exe /passive

6.- Reiniciar el nodo B.

7.- Pasar los servicios al nodo B y confirmar que se encuentra en version 9.00.5266.

image

-ESCENARIO 2.

Nodo A en versión 9.00.3215 (SP 2 CU 5) Nodo B en 9.00.1399 (RTM sin parche).

En este ambiente nos encontramos que el nodo con la versión más reciente es inferior a SP2 CU 6 (9.00.3228) el instalador no reconocerá el switch passive. Recordemos que bajo estas circunstancias removeremos temporalmente el nodo con la versión más reciente, trabajando solo con el nodo con el parche inferior. Debemos tener en cuenta que a diferencia de usar el switch passive este procedimiento causara interrupción de servicios.

Se tienen dos métodos para remover temporalmente el nodo, el más sencillo es el método 1.

Método 1.

Pasos

1.- Mover los recursos a la instancia con el parche inferior nodo B.

image

2.- Desde el Administrador de Cluster poner en pausa el nodo A

image

3.- Desde el nodo B (versión inferior) iniciar la instalación de parche de servicios 2.

4.- Una vez finalizado si fue exitosa la instalación pedirá reinicio del nodo, antes del reinicio reactivar el nodo A, para que el clúster pueda fallar los servicios a dicho nodo cuando ocurra el reinicio.

5.- Una vez el nodo B este en línea, movemos los servicios del SQL al nodo B y volvemos a poner en pausa al nodo A.

6.- Instalar el parche acumulativo 9.00.3215.

7.- Reactivar nodo A y hacer reinicio del nodo B.

8.- Una vez el nodo B este en línea mover los servicios al nodo B y confirmar que se encuentra en version 9.00.3215.

image

Método 2

Pasos

1.- Mover los recursos a la instancia con el parche inferior nodo B.

image

2.- Desde el Administrador de Cluster remover nodo A de la lista de posibles dueños (possible owners) para los servicios de SQL listados en el Cluster.

image

3.- Desde el nodo B (versión inferior) iniciar la instalación de parche de servicios 2.

4.- Una vez finalizado si fue exitosa la instalación pedirá reinicio del nodo, antes del reinicio agregar el nodo A a la lista de posibles dueños, para que el clúster pueda fallar los servicios a dicho nodo cuando ocurra el reinicio.

5.- Una vez el nodo B este en línea, movemos los servicios del SQL al nodo B y volvemos a remover nodo A de la lista de posibles dueños para los servicios de SQL listados en el Cluster.

6.- Instalar el parche acumulativo 9.00.3215.

7.- Activar nodo A y hacer reinicio del nodo B.

8.- Una vez el nodo B este en línea mover los servicios al nodo B y confirmar que se encuentra en version 9.00.3215.

image

Mas información:

FIX: Error message when you try to install SQL Server 2005 Service Pack 1 or SQL Server 2005 Service Pack 2 from the existing active node: "The product instance <InstanceName> has been patched with more recent updates

http://support.microsoft.com/default.aspx?scid=kb;EN-US;934749