Usted es un administrador de SharePoint que ha cambiado el estado de bloqueo de un sitio de Solo lectura a Desbloquear, pero el sitio sigue siendo de solo lectura para todos los usuarios. Este problema ocurre porque SharePoint almacena en caché los estados de bloqueo y los aplica de forma asincrónica en la granja. Este artículo explica la causa raíz en la base de datos de contenido y los pasos exactos para forzar que el cambio de estado de bloqueo surta efecto de inmediato.
Conclusiones clave: Forzar una actualización del estado de bloqueo en SharePoint
- SharePoint Management Shell > Set-SPSite -LockState: Use este cmdlet de PowerShell con el parámetro -LockState para cambiar el estado de bloqueo del sitio a nivel de base de datos.
- Centro de administración de SharePoint > Sitios activos > URL del sitio > Configuración: La interfaz de usuario establece un estado de bloqueo pendiente que debe ser procesado por el trabajo de temporizador.
- Trabajo de temporizador “Site Lock State Update”: Este trabajo aplica el estado de bloqueo pendiente; ejecútelo manualmente después de una actualización de la interfaz de usuario para forzar el cambio.
Por qué el estado de bloqueo no cambia después de una actualización de administrador
SharePoint almacena los estados de bloqueo del sitio en dos lugares: la base de datos de contenido y la caché de objetos de la colección de sitios. Cuando cambia el estado de bloqueo a través de la interfaz de usuario del centro de administración de SharePoint, el sistema escribe el nuevo valor en la base de datos de contenido pero lo marca como pendiente. Un trabajo de temporizador llamado “Site Lock State Update” debe ejecutarse para aplicar el cambio a la caché de objetos de la colección de sitios y actualizar los servidores web front-end.
La causa raíz de un estado de bloqueo atascado es un retraso en la programación del trabajo de temporizador. De forma predeterminada, el trabajo de temporizador “Site Lock State Update” se ejecuta cada 60 minutos. Si necesita que el cambio surta efecto de inmediato, debe esperar a que se ejecute el trabajo o activarlo manualmente.
Otra causa es que la actualización de la interfaz de usuario falla silenciosamente cuando el sitio está en un estado de bloqueo que impide la escritura en la base de datos de contenido. Por ejemplo, si establece el estado de bloqueo en “Solo lectura” y luego intenta desbloquear el sitio a través de la interfaz de usuario, es posible que la interfaz no pueda escribir el comando de desbloqueo porque el sitio en sí es de solo lectura. En este caso, debe usar PowerShell para omitir la capa de la interfaz de usuario.
Cómo funciona la caché del estado de bloqueo
Cada servidor web front-end almacena en caché el estado de bloqueo por motivos de rendimiento. La caché se actualiza cada 60 segundos de forma predeterminada. Incluso después de que el trabajo de temporizador actualice la base de datos, el valor en caché en cada servidor puede mostrar el estado anterior. Esto explica por qué algunos usuarios ven el sitio como bloqueado mientras que otros lo ven como desbloqueado después del cambio.
Pasos para cambiar el estado de bloqueo del sitio y forzar la actualización
Use el método que se ajuste a su entorno. El método 1 funciona en la mayoría de los casos. Use el método 2 cuando la interfaz de usuario no responda o cuando el sitio esté bloqueado como Solo lectura y no pueda cambiarlo a través de la interfaz de usuario.
Método 1: Cambiar el estado de bloqueo a través de la interfaz de usuario y ejecutar el trabajo de temporizador manualmente
- Abra el centro de administración de SharePoint
Vaya a https://admin.microsoft.com/SharePoint. Inicie sesión con una cuenta de administrador de SharePoint. - Navegue a Sitios activos
En el panel de navegación izquierdo, haga clic en Sitios activos. Busque el sitio cuyo estado de bloqueo está atascado. Haga clic en la URL del sitio para abrir el panel de detalles. - Cambie el estado de bloqueo
En el panel de detalles, haga clic en Configuración. En Estado de bloqueo del sitio, seleccione el nuevo estado: Desbloquear para quitar el bloqueo, Solo lectura para evitar ediciones, o Sin acceso para bloquear a todos los usuarios. Haga clic en Guardar. - Ejecute el trabajo de temporizador manualmente
En el servidor de SharePoint, abra Administración central de SharePoint. Vaya a Supervisión > Revisar definiciones de trabajos. En la lista, busque el trabajo llamado Site Lock State Update. Haga clic en el nombre del trabajo. En la página de definición del trabajo, haga clic en Ejecutar ahora. - Verifique el estado de bloqueo
Espere 60 segundos para que la caché se actualice. Navegue a la URL del sitio. Confirme que el sitio ahora muestra el estado de bloqueo correcto.
Método 2: Cambiar el estado de bloqueo usando PowerShell
- Abra SharePoint Management Shell
En un servidor de SharePoint, haga clic derecho en SharePoint Management Shell y seleccione Ejecutar como administrador. - Obtenga el estado de bloqueo actual
Ejecute este comando para ver el estado actual:Get-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" | Select-Object Url, LockState
Reemplace la URL con la URL de su colección de sitios. - Establezca el nuevo estado de bloqueo
Ejecute este comando para cambiar el estado de bloqueo a Desbloquear:Set-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" -LockState "Unlock"
Use"ReadOnly"o"NoAccess"para otros estados. - Fuerce la aplicación del cambio
Ejecute este comando para limpiar la caché en todos los servidores front-end:Get-SPServer | ForEach-Object { $_.CacheReset() }
Esta acción requiere privilegios de administrador de la granja. - Verifique el cambio
Ejecute el comando Get-SPSite nuevamente. El valor de LockState debe coincidir con el que estableció.
Si el estado de bloqueo aún no cambia
SharePoint devuelve el error “El sitio está bloqueado” después de desbloquear
Si aún ve el error después de ejecutar el trabajo de temporizador, la base de datos de contenido puede tener un registro de estado de bloqueo corrupto. Ejecute este comando de PowerShell para verificar la base de datos directamente:Get-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" -Confirm:$false
Si el comando devuelve un LockState de “Unlock” pero el sitio aún aparece como bloqueado, el problema está en la fila de la base de datos de contenido. Contacte con el soporte de Microsoft para reparar la fila.
El trabajo de temporizador “Site Lock State Update” no aparece en Administración central
Este trabajo de temporizador se crea automáticamente cuando crea una colección de sitios. Si falta, ejecute el siguiente comando de PowerShell para crearlo:New-SPTimerJob -Name "Site Lock State Update" -Type "Microsoft.SharePoint.Administration.SPLockStateTimerJob" -Schedule "Daily from 0:00 to 23:59 every 60 minutes"
Luego ejecute el trabajo manualmente como se describe en el Método 1.
Usuarios en diferentes regiones ven diferentes estados de bloqueo
Esto es un retraso en la propagación de la caché. Después de forzar la actualización, espere hasta 15 minutos para que todos los servidores front-end actualicen su caché. Si el problema persiste, limpie la caché en cada servidor usando el comando de PowerShell del Método 1, paso 4.
| Elemento | Interfaz de usuario del Centro de administración de SharePoint | PowerShell Set-SPSite |
|---|---|---|
| Opciones de estado de bloqueo | Desbloquear, Solo lectura, Sin acceso | Unlock, ReadOnly, NoAccess |
| Aplica el cambio inmediatamente | No, espera el trabajo de temporizador | Sí, a nivel de base de datos |
| Funciona cuando el sitio está en Solo lectura | No, la interfaz no puede escribir en un sitio bloqueado | Sí, omite la capa de la interfaz |
| Requiere que se complete el trabajo de temporizador | Sí | No, pero la caché aún necesita actualizarse |
Use la interfaz de usuario para cambios programados. Use PowerShell cuando el sitio esté bloqueado como Solo lectura o cuando necesite que el cambio se aplique de inmediato.
Ahora puede cambiar el estado de bloqueo en cualquier sitio de SharePoint y forzar que la actualización surta efecto sin esperar la programación predeterminada del trabajo de temporizador. A continuación, revise la programación del trabajo de temporizador “Site Lock State Update” en Administración central y ajústela para que se ejecute con más frecuencia si su organización necesita cambios rápidos en el estado de bloqueo. Un consejo práctico: ejecute siempre el comando Get-SPSite después de un cambio en la interfaz de usuario para confirmar que el valor de la base de datos se actualizó antes de ejecutar el trabajo de temporizador.