Guía completa sobre el mantenimiento de Microsoft 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 de 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 Configuration Manager o Con qué frecuencia debo ejecutar este mantenimiento. No es raro que los administradores de Configuration Manager de conciencia no sean conscientes de que se debe ejecutar el mantenimiento de WSUS. 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, se cierra la consola de WSUS y se pretende que no existe. Desafortunadamente, puede ser problemático para Configuration Manager clientes y el rendimiento general del servidor WSUS/SUP.
Con la comprensión de que este mantenimiento debe realizarse, se pregunta qué mantenimiento necesita hacer y con qué frecuencia debe hacerlo. La respuesta es que debe realizar el mantenimiento mensual. El mantenimiento es fácil y no tarda 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 realizó 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.
Para obtener más información sobre los pasos concisos y los scripts automáticos, consulte Mantenimiento manual y automático de bases de datos WSUS.
Mantener WSUS mientras se admite Configuration Manager versión de rama actual 1906 y versiones posteriores
Si usa Configuration Manager versión de rama actual 1906 o versiones posteriores, se recomienda habilitar 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. Debe 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.
Para obtener más información sobre el mantenimiento de actualizaciones de software en Configuration Manager, consulte Mantenimiento de actualizaciones de software.
Consideraciones importantes
Nota:
Si usa las características de mantenimiento que se han agregado en Configuration Manager, versión 1906, no es necesario tener en cuenta estos elementos, ya que Configuration Manager controla la limpieza después de cada sincronización.
Antes de iniciar el proceso de mantenimiento, lea toda la información e instrucciones de este artículo.
Cuando se usa WSUS junto con servidores de nivel inferior, los servidores WSUS se agregan de arriba abajo, pero se deben quitar de la parte inferior hacia arriba. Al sincronizar o agregar actualizaciones, van primero 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, debe empezar en la parte inferior de la jerarquía.
El mantenimiento de WSUS se puede realizar simultáneamente en varios servidores del mismo nivel. Al hacerlo, asegúrese de que se realiza un nivel antes de pasar al siguiente. Los pasos de limpieza y reindexación descritos a continuación deben ejecutarse en todos los servidores WSUS, independientemente de si son un servidor WSUS de réplica o no. Para obtener más información sobre cómo determinar si un servidor WSUS es una réplica, consulte Rechazar actualizaciones sustituidas.
Asegúrese de que los SUP no se sincronicen durante el proceso de mantenimiento, ya que puede provocar la pérdida de algún trabajo ya realizado. Compruebe la programación de sincronización sup y establézcala temporalmente en manual durante este proceso.
Si tiene varios SUP del sitio primario o de administración central (CAS) que no comparten SUSDB, considere el servidor WSUS que se sincroniza con el primer SUP del sitio como que reside en un nivel inferior al sitio. Por ejemplo, mi sitio de CAS tiene dos SUP:
- La denominada Nueva sincronización con Microsoft Update, sería mi nivel superior (nivel 1).
- El servidor con el nombre "2012" se sincroniza con el nuevo y se consideraría como de segundo nivel. Se puede limpiar al mismo tiempo que haría todos mis demás servidores de nivel 2, como el SUP único de mi sitio primario.
Realizar el mantenimiento de WSUS
Los pasos básicos necesarios para un mantenimiento de WSUS adecuado incluyen:
- Copia de seguridad de la base de datos WSUS
- Creación de índices personalizados
- Reindización de la base de datos de WSUS
- Rechazar actualizaciones reemplazadas y ejecutar el mantenimiento
- Asistente para la limpieza del servidor WSUS.
Copia de seguridad de la base de datos WSUS
Realice una copia de seguridad de la base de datos WSUS (SUSDB) mediante el método deseado. Para más información, vea Crear una copia de seguridad completa de base de datos.
Creación de índices personalizados
Este proceso es opcional, pero se recomienda, lo que mejora considerablemente el rendimiento durante las operaciones de limpieza posteriores.
Si usa Configuration Manager versión de rama actual 1906 o una versión posterior, se recomienda usar Configuration Manager para crear los índices. Para crear los índices, configure 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.
Si usa una versión anterior de Configuration Manager o servidores WSUS independientes, siga estos pasos para crear índices personalizados en la base de datos SUSDB. Para cada SUSDB, es un proceso único.
Asegúrese de que tiene una copia de seguridad de la base de datos SUSDB.
Use SQL Management Studio para conectarse a la base de datos SUSDB, de la misma manera que se describe en la sección Volver a indexar la base de datos WSUS .
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 se han creado anteriormente índices personalizados, al ejecutar el script de nuevo se producirá un error similar al siguiente:
Msj 1913, Nivel 16, Estado 1, Línea 1
Error en la operación porque ya existe un índice o estadísticas con el nombre "nclLocalizedPropertyID" en la tabla "dbo.tbLocalizedPropertyForRevision".
Reindización de la base de datos de WSUS
Para volver a indexar la base de datos WSUS (SUSDB), use reindexar el script T-SQL de base de datos WSUS .
Los pasos para conectarse a SUSDB y realizar la reindexación difieren, dependiendo de si SUSDB se ejecuta en SQL Server o Windows Internal Database (WID). Para determinar dónde se ejecuta SUSDB, compruebe el valor de la SQLServerName
entrada del Registro en el servidor WSUS ubicado en la HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup
subclave.
Si el valor contiene solo el nombre del servidor o server\instance, SUSDB se ejecuta en un SQL Server. Si el valor incluye la cadena ##SSEE
o ##WID
en ella, SUSDB se ejecuta en WID, como se muestra a continuación:
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 manera sencilla de determinar qué versión de SQL Server Management Studio Express instalar:
Windows Server 2012 y versiones posteriores
Vaya a
C:\Windows\WID\Log
y busque el registro de errores que contiene el número de versión.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) está ejecutando WID. Incluya el nivel de SP al buscar en el Centro de descarga de Microsoft SQL Server Management Studio Express.
de Windows Server 2008 R2 (KB3137691)
- Vaya a
C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG
y abra el último registro de errores con el Bloc de notas. En la parte superior, habrá un número de versión (por ejemplo, 9.00.4035.00 x64). 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 el nivel de Service Pack que se está ejecutando. Incluya el nivel de SP al buscar en el Centro de descarga de Microsoft SQL Server Management Studio Express.
- Vaya a
Después de instalar SQL Server Management Studio Express, inéctelo y escriba el nombre del servidor al que conectarse:
- Si el sistema operativo está 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), intente iniciar SSMS con la opción Ejecutar como administrador.
Si SUSDB se instaló en SQL Server
Si SUSDB se instaló en el SQL Server completo, 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 utilidad llamada sqlcmd
para ejecutar el script de reindexación. Para más información, consulte la documentación de PerfInsights.
Ejecutar el 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 termine, se mostrará un mensaje Query executed successfully (Consulta ejecutada correctamente ) en la barra de estado. Y el panel Resultados contendrá mensajes relacionados con los índices que se han vuelto a generar.
Rechazar actualizaciones reemplazadas y ejecutar el mantenimiento
Rechazar las actualizaciones sustituidas 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 de superseding y de que ya no se necesitan las reemplazadas. Configuration Manager incluye una limpieza independiente, que le permite expirar las actualizaciones sustituidas en función de los criterios especificados. Para más información, consulte los siguientes artículos:
La siguiente consulta SQL se puede ejecutar en la base de datos SUSDB para determinar rápidamente el número de actualizaciones sustituidas. Si el número de actualizaciones sustituidas es superior a 1500, puede provocar varios problemas relacionados con las actualizaciones de software en el servidor y en el cliente.
-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0
Si usa Configuration Manager versión de rama actual 1906 o una versión posterior, se recomienda rechazar automáticamente las actualizaciones sustituidas habilitando la opción Rechazar actualizaciones expiradas en WSUS según las reglas de sustitución en la configuración del punto de actualización de software para el sitio más alto.
Cuando use esta opción, puede ver cuántas actualizaciones se rechazaron revisando el archivo WsyncMgr.log una vez finalizado 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ándolo manualmente o configurando como tarea para ejecutarlo según una programación).
Si usa servidores WSUS independientes o una versión anterior de Configuration Manager, puede rechazar manualmente las actualizaciones sustituidas mediante la consola de WSUS. O bien, puede ejecutar este script de PowerShell. A continuación, copie y guarde el script como un archivo de script deDecline-SupersededUpdatesWithExclusionPeriod.ps1 .
Nota:
Este script se proporciona tal cual. Debe probarse completamente en un laboratorio antes de usarlo en producción. Microsoft no ofrece ninguna garantía con respecto al uso de este script de ninguna manera. Ejecute siempre el script con el -SkipDecline
parámetro primero para obtener un resumen de cuántas actualizaciones sustituidas se rechazarán.
Si Configuration Manager se establece en Expiración inmediata de actualizaciones sustituidas (consulte a continuación), el script de PowerShell se puede usar para rechazar todas las actualizaciones sustituidas. Debe realizarse en todos los servidores WSUS autónomos de la jerarquía de Configuration Manager/WSUS.
No es necesario ejecutar el script de PowerShell en servidores WSUS que se establecen como réplicas, como SUP de sitio secundario. Para determinar si un servidor WSUS es una réplica, compruebe la configuració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 sustituidas. En este caso, serían 60 días desde que las propiedades del componente SUP estén configuradas para esperar dos meses antes de que expiren las actualizaciones sustituidas:
Las siguientes líneas de comandos muestran las distintas formas en que se puede ejecutar el script de PowerShell:
Nota:
Al ejecutar el script en el servidor WSUS, use LOCALHOST
en lugar del elemento real SERVERNAME
.
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 y -SkipDecline
-ExclusionPeriod 60
para recopilar información sobre las actualizaciones en el servidor WSUS y cuántas actualizaciones se podrían rechazar:
Ejecutar el script con -ExclusionPeriod 60, para rechazar las actualizaciones sustituidas anteriores a 60 días:
Los indicadores de salida y progreso se muestran mientras se ejecuta el script. Tenga en cuenta el archivo SupersededUpdates.csv , que contendrá una lista de todas las actualizaciones rechazadas por el script:
Nota:
Si se producen problemas al intentar usar el script de PowerShell anterior para rechazar las actualizaciones sustituidas, consulte la sección Ejecución del script de Decline-SupersededUpdatesWithExclusionPeriod.ps1 agota el tiempo de espera al conectarse al servidor WSUS o se produce un error 401 mientras se ejecuta para los pasos de solución de problemas.
Una vez que se han rechazado las actualizaciones sustituidas, para obtener el mejor rendimiento, SUSDB debe volver a indexarse. Para obtener información relacionada, consulte Reindexación de la base de datos WSUS.
Asistente para la limpieza del servidor WSUS.
El Asistente para limpieza del servidor WSUS proporciona opciones para limpiar los siguientes elementos:
- Actualizaciones y revisiones de actualizaciones sin usar (también conocidas como actualizaciones obsoletas)
- Equipos que no se comunican con el servidor
- Archivos de actualización innecesarios
- Actualizaciones expiradas
- Actualizaciones sustituidas
En un entorno de Configuration Manager, los equipos que no se pongan en contacto con el servidor y las opciones de archivos de actualización innecesarios no son pertinentes 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 actualizaciones de software. Si tiene configurada una de estas opciones, considere la posibilidad de automatizar la limpieza del servidor WSUS para realizar la limpieza de estas dos opciones.
Si usa Configuration Manager versión de rama actual 1906 o una versión posterior, habilitar la opción Rechazar actualizaciones expiradas en WSUS según las reglas de sustitución controla la disminución de las actualizaciones expiradas y las actualizaciones sustituidas 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 1906 de la rama actual, se controla la limpieza de actualizaciones y revisiones de actualizaciones sin usar (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 Configuration Manager limpiar la base de datos WSUS.
Si nunca ha limpiado las actualizaciones obsoletas de la base de datos WSUS antes, esta tarea puede agotar el tiempo de espera. Puede revisar WsyncMgr.log para obtener más información y ejecutar manualmente el script SQL especificado en AYUDA. Mi WSUS se ha estado ejecutando durante años sin necesidad de realizar mantenimiento y el asistente para limpieza mantiene el tiempo de espera una vez, lo que permitiría que los intentos posteriores de Configuration Manager se ejecutaran correctamente. Para obtener más información sobre la limpieza y el mantenimiento de WSUS en Configuration Manager, consulte los documentos.
Para servidores WSUS independientes, o si usa una versión anterior de Configuration Manager, se recomienda ejecutar periódicamente el Asistente para limpieza de WSUS. Si el Asistente para limpieza del servidor WSUS nunca se ha ejecutado y WSUS ha estado en producción durante un tiempo, la limpieza puede agotar el tiempo de espera. En ese caso, vuelva a indexar primero con los pasos 2 y 3 y, a continuación, ejecute la limpieza con solo la opción Actualizaciones y revisiones de actualizaciones no utilizadas activada.
Si nunca ha ejecutado el Asistente para limpieza de WSUS, la ejecución de la limpieza con actualizaciones y revisiones de actualizaciones sin usar puede requerir algunos pasos. Si se agota el tiempo de espera, ejecútelo de nuevo hasta que se complete y, a continuación, ejecute cada una de las otras opciones de una en una. Por último, realice un pase completo con todas las opciones activadas. Si se siguen produciendo tiempos de espera, consulte la alternativa de SQL Server en AYUDA. Mi WSUS se ha estado ejecutando durante años sin tener que realizar mantenimiento y el asistente de limpieza no deja de agotar el tiempo de espera. El Asistente para limpieza del servidor o la alternativa de SQL pueden tardar varias horas o días en ejecutarse hasta la finalización.
El Asistente para limpieza del servidor WSUS se ejecuta desde la consola de WSUS. Se encuentra en Opciones, como se muestra aquí:
Para obtener más información, consulte Visualizar el registro de errores de SQL Server.
Una vez que notifica el número de elementos que ha quitado, finaliza la limpieza. Si no ve esta información devuelta en el servidor WSUS, es seguro suponer que se agotó el tiempo de espera de la limpieza. En ese caso, tendrá que volver a iniciarlo o usar la alternativa de SQL.
Una vez que se han rechazado las actualizaciones sustituidas, para obtener el mejor rendimiento, SUSDB debe volver a indexarse. Consulte la sección Reindexación de la base de datos WSUS para obtener información relacionada.
Solución de problemas
HELP Mi WSUS se ha estado ejecutando durante años sin tener que realizar mantenimiento y el asistente de limpieza no deja de agotar el tiempo de espera
Hay dos opciones diferentes aquí:
Vuelva a instalar 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.
Asegúrese de que tiene una copia de seguridad de la base de datos SUSDB y, a continuación, ejecute una reindexación. Cuando se complete, ejecute el siguiente script en SQL Server Management Studio o SQL Server Management Studio Express. Cuando finalice, siga todas las instrucciones anteriores para ejecutar el mantenimiento. Este último paso es necesario porque el
spDeleteUpdate
procedimiento almacenado solo quita las actualizaciones no utilizadas y las revisiones de actualización.
Nota:
Antes de ejecutar el script, siga los pasos descritos en El procedimiento almacenado spDeleteUpdate 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 del script de Decline-SupersededUpdatesWithExclusionPeriod.ps1 agota el tiempo de espera al conectarse al servidor WSUS o se produce un error 401 durante la ejecución
Si se producen errores al intentar usar el script de PowerShell para rechazar las actualizaciones sustituidas, se puede ejecutar un script SQL alternativo en SUDB.
Si configuration Manager se usa junto con WSUS, consulte Reglas de sustitución de propiedades>de componentes 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. Anote este nombre.
Si no ha hecho una copia de seguridad de la base de datos SUSDB, hágalo antes de continuar.
Usar SQL Server Management Studio Express.
Ejecute la consulta siguiente. El número 90 de la línea que incluye
DECLARE @thresholdDays INT = 90
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 sustitución. Si se establece para que expire inmediatamente, el valor de la consulta SQL de@thresholdDays
debe 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.'
Para comprobar el progreso, supervise la pestaña Mensajes en el panel Resultados .
¿Qué ocurre si averigüo que necesitaba una de las actualizaciones que rechace?
Si decide que necesita una de estas actualizaciones rechazadas en Configuration Manager, puede volver a obtenerla en WSUS haciendo clic con el botón derecho en la actualización y seleccionando Aprobar. Cambie la aprobación a No aprobada y, a continuación, vuelva a sincronizar el SUP para volver a incluir la actualización.
Si la actualización ya no está en WSUS, se puede importar desde el catálogo de Microsoft Update, si no ha expirado o se ha quitado del catálogo.
Automatización del mantenimiento de WSUS
Nota:
Si usa Configuration Manager versión 1906 o una versión posterior, automatice 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 limpieza del servidor WSUS. Sin embargo, debe realizar 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 cumplan algunos requisitos.
Si nunca ha ejecutado la limpieza de WSUS, debe realizar las dos primeras limpiezas manualmente. La segunda limpieza manual debe ejecutarse 30 días desde la primera, ya que algunas actualizaciones y revisiones de actualización tardan 30 días en agotarse. Hay razones específicas por las que no quiere automatizar hasta después de la segunda limpieza. La primera limpieza probablemente se ejecutará más de lo normal. Por lo tanto, no puede juzgar cuánto tiempo tardará normalmente este mantenimiento. La segunda limpieza es un indicador mucho mejor de lo que es normal para las máquinas. Esto es importante porque tiene que averiguar cuánto tiempo tarda cada paso como línea base (también me gusta agregar aproximadamente 30 minutos de espacio de ondulación) para que pueda determinar el tiempo de su programación.
Si tiene servidores WSUS de nivel inferior, primero tendrá que realizar mantenimiento en ellos y, a continuación, realizar los servidores ascendentes.
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, puede usar el Programador de tareas con
SQLCMD
lo mencionado anteriormente. Si realiza esta ruta, es importante que no sincronice los servidores o SUP de WSUS durante este período de mantenimiento. Si lo hace, es posible que los servidores de nivel inferior terminen resincronizar todas las actualizaciones que acaba de intentar limpiar. Programo esto de la noche a la mañana antes de mi sincronización de AM, por lo que tengo tiempo para comprobarlo antes de que se ejecute mi sincronización.
Vínculos necesarios o útiles:
- Volver a indexar la base de datos wsus
- Opción de configuración del servidor XPs del agente
- Scripter de fin de semana: use el Programador de tareas de Windows para ejecutar un script de Windows PowerShell
Script de limpieza de WSUS
Nota:
Al ejecutar el script en el servidor WSUS, use LOCALHOST
en lugar del elemento real SERVERNAME
. Además, reemplace por PORT
el usado.
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")`
| out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT);
$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);
Configuración de la tarea Limpieza de WSUS en el Programador de tareas
Nota:
Como se mencionó anteriormente, si usa Configuration Manager versión de rama actual 1906 o una versión posterior, automatice 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, puede seguir usando los pasos siguientes.
La entrada de blog Weekend Scripter mencionada en la sección anterior contiene instrucciones básicas y solución de problemas para este paso. Sin embargo, le guiaré a través del proceso en los pasos siguientes.
Abra el Programador de tareas y seleccione Crear una tarea. En la pestaña General , establezca el nombre de la tarea, el usuario que desea ejecutar el script de PowerShell como (la mayoría de las personas 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.
En la pestaña Acciones , agregue una nueva acción y especifique el programa o script que desea ejecutar. En este caso, debemos usar PowerShell y apuntarlo al archivo PS1 que queremos que ejecute. Puede usar el script de limpieza de WSUS. Este script realiza opciones de limpieza que Configuration Manager rama actual versión 1906 no lo hace. Puede quitar la marca de comentario si usa 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:
Nota:
Al ejecutar el script en el servidor WSUS, use
LOCALHOST
en lugar del elemento realSERVERNAME
. Además, reemplace porPORT
el usado.[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT); $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, obtendrá una advertencia o FYI en el Programador de tareas. Puede pasarlos por alto.
En la pestaña Desencadenadores , establezca la programación para una vez al mes o en cualquier programación que desee. De nuevo, debe asegurarse de que no sincroniza WSUS durante toda la limpieza y el tiempo de reindexación.
Establezca cualquier otra condición o configuración que quiera ajustar también. Al guardar la tarea, es posible que se le pidan las credenciales del usuario de ejecución .
También puede usar estos pasos para configurar el script deDecline-SupersededUpdatesWithExclusionPeriod.ps1 que se ejecutará cada tres meses. Normalmente configuro este script para que se ejecute antes de los otros pasos de limpieza, pero solo después de ejecutarlo manualmente y asegurarse de que se completó correctamente. Correré a las 12:00 am el primer domingo cada tres meses.
Configuración de la reindexación de SUSDB para WID mediante SQLCMD y el Programador de tareas
Guarde reindexar el script de base de datos WSUS como un archivo .sql (por ejemplo, SUSDBMaint.sql).
Cree una tarea básica y asígnele un nombre:
Programe esta tarea para que se inicie unos 30 minutos después de esperar que la limpieza termine de ejecutarse. Mi limpieza se ejecuta a la 1:00 AM cada primer domingo. Tarda unos 30 minutos en ejecutarse y voy a darle otros 30 minutos antes de iniciar mi reindexación. Significa que programaría esta tarea para cada primer domingo a las 2:00 AM, como se muestra aquí:
Seleccione la acción Iniciar un programa. En el cuadro Programa o script , escriba el siguiente comando. El archivo especificado después del
-i
parámetro es la ruta de acceso al script SQL que guardó en el paso 1. El archivo especificado después del-o
parámetro es donde desea que se coloque el registro. Este es 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
Recibirá una advertencia similar a la que obtuvo al crear la tarea de limpieza. Seleccione Sí para aceptar los argumentos y, a continuación, seleccione Finalizar para aplicar:
Puede probar el script forzándolo a ejecutarse y revisando el registro en busca de errores. Si tiene problemas, el registro le indicará por qué. Normalmente, si se produce un error, la cuenta que ejecuta la tarea no tiene los permisos adecuados o el servicio WID no se inicia.
Configuración de una tarea básica de mantenimiento programado en SQL para SUSDB que no son WID
Nota:
Debe ser administrador del sistema en SQL Server para crear o administrar planes de mantenimiento.
Inicie Microsoft SQL Server Management Studio y conéctese a la instancia del servidor local. Expanda Administración, haga clic con el botón derecho en Planes de mantenimiento y, a continuación, seleccione Nuevo plan de mantenimiento. Asigne un nombre al plan.
Seleccione subplan1 y, a continuación, asegúrese de que el cuadro de herramientas está en contexto:
Arrastre y suelte la Tarea Ejecutar instrucción T-SQL.
Haga clic con el botón derecho en el archivo Windows.edb y seleccione Propiedades. Copie y peque el script de reindexar WSUS y haga clic en Aceptar.
Programe esta tarea para que se ejecute unos 30 minutos después de esperar que la limpieza termine de ejecutarse. Mi limpieza se ejecuta a la 1:00 AM cada primer domingo. Tarda unos 30 minutos en ejecutarse y le voy a dar otros 30 minutos antes de empezar a volver a indexar. Significa que programaría esta tarea para que se ejecute cada primer domingo a las 2:00 AM.
Al crear el plan de mantenimiento, considere la posibilidad de agregar también una copia de seguridad del SUSDB al plan. Normalmente hago una copia de seguridad en primer lugar y, a continuación, se vuelve a indexar. Puede agregar más tiempo a la programación.
Resumen
Al ejecutarla 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 las actualizaciones sustituidas, la ejecución debe realizarse de arriba abajo. La disminución de las actualizaciones sustituidas es realmente un tipo de adición a una actualización en lugar de una eliminación. En este caso, está agregando un tipo de aprobación .
Dado que una sincronización no se puede realizar durante la limpieza real, se recomienda programar o completar todas las tareas durante la noche. A continuación, compruebe su finalización mediante el registro de la mañana siguiente, antes de la siguiente sincronización programada. Si se produce un error, el mantenimiento se puede reprogramar para la noche siguiente, una vez identificado y resuelto el problema subyacente.
Estas tareas pueden ejecutarse más rápido o más lento en función del entorno, y el tiempo de la programación debe reflejarlo. Esperemos 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 con el tiempo 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 evita que las disminuciones fluyan accidentalmente a mis servidores WSUS de réplica de nivel 3 desde el nivel 2. Me he dado tiempo adicional entre el rechazo de nivel3 y la limpieza de nivel 3, ya que definitivamente quiero asegurarme de que el script de rechazo finalice antes de ejecutar mi limpieza.
Se plantea una pregunta común: como no estoy sincronizando, ¿por qué no debería ejecutar todas las limpiezas y volver a indexar al mismo tiempo?
La respuesta es que probablemente podrías, pero yo no. 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 vuelva a ejecutarse hasta que termine la noche siguiente.
Time | Nivel | Tareas |
---|---|---|
12:00 a. m. | Reducción de nivel 1 | |
0:15 | Reducción de nivel 2 | |
0:30 | Reducción de nivel 3 | |
1:00 | Limpieza de WSUS de nivel 3 | |
02:00 | Reindexación de nivel 3 | Limpieza de WSUS de nivel 2 |
3:00 a. m. | Tier1-Cleanup | Reindexación de nivel 2 |
4:00 a.m. | Reindexación de nivel 1 |
Nota:
Si usa Configuration Manager versión de rama actual 1906 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, puede programar que los trabajos de copia de seguridad y reindexación de la base de datos WSUS se ejecuten antes de la programación de sincronización configurada sin preocuparse por ninguno de los demás pasos, ya que Configuration Manager controlará todo lo demás.
Para obtener más información sobre un espacio de nombres separado, consulte los siguientes artículos: