Guía completa del mantenimiento DE WSUS y Configuration Manager SUP

En este artículo se abordan algunas preguntas comunes sobre el mantenimiento de WSUS para entornos de Configuration Manager.

Versión original del producto:   Servidores de Windows, Windows Server Update Services, Configuration Manager
Número KB original:   4490644

Introducción

Las preguntas suelen estar en la línea de cómo debería ejecutar correctamente este mantenimiento en un entorno de Configuration Manager o la frecuencia con la que debo ejecutar este mantenimiento. No es raro que los administradores de Configuration Manager conscientes no sean conscientes de que el mantenimiento de WSUS debe ejecutarse en absoluto. La mayoría de nosotros simplemente configuramos servidores WSUS porque es un requisito previo para un punto de actualización de software (SUP). Una vez configurado el SUP, cierramos la consola WSUS y pretendemos que no existe. Desafortunadamente, puede ser problemático para los clientes de Configuration Manager y el rendimiento general del servidor WSUS/SUP.

Con la comprensión de que es necesario realizar este mantenimiento, se está preguntando qué mantenimiento necesita realizar y con qué frecuencia necesita realizarlo. La respuesta es que debe realizar un mantenimiento mensual. El mantenimiento es fácil y no lleva mucho tiempo para los servidores WSUS que se han mantenido bien desde el principio. Sin embargo, si ha pasado algún tiempo desde que se hizo el mantenimiento de WSUS, la limpieza puede ser más difícil o consumir mucho tiempo la primera vez. Será mucho más fácil o más rápido en los meses posteriores.

Mantener WSUS mientras se admite configuration Manager versión actual de la rama 1906 y versiones posteriores

Si usas configuration Manager versión actual de la rama 1906 o versiones posteriores, te recomendamos que habilites las opciones de mantenimiento de WSUS en la configuración del punto de actualización de software en el sitio de nivel superior para automatizar los procedimientos de limpieza después de cada sincronización. Controlaría eficazmente todas las operaciones de limpieza descritas en este artículo, excepto la copia de seguridad y la reindexación de la base de datos WSUS. Aún debes automatizar la copia de seguridad de la base de datos WSUS junto con la reindexación de la base de datos WSUS según una programación.

Captura de pantalla de las opciones de mantenimiento de WSUS

Para obtener más información sobre el mantenimiento de actualizaciones de software en Configuration Manager, consulta Mantenimiento de actualizaciones de software.

Consideraciones importantes

Nota

Si estás usando las características de mantenimiento que se han agregado en Configuration Manager, versión 1906,no necesitas tener en cuenta estos elementos, ya que Configuration Manager controla la limpieza después de cada sincronización.

  1. Antes de iniciar el proceso de mantenimiento, lea toda la información y las instrucciones de este artículo.

  2. Al usar WSUS junto con servidores de bajada, los servidores WSUS se agregan de arriba abajo, pero deben quitarse de la parte inferior hacia arriba. Al sincronizar o agregar actualizaciones, primero van al servidor WSUS ascendente y, a continuación, se replican en los servidores de bajada. Al realizar una limpieza y quitar elementos de los servidores WSUS, debes empezar en la parte inferior de la jerarquía.

  3. El mantenimiento de WSUS se puede realizar simultáneamente en varios servidores del mismo nivel. Al hacerlo, asegúrate de que se realiza un nivel antes de pasar al siguiente. Los pasos de limpieza y reindexación que se describen a continuación deben ejecutarse en todos los servidores WSUS, independientemente de si son o no un servidor WSUS de réplica. Para obtener más información sobre cómo determinar si un servidor WSUS es una réplica, consulta Rechazar actualizaciones reemplazadas.

  4. Asegúrese de que los SUP no se sincronicen durante el proceso de mantenimiento, ya que puede causar una pérdida de parte del trabajo ya realizado. Comprueba la programación de sincronización de SUP y esta establece temporalmente en manual durante este proceso.

    Captura de pantalla de la configuración de programación de sincronización

  5. Si tienes varios SUP del sitio principal o de administración central (CAS) que no comparten susDB, considera que el servidor WSUS que se sincroniza con el primer SUP del sitio reside en un nivel debajo del sitio. Por ejemplo, mi sitio CAS tiene dos SUP:

    • El llamado Nuevo se sincroniza con Microsoft Update, sería mi nivel superior (nivel 1).
    • El servidor denominado 2012 se sincroniza con Nuevo y se consideraría en el segundo nivel. Se puede limpiar al mismo tiempo que haría todos los demás servidores de nivel 2, como el ÚNICO SUP del sitio principal.

    Captura de pantalla de varios SUP

Realizar mantenimiento de WSUS

Entre los pasos básicos necesarios para un mantenimiento correcto de WSUS se incluyen:

  1. Copia de seguridad de la base de datos WSUS
  2. Crear índices personalizados
  3. Volver a indexar la base de datos WSUS
  4. Rechazar actualizaciones reemplazadas
  5. Ejecutar el Asistente para limpieza del servidor WSUS

Copia de seguridad de la base de datos WSUS

Copia de seguridad de la base de datos WSUS (SUSDB) mediante el método deseado. Para obtener más información, vea Crear una copia de seguridad completa de la base de datos.

Crear índices personalizados

Este proceso es opcional, pero recomendado, mejora en gran medida el rendimiento durante las operaciones de limpieza posteriores.

Si estás usando Configuration Manager versión actual de la rama 1906 o una versión posterior, te recomendamos que use Configuration Manager para crear los índices. Para crear los índices, configura la opción Agregar índices no agrupados a la base de datos WSUS en la configuración del punto de actualización de software para el sitio superior.

Captura de pantalla de la opción de índice

Si usas una versión anterior de Configuration Manager o servidores WSUS independientes, sigue estos pasos para crear índices personalizados en la base de datos SUSDB. Para cada SUSDB, es un proceso de un solo uso.

  1. Asegúrese de que tiene una copia de seguridad de la base de datos SUSDB.

  2. Usa SQL Management Studio para conectarte a la base de datos SUSDB, del mismo modo que se describe en la sección Reindexar la base de datos WSUS.

  3. Ejecute el siguiente script en SUSDB para crear dos índices personalizados:

    -- Create custom index in tbLocalizedPropertyForRevision
    USE [SUSDB]
    
    CREATE NONCLUSTERED INDEX [nclLocalizedPropertyID] ON [dbo].[tbLocalizedPropertyForRevision]
    (
         [LocalizedPropertyID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    
    -- Create custom index in tbRevisionSupersedesUpdate
    CREATE NONCLUSTERED INDEX [nclSupercededUpdateID] ON [dbo].[tbRevisionSupersedesUpdate]
    (
         [SupersededUpdateID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    

    Si ya se han creado índices personalizados, al ejecutar el script de nuevo se produce un error similar al siguiente:

    Msg 1913, Level 16, State 1, Line 4
    Error en la operación porque ya existe un índice o estadísticas con el nombre 'nclLocalizedPropertyID' en la tabla 'dbo.tbLocalizedPropertyForRevision'.

Volver a indexar la base de datos WSUS

Para volver a indexar la base de datos WSUS (SUSDB), usa el script Reindex the WSUS Database T-SQL Script.

Los pasos para conectarse a SUSDB y realizar la reindexación varían en función de si SUSDB se ejecuta en SQL Server o Windows Internal Database (WID). Para determinar dónde se ejecuta SUSDB, comprueba el valor de la entrada del Registro en el servidor SQLServerName WSUS ubicado en la HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup subclave.

Si el valor contiene solo el nombre o la instancia del servidor, SUSDB se ejecuta en un SQL Server. Si el valor incluye la cadena o en ##SSEE ##WID ella, SUSDB se ejecuta en WID, como se muestra:

Captura de pantalla de SqlServerName-SSEE.

Captura de pantalla de SqlServerName-WID.

Si SUSDB se instaló en WID

Si SUSDB se instaló en WID, SQL Server Management Studio Express debe instalarse localmente para ejecutar el script de reindexación. Esta es una forma sencilla de determinar qué versión de SQL Server Management Studio Express instalar:

  • Para Windows Server 2012 o versiones posteriores:

    • Vaya a C:\Windows\WID\Log y busque el registro de errores que contiene el número de versión.

    • Busque el número de versión en Cómo determinar la versión, la edición y el nivel de actualización de SQL Server y sus componentes. Este valor indica qué nivel de Service Pack (SP) se está ejecutando WID. Incluya el nivel de SP al buscar en el Centro de descarga de Microsoft SQL Server Management Studio Express.

  • Para Windows Server 2008 R2 o versiones anteriores:

    • Vaya al último registro de C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG errores y ábralo con el Bloc de notas. En la parte superior, habrá un número de versión (por ejemplo, 9.00.4035.00 x64). Busque el número de versión en Cómo determinar la versión, la edición y el nivel de actualización de SQL Server y sus componentes. Este número de versión indica qué nivel de Service Pack se está ejecutando. Incluya el nivel de SP al buscar en el Centro de descarga de Microsoft SQL Server Management Studio Express.

Después de instalar SQL Server Management Studio Express, inéctalo y escribe el nombre del servidor al que conectarte:

  • Si el sistema operativo es Windows Server 2012 o versiones posteriores, use \\.\pipe\MICROSOFT##WID\tsql\query .
  • Si el sistema operativo es anterior a Windows Server 2012, escriba \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query .

Para WID, si se producen errores similares a los siguientes al intentar conectarse a SUSDB mediante SQL Server Management Studio (SSMS), pruebe a iniciar SSMS con la opción Ejecutar como administrador.

No se puede conectar al error del servidor.

Si SUSDB se instaló en SQL Server

Si SUSDB se instaló en el servidor SQL Server, inicie SQL Server Management Studio y escriba el nombre del servidor (y la instancia si es necesario) cuando se le solicite.

Sugerencia

Como alternativa, se puede usar una sqlcmd utilidad llamada para ejecutar el script de reindexación. Para obtener más información, consulta Reindexar la base de datos WSUS.

Ejecución del script

Para ejecutar el script en SQL Server Management Studio o SQL Server Management Studio Express, seleccione Nueva consulta, pegue el script en la ventana y, a continuación, seleccione Ejecutar. Cuando haya terminado, se mostrará un mensaje de consulta ejecutado correctamente en la barra de estado. Además, el panel de resultados contendrá mensajes relacionados con los índices que se han reconstruido.

Ejecute la instrucción SQL archivo.

Captura de pantalla del registro correcto

Rechazar actualizaciones reemplazadas

Rechazar las actualizaciones reemplazadas en el servidor WSUS para ayudar a los clientes a examinar de forma más eficaz. Antes de rechazar las actualizaciones, asegúrese de que se implementan las actualizaciones superseding y de que las reemplazadas ya no son necesarias. Configuration Manager incluye una limpieza independiente, que le permite expirar las actualizaciones reemplazadas en función de los criterios especificados. Para más información, consulte los siguientes artículos:

La siguiente SQL consulta se puede ejecutar en la base de datos SUSDB, para determinar rápidamente el número de actualizaciones reemplazadas. Si el número de actualizaciones reemplazadas es superior a 1500, puede causar diversos problemas relacionados con actualizaciones de software tanto en el servidor como en el cliente.

-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0

Si usas configuration Manager versión actual de la rama 1906 o una versión posterior, te recomendamos que rechaces automáticamente las actualizaciones reemplazadas habilitando la opción Rechazar actualizaciones expiradas en WSUS de acuerdo con la opción reglas de sustitución en la configuración del punto de actualización de software para el sitio superior.

Rechazar la opción de actualizaciones expiradas

Al usar esta opción, puede ver cuántas actualizaciones se rechazaron revisando el archivo WsyncMgr.log una vez que finalice el proceso de sincronización. Si usa esta opción, no es necesario usar el script que se describe más adelante en esta sección (ya sea ejecutándose manualmente o configurando como tarea para ejecutarlo en una programación).

Si usas servidores WSUS independientes o una versión anterior de Configuration Manager, puedes rechazar manualmente las actualizaciones reemplazadas mediante la consola WSUS. O bien, puede ejecutar este script de PowerShell. Para descargar el script, haga clic con el botón secundario en el vínculo y, a continuación, seleccione Guardar destino como.... Descargue el script, quite la .txt extensión de archivo y guarde el archivo con una .PS1 extensión.

Nota

Este script se proporciona tal como está. Debe probarse completamente en un laboratorio antes de usarlo en producción. Microsoft no ofrece ninguna garantía sobre el uso de este script de ninguna manera. Ejecute siempre el script con el parámetro primero para obtener un resumen de cuántas actualizaciones reemplazadas -SkipDecline se rechazarán.

Si Configuration Manager se establece en Expirar inmediatamente las actualizaciones reemplazadas (consulta a continuación), el script de PowerShell puede usarse para rechazar todas las actualizaciones reemplazadas. Debe realizarse en todos los servidores WSUS autónomos de la jerarquía de Configuration Manager/WSUS.

Opción de expiración inmediata

No es necesario ejecutar el script de PowerShell en los servidores WSUS que se establecen como réplicas, como los SUP de sitio secundario. Para determinar si un servidor WSUS es una réplica, comprueba la configuración de origen de actualización.

Captura de pantalla de la opción Actualizar origen.

Si las actualizaciones no están configuradas para que expiren inmediatamente en Configuration Manager, el script de PowerShell debe ejecutarse con un período de exclusión que coincida con la configuración de Configuration Manager durante el número de días para expirar las actualizaciones reemplazadas. En este caso, serían 60 días desde que las propiedades del componente SUP están configuradas para esperar dos meses antes de expirar las actualizaciones reemplazadas:

Captura de pantalla de meses para expirar actualizaciones reemplazadas

Las siguientes líneas de comandos ilustran las distintas formas en que se puede ejecutar el script de PowerShell (si el script se ejecuta en el servidor WSUS, puede usarse en lugar del LOCALHOST script SERVERNAME real):

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –SkipDecline

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –ExclusionPeriod 60

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -UseSSL -Port 8531

Ejecutar el script con a y recopilar información sobre las actualizaciones en el servidor WSUS y cuántas actualizaciones -SkipDecline -ExclusionPeriod 60 se podrían rechazar:

Windows PowerShell ventana que ejecuta SkipDecline y ExclusionPeriod 60.

Ejecutar el script con -ExclusionPeriod 60 para rechazar las actualizaciones reemplazadas con más de 60 días:

Windows PowerShell con ExclusionPeriod 60 ejecutándose.

Los indicadores de salida y progreso se muestran mientras se ejecuta el script. Tenga en SupersededUpdates.csv archivo, que contendrá una lista de todas las actualizaciones rechazadas por el script:

Windows PowerShell salida y el indicador de progreso.

Nota

Si se producen problemas al intentar usar el script de PowerShell anterior para rechazar actualizaciones reemplazadas, consulta la sección Ejecución del script Decline-SupersededUpdatesWithExclusionPeriod.ps1 que agota el tiempo de espera al conectarse al servidor WSUS, o se produce un error 401 mientras se ejecuta para solucionar problemas.

Después de que se hayan rechazado las actualizaciones reemplazadas, para obtener el mejor rendimiento, SUSDB debe volver a indexarse. Para obtener información relacionada, consulta Reindexar la base de datos WSUS.

Ejecutar el Asistente para limpieza del servidor WSUS

El Asistente para la limpieza del servidor WSUS proporciona opciones para limpiar los siguientes elementos:

  • Actualizaciones no usadas y revisiones de actualizaciones (también conocidas como actualizaciones obsoletas)
  • Equipos que no se pondrán en contacto con el servidor
  • Archivos de actualización innecesarios
  • Actualizaciones expiradas
  • Actualizaciones reemplazadas

En un entorno de Configuration Manager, los equipos que no se pondrán en contacto con el servidor y las opciones de archivos de actualización innecesarios no son relevantes porque Configuration Manager administra el contenido y los dispositivos de actualización de software, a menos que se seleccionen las opciones Crear todos los eventos de informes de WSUS o Crear solo eventos de informes de estado de WSUS en Configuración de sincronización de actualización de software. Si tienes una de estas opciones configuradas, considera la posibilidad de automatizar la limpieza del servidor WSUS para realizar la limpieza de estas dos opciones.

Si usas Configuration Manager versión actual de la rama 1906 o una versión posterior, habilitar la opción Rechazar actualizaciones expiradas en WSUS de acuerdo con las reglas de sustitución controla la declinación de actualizaciones expiradas y las actualizaciones reemplazadas en función de las reglas de sustitución especificadas en Configuration Manager. Al habilitar la opción Quitar actualizaciones obsoletas de la base de datos WSUS en configuration Manager, versión actual de la rama 1906, se controla la limpieza de actualizaciones no usadas y revisiones de actualizaciones (actualizaciones obsoletas). Se recomienda habilitar estas opciones en la configuración del punto de actualización de software en el sitio de nivel superior para permitir que Configuration Manager limpie la base de datos WSUS.

Quitar la opción de actualizaciones obsoletas

Si nunca has limpiado las actualizaciones obsoletas de la base de datos WSUS antes, es posible que esta tarea haya pasado el tiempo de espera. Puedes revisar WsyncMgr.log para obtener más información y ejecutar manualmente el script SQL que se especifica en AYUDA. My WSUS has been running for years without ever having maintenance done and the cleanup wizard keeps timing out once, which would allow subsequent attempts from Configuration Manager to run successfully. Para obtener más información sobre la limpieza y el mantenimiento de WSUS en Configuration Manager, consulta los documentos.

Para los servidores WSUS independientes, o si usas una versión anterior de Configuration Manager, se recomienda que ejecutes el Asistente para limpieza de WSUS periódicamente. Si el Asistente para la limpieza del servidor WSUS nunca se ha ejecutado y WSUS ha estado en producción durante un tiempo, es posible que la limpieza haya pasado el tiempo de espera. En ese caso, vuelva a indexar primero con los pasos 2 y 3 y, a continuación, ejecute la limpieza solo con la opción Actualizaciones y revisiones sin usar activada.

Si nunca has ejecutado el Asistente para limpieza de WSUS, la ejecución de la limpieza con actualizaciones no usadas y revisiones de actualización puede requerir algunos pases. Si se ha completado el tiempo de espera, vuelva a ejecutarlo hasta que se complete y, a continuación, ejecute cada una de las otras opciones de una en una. Por último, realiza un pase completo con todas las opciones activadas. Si se siguen dando tiempos de espera, consulte SQL Server alternativa en AYUDA. My WSUS has been running for years without ever having maintenance done and the cleanup wizard keeps timing out. El Asistente para la limpieza del servidor puede tardar varias horas o días SQL en completarse.

El Asistente para la limpieza del servidor WSUS se ejecuta desde la consola WSUS. Se encuentra en Opciones, como se muestra aquí:

La página de ubicación del Asistente para limpieza del servidor WSUS.

Para obtener más información, vea Usar el Asistente para limpieza del servidor.

La página de inicio del Asistente para limpieza del servidor WSUS.

Después de que notifica el número de elementos que ha quitado, finaliza la limpieza. Si no ves esta información devuelta en el servidor WSUS, es seguro suponer que la limpieza ha pasado el tiempo de espera. En ese caso, tendrá que iniciarlo de nuevo o usar la SQL alternativa.

El Asistente para la limpieza del servidor WSUS cuando haya terminado.

Después de que se hayan rechazado las actualizaciones reemplazadas, para obtener el mejor rendimiento, SUSDB debe volver a indexarse. Consulta la sección Reindexar la base de datos WSUS para obtener información relacionada.

Solución de problemas

¡Ayuda! My WSUS has been running for years without ever having maintenance done and the cleanup wizard keeps timing out!

Hay dos opciones diferentes aquí:

  1. Reinstale WSUS con una base de datos nueva. Hay una serie de advertencias relacionadas con esto, incluida la longitud de la sincronización inicial y los exámenes de cliente completos en SUSDB, frente a los exámenes diferenciales.

  2. Asegúrese de que tiene una copia de seguridad de la base de datos SUSDB y, a continuación, ejecute un nuevo índice. Cuando finalice, ejecute el siguiente script en SQL Server Management Studio o SQL Server Management Studio Express. Cuando termine, siga todas las instrucciones anteriores para ejecutar el mantenimiento. Este último paso es necesario porque el procedimiento almacenado solo quita las spDeleteUpdate actualizaciones no usadas y las revisiones de actualización.

Nota

Antes de ejecutar el script, siga los pasos del procedimiento almacenado spDeleteUpdate que se ejecuta lentamente para mejorar el rendimiento de la ejecución de spDeleteUpdate .

DECLARE @var1 INT
DECLARE @msg nvarchar(100)

CREATE TABLE #results (Col1 INT)
INSERT INTO #results(Col1) EXEC spGetObsoleteUpdatesToCleanup

DECLARE WC Cursor
FOR
SELECT Col1 FROM #results

OPEN WC
FETCH NEXT FROM WC
INTO @var1
WHILE (@@FETCH_STATUS > -1)
BEGIN SET @msg = 'Deleting' + CONVERT(varchar(10), @var1)
RAISERROR(@msg,0,1) WITH NOWAIT EXEC spDeleteUpdate @localUpdateID=@var1
FETCH NEXT FROM WC INTO @var1 END

CLOSE WC
DEALLOCATE WC

DROP TABLE #results

La ejecución Decline-SupersededUpdatesWithExclusionPeriod.ps1 script agota el tiempo de espera al conectarse al servidor WSUS, o se produce un error 401 mientras se ejecuta

Si se producen errores al intentar usar el script de PowerShell para rechazar actualizaciones reemplazadas, se puede ejecutar un script SQL en SUDB.

  1. Si Configuration Manager se usa junto con WSUS, comprueba las reglas de sustitución de las propiedades del componente de punto de actualización de software para ver la rapidez con la que expiran las actualizaciones reemplazadas, como inmediatamente o después de > X meses. Tome nota de esta configuración.

    Captura de pantalla de reglas de sustitución.

  2. Si no ha hecho una copia de seguridad de la base de datos SUSDB,haga esto antes de continuar.

  3. Use SQL Server Management Studio para conectarse a SUSDB.

  4. Ejecute la siguiente consulta. El número 90 de la línea que incluye debe corresponderse con las reglas de sustitución del paso 1 de este procedimiento y el número correcto de días que se alinea con el número de meses configurado en reglas de DECLARE @thresholdDays INT = 90 sustitución. Si se establece para que expire inmediatamente, el valor de la SQL consulta debe @thresholdDays establecerse en cero.

    -- Decline superseded updates in SUSDB; alternative to Decline-SupersededUpdatesWithExclusionPeriod.ps1
    DECLARE @thresholdDays INT = 90 -- Specify the number of days between today and the release date for which the superseded updates must not be declined (i.e., updates older than 90 days). This should match configuration of supersedence rules in SUP component properties, if ConfigMgr is being used with WSUS.
    DECLARE @testRun BIT = 0 -- Set this to 1 to test without declining anything.
    -- There shouldn't be any need to modify anything after this line.
    
    DECLARE @uid UNIQUEIDENTIFIER
    DECLARE @title NVARCHAR(500)
    DECLARE @date DATETIME
    DECLARE @userName NVARCHAR(100) = SYSTEM_USER
    
    DECLARE @count INT = 0
    
    DECLARE DU CURSOR FOR
      SELECT MU.UpdateID, U.DefaultTitle, U.CreationDate FROM vwMinimalUpdate MU
      JOIN PUBLIC_VIEWS.vUpdate U ON MU.UpdateID = U.UpdateId
    WHERE MU.IsSuperseded = 1 AND MU.Declined = 0 AND MU.IsLatestRevision = 1
      AND MU.CreationDate < DATEADD(dd,-@thresholdDays,GETDATE())
    ORDER BY MU.CreationDate
    
    PRINT 'Declining superseded updates older than ' + CONVERT(NVARCHAR(5), @thresholdDays) + ' days.' + CHAR(10)
    
    OPEN DU
    FETCH NEXT FROM DU INTO @uid, @title, @date
    WHILE (@@FETCH_STATUS > - 1)
    BEGIN
      SET @count = @count + 1
      PRINT 'Declining update ' + CONVERT(NVARCHAR(50), @uid) + ' (Creation Date ' + CONVERT(NVARCHAR(50), @date) + ') - ' + @title + ' ...'
      IF @testRun = 0
         EXEC spDeclineUpdate @updateID = @uid, @adminName = @userName, @failIfReplica = 1
      FETCH NEXT FROM DU INTO @uid, @title, @date
    END
    
    CLOSE DU
    DEALLOCATE DU
    
    PRINT CHAR(10) + 'Attempted to decline ' + CONVERT(NVARCHAR(10), @count) + ' updates.'
    
  5. Para comprobar el progreso, supervise la pestaña Mensajes en el panel de resultados.

¿Qué ocurre si averigo que necesito una de las actualizaciones que he rechazado?

Si decides que necesitas una de estas actualizaciones rechazadas en Configuration Manager, puedes obtenerla de nuevo en WSUS haciendo clic con el botón secundario en la actualización y seleccionando Aprobar. Cambia la aprobación a No aprobado y, a continuación, vuelve a sincronizar el SUP para devolver la actualización.

Pantalla Aprobar actualizaciones de WSUS.

Si la actualización ya no está en WSUS, se puede importar desde el Catálogo de Microsoft Update, si no ha expirado o quitado del catálogo.

Cómo importar actualizaciones en WSUS.

Automatización del mantenimiento de WSUS

Nota

Si usas Configuration Manager versión 1906 o una versión posterior, automatiza los procedimientos de limpieza habilitando las opciones de mantenimiento de WSUS en la configuración del punto de actualización de software del sitio de nivel superior. Estas opciones controlan todas las operaciones de limpieza que realiza el Asistente para la limpieza del servidor WSUS. Sin embargo, debes hacer una copia de seguridad y volver a indexar automáticamente la base de datos WSUS según una programación.

Las tareas de mantenimiento de WSUS se pueden automatizar, suponiendo que primero se cumplen algunos requisitos.

  1. Si nunca has ejecutado la limpieza de WSUS, debes realizar las dos primeras limpiezas manualmente. La segunda limpieza manual debe ejecutarse 30 días a partir del primero, ya que algunas actualizaciones y revisiones de actualización tardan 30 días en eliminarse. Hay motivos específicos por los que no quieres automatizar hasta después de la segunda limpieza. La primera limpieza probablemente se ejecutará más tiempo de lo normal. Por lo tanto, no puede saber cuánto tiempo llevará normalmente este mantenimiento. La segunda limpieza es un indicador mucho mejor de lo que es normal para las máquinas. Esto es importante porque debes averiguar cuánto tiempo tarda cada paso como línea base (también me gusta agregar espacio de 30 minutos) para que puedas determinar el tiempo de tu programación.

  2. Si tienes servidores WSUS descendentes, primero debes realizar el mantenimiento en ellos y, a continuación, realizar los servidores ascendentes.

  3. Para programar la reindexación de SUSDB, necesitará una versión completa de SQL Server. Windows Internal Database (WID) no tiene la capacidad de programar una tarea de mantenimiento a través de SQL Server Management Studio Express. Dicho esto, en los casos en los que se usa WID, puedes usar el Programador de tareas mencionado SQLCMD anteriormente. Si vas a esta ruta, es importante que no sincronices los servidores WSUS/SUP durante este período de mantenimiento. Si lo hace, es posible que los servidores de bajada acaben resincronizar todas las actualizaciones que acaba de intentar limpiar. Programo esto durante la noche antes de la sincronización de AM, por lo que tengo tiempo para comprobarlo antes de que se ejecute la sincronización.

Vínculos necesarios/útiles:

Script de limpieza de WSUS

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")` 
 | out-null 
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer(); 
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope; 
$cleanupScope.DeclineSupersededUpdates = $true        
$cleanupScope.DeclineExpiredUpdates = $true 
$cleanupScope.CleanupObsoleteUpdates = $true 
$cleanupScope.CompressUpdates = $true 
#$cleanupScope.CleanupObsoleteComputers = $true 
$cleanupScope.CleanupUnneededContentFiles = $true 
$cleanupManager = $wsus.GetCleanupManager(); 
$cleanupManager.PerformCleanup($cleanupScope);

Configurar la tarea de limpieza de WSUS en el Programador de tareas

Nota

Como se mencionó anteriormente, si usas configuration Manager versión actual de la rama 1906 o una versión posterior, automatiza los procedimientos de limpieza habilitando las opciones de mantenimiento de WSUS en la configuración del punto de actualización de software del sitio de nivel superior. Para servidores WSUS independientes o versiones anteriores de Configuration Manager, puedes seguir usando los siguientes pasos.

La entrada de blog del scripter de fin de semana mencionada en la sección anterior contiene instrucciones básicas y solución de problemas para este paso. Sin embargo, le seguiré el proceso en los siguientes pasos.

  1. Abra el Programador de tareas y seleccione Crear una tarea. En la pestaña General, establezca el nombre de la tarea, el usuario como el que desea ejecutar el script de PowerShell (la mayoría de los usuarios usan una cuenta de servicio). Seleccione Ejecutar si un usuario ha iniciado sesión o no y, a continuación, agregue una descripción si lo desea.

    WSUS Crea una pantalla de tareas.

  2. En la pestaña Acciones, agregue una nueva acción y especifique el programa o script que desea ejecutar. En este caso, necesitamos usar PowerShell y apuntarlo al archivo PS1 que queremos que se ejecute. Puedes usar el script de limpieza de WSUS. Este script realiza opciones de limpieza que configuration Manager no realiza en la versión actual de la rama 1906. Puedes descomprimrlos si usas WSUS independiente o una versión anterior de Configuration Manager. Si desea un registro, puede modificar la última línea del script de la siguiente manera:

    [reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
    $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
    $cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
    # $cleanupScope.DeclineSupersededUpdates = $true # Performed by CM1906
    # $cleanupScope.DeclineExpiredUpdates    = $true # Performed by CM1906
    # $cleanupScope.CleanupObsoleteUpdates   = $true # Performed by CM1906
    $cleanupScope.CompressUpdates          = $true
    $cleanupScope.CleanupObsoleteComputers = $true
    $cleanupScope.CleanupUnneededContentFiles = $true
    $cleanupManager = $wsus.GetCleanupManager();
    $cleanupManager.PerformCleanup($cleanupScope) | Out-File C:\WSUS\WsusClean.txt;
    

    Al guardar, se muestra una advertencia o FYI en el Programador de tareas. Puede omitir esta advertencia.

    WSUS agrega una línea de script para iniciar la tarea.

  3. En la pestaña Desencadenadores, establezca la programación una vez al mes o según la programación que desee. De nuevo, debes asegurarte de que no sincronices tu WSUS durante toda la limpieza y vuelvas a indexar el tiempo.

    Establece el desencadenador de edición de WSUS para la tarea.

  4. Establece cualquier otra condición o configuración que quieras retocar también. Al guardar la tarea, es posible que se le pidan las credenciales del usuario Ejecutar como.

  5. También puede usar estos pasos para configurar el script Decline-SupersededUpdatesWithExclusionPeriod.ps1 que se ejecute cada tres meses. Normalmente, esta secuencia de comandos se ejecuta antes de los demás pasos de limpieza, pero solo después de ejecutarlo manualmente y de asegurarme de que se completó correctamente. Ejecutaré a las 12:00 a.m. del primer domingo cada tres meses.

Configuración de la reindexación de SUSDB para WID con SQLCMD y el Programador de tareas

  1. Guarde el script reindexar la base de datos WSUS como un archivo .sql (por ejemplo, SUSDBMaint.sql).

  2. Crear una tarea básica y darle un nombre:

    Pantalla Asistente para crear tareas básicas de WSUS.

  3. Programe esta tarea para que se inicie aproximadamente 30 minutos después de que espera que la limpieza termine de ejecutarse. My cleanup is running at 1:00 AM every first Sunday. Se tardan unos 30 minutos en ejecutarse y le voy a dar otros 30 minutos antes de iniciar mi reindexación. Significa que programaría esta tarea para cada primer domingo a las 2:00 a.m., como se muestra aquí:

    Establezca la frecuencia de esa tarea en el Asistente para crear tareas básicas.

  4. Seleccione la acción para iniciar un programa. En el cuadro Programa/script, escriba el siguiente comando. El archivo especificado después del parámetro es la ruta de acceso -i al script SQL que guardó en el paso 1. El archivo especificado después del parámetro es donde desea colocar el -o registro. Aquí le mostramos un ejemplo:

    "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe" -S \\.\pipe\Microsoft##WID\tsql\query -i C:\WSUS\SUSDBMaint.sql -o c:\WSUS\reindexout.txt

    Aspecto del script en el Asistente para crear tareas básicas.

  5. You'll get a warning, similar to the one you got when creating the cleanup task. Seleccione para aceptar los argumentos y, a continuación, seleccione Finalizar para aplicar:

    Ventana emergente de confirmación del Programador de tareas.

  6. Puede probar el script forzándolo a ejecutarlo y revisando el registro en busca de errores. Si tiene problemas, el registro le explicará por qué. Por lo general, si se produce un error, la cuenta que ejecuta la tarea no tiene los permisos adecuados o el servicio WID no se inicia.

Configurar una tarea básica de mantenimiento programado en SQL para SUSDBs que no son WID

Nota

Debe ser administrador del sistema en SQL Server para crear o administrar planes de mantenimiento.

  1. Abre SQL Server Management Studio y conéctate a la instancia de WSUS. Expanda Administración, haga clic con el botón secundario en Planes de mantenimiento y, a continuación, seleccione Nuevo plan de mantenimiento. Asigne un nombre a su plan.

    Escribe un nombre para el plan de mantenimiento de WSUS.

  2. Seleccione subplan1 y, a continuación, asegúrese de que el cuadro de herramientas está en contexto:

    Asegúrese de que el cuadro de herramientas está en contexto.

  3. Arrastre y coloque la tarea Ejecutar T-SQL tarea de instrucción :

    Arrastre y coloque la tarea Ejecutar T-SQL tarea de instrucción.

  4. Haga clic con el botón secundario en él y seleccione Editar. Copia y pega el script de reindexación de WSUS y, a continuación, selecciona Aceptar:

    Copiar y pegar el script de reindexación de WSUS

  5. Programe esta tarea para que se ejecute unos 30 minutos después de que espera que la limpieza termine de ejecutarse. My cleanup is running at 1:00 AM every first Sunday. Se tardan unos 30 minutos en ejecutarse y le voy a dar otros 30 minutos antes de iniciar la reindexación. Significa que programaría esta tarea para que se ejecute cada primer domingo a las 2:00 a.m.

    Pantalla Nueva programación de trabajo de WSUS.

  6. Al crear el plan de mantenimiento, considere también la posibilidad de agregar una copia de seguridad de SUSDB al plan. Normalmente, primero se realiza una copia de seguridad y, a continuación, se vuelve a indexar. Puede agregar más tiempo a la programación.

En conclusión

Cuando se ejecuta en una jerarquía, la ejecución de limpieza de WSUS debe realizarse desde la parte inferior de la jerarquía hacia arriba. Sin embargo, al usar el script para rechazar actualizaciones reemplazadas, la ejecución debe realizarse de arriba abajo. La declinación de actualizaciones reemplazadas es realmente un tipo de adición a una actualización en lugar de una eliminación. Realmente estás agregando un tipo de aprobación en este caso.

Dado que no se puede realizar una sincronización durante la limpieza real, se recomienda programar o completar todas las tareas durante la noche. A continuación, compruebe su finalización a través del registro de la mañana siguiente, antes de la siguiente sincronización programada. Si se ha producido un error, el mantenimiento se puede volver a programar para la noche siguiente, una vez que se identifica y resuelve el problema subyacente.

Estas tareas pueden ejecutarse más rápido o más lento en función del entorno, y los intervalos de la programación deberían reflejarlo. Esperamos que sean más rápidos, ya que mi entorno de laboratorio tiende a ser un poco más lento que un entorno de producción normal. Soy un poco agresivo en los intervalos de los scripts de rechazo. Si el nivel 2 se superpone al nivel 3 unos minutos, no provocará ningún problema porque mi sincronización no está programada para ejecutarse.

No sincronizar impide que los rechazos fluyan accidentalmente a mis servidores WSUS de réplica de nivel 3 desde el nivel 2. Me he dado más tiempo entre el rechazo de Nivel3 y la limpieza de nivel 3, ya que definitivamente quiero asegurarme de que el script de rechazo finaliza antes de ejecutar la limpieza.

Plantea una pregunta común: Puesto que no estoy sincronizando, ¿por qué no debería ejecutar todas las limpiezas y reindexaciones al mismo tiempo?

La respuesta es que probablemente podrías hacerlo, pero no lo haría. Si mi compañero de trabajo en todo el mundo necesita ejecutar una sincronización, con esta programación minimizaría el riesgo de actualizaciones huérfanas en WSUS. Y puedo programar que se vuelva a ejecutar para finalizar la noche siguiente.

Hora Nivel Tareas
12:00 AM Nivel1:rechazar
12:15 AM Nivel 2:Rechazar
12:30 AM Nivel 3:rechazar
1:00 a.m. Limpieza de WSUS de nivel 3
2:00 a.m. Reindexación de nivel3 Limpieza de WSUS de nivel 2
3:00 AM Tier1-Cleanup Reindexación de nivel 2
4:00 AM Reindexación de nivel1

Nota

Si usas la versión 1906 actual de Configuration Manager o una versión posterior para realizar el mantenimiento de WSUS, Configuration Manager realiza la limpieza después de la sincronización mediante el enfoque de arriba abajo. En este escenario, puedes programar los trabajos de copia de seguridad y reindexación de la base de datos WSUS para que se ejecuten antes de la programación de sincronización configurada sin preocuparte por ninguno de los otros pasos, ya que Configuration Manager controlará todo lo demás.

Para obtener más información sobre el mantenimiento de SUP en Configuration Manager, consulta los siguientes artículos: