Você é um administrador do SharePoint que alterou o estado de bloqueio de um site de Somente Leitura para Desbloqueado, mas o site continua somente leitura para todos os usuários. Esse problema ocorre porque o SharePoint armazena em cache os estados de bloqueio e os aplica de forma assíncrona no farm. Este artigo explica a causa raiz no banco de dados de conteúdo e as etapas exatas para forçar a alteração do estado de bloqueio a ter efeito imediato.
Principais Conclusões: Forçando uma Atualização do Estado de Bloqueio no SharePoint
- SharePoint Management Shell > Set-SPSite -LockState: Use este cmdlet do PowerShell com o parâmetro -LockState para alterar o estado de bloqueio do site no nível do banco de dados.
- Central de administração do SharePoint > Sites ativos > URL do site > Configurações: A interface define um estado de bloqueio pendente que deve ser processado pelo trabalho do temporizador.
- Trabalho do temporizador “Atualização do Estado de Bloqueio do Site”: Este trabalho aplica o estado de bloqueio pendente; execute-o manualmente após uma atualização pela interface para forçar a alteração.
Por que o Estado de Bloqueio Não Altera Após uma Atualização do Administrador
O SharePoint armazena os estados de bloqueio do site em dois lugares: no banco de dados de conteúdo e no cache de objetos da coleção de sites. Quando você altera o estado de bloqueio pela interface da Central de administração do SharePoint, o sistema grava o novo valor no banco de dados de conteúdo, mas o marca como pendente. Um trabalho do temporizador chamado “Atualização do Estado de Bloqueio do Site” deve ser executado para aplicar a alteração ao cache de objetos da coleção de sites e atualizar os servidores web front-end.
A causa raiz de um estado de bloqueio travado é um atraso na agenda do trabalho do temporizador. Por padrão, o trabalho do temporizador “Atualização do Estado de Bloqueio do Site” é executado a cada 60 minutos. Se você precisa que a alteração tenha efeito imediato, deve aguardar o trabalho ou acioná-lo manualmente.
Outra causa é que a atualização pela interface falha silenciosamente quando o site está em um estado de bloqueio que impede gravações no banco de dados de conteúdo. Por exemplo, se você definir o estado de bloqueio como “Somente Leitura” e depois tentar desbloquear o site pela interface, a interface pode não conseguir gravar o comando de desbloqueio porque o próprio site está somente leitura. Nesse caso, você deve usar o PowerShell para ignorar a camada da interface.
Como Funciona o Cache do Estado de Bloqueio
Cada servidor web front-end armazena em cache o estado de bloqueio para desempenho. O cache é atualizado a cada 60 segundos por padrão. Mesmo após o trabalho do temporizador atualizar o banco de dados, o valor em cache em cada servidor ainda pode mostrar o estado antigo. É por isso que alguns usuários veem o site como bloqueado enquanto outros o veem como desbloqueado após a alteração.
Etapas para Alterar o Estado de Bloqueio do Site e Forçar a Atualização
Use o método que corresponde ao seu ambiente. O Método 1 funciona na maioria dos casos. Use o Método 2 quando a interface não responder ou quando o site estiver bloqueado como Somente Leitura e você não conseguir alterá-lo pela interface.
Método 1: Alterar o Estado de Bloqueio pela Interface e Executar o Trabalho do Temporizador Manualmente
- Abra a Central de administração do SharePoint
Acesse https://admin.microsoft.com/SharePoint. Faça login com uma conta de administrador do SharePoint. - Navegue até Sites ativos
Na navegação à esquerda, clique em Sites ativos. Encontre o site cujo estado de bloqueio está travado. Clique na URL do site para abrir o painel de detalhes. - Altere o estado de bloqueio
No painel de detalhes, clique em Configurações. Em Estado de bloqueio do site, selecione o novo estado: Desbloqueado para remover o bloqueio, Somente leitura para impedir edições ou Sem acesso para bloquear todos os usuários. Clique em Salvar. - Execute o trabalho do temporizador manualmente
No servidor SharePoint, abra a Administração Central do SharePoint. Vá para Monitoramento > Revisar definições de trabalho. Na lista, encontre o trabalho chamado Atualização do Estado de Bloqueio do Site. Clique no nome do trabalho. Na página de definição do trabalho, clique em Executar Agora. - Verifique o estado de bloqueio
Aguarde 60 segundos para o cache ser atualizado. Navegue até a URL do site. Confirme que o site agora mostra o estado de bloqueio correto.
Método 2: Alterar o Estado de Bloqueio Usando PowerShell
- Abra o SharePoint Management Shell
Em um servidor SharePoint, clique com o botão direito em SharePoint Management Shell e selecione Executar como administrador. - Obtenha o estado de bloqueio atual
Execute este comando para ver o estado atual:Get-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" | Select-Object Url, LockState
Substitua a URL pela URL da sua coleção de sites. - Defina o novo estado de bloqueio
Execute este comando para alterar o estado de bloqueio para Desbloqueado:Set-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" -LockState "Unlock"
Use"ReadOnly"ou"NoAccess"para outros estados. - Force a aplicação da alteração
Execute este comando para limpar o cache em todos os servidores front-end:Get-SPServer | ForEach-Object { $_.CacheReset() }
Esta ação requer privilégios de Administrador do Farm. - Verifique a alteração
Execute o comando Get-SPSite novamente. O valor de LockState deve corresponder ao que você definiu.
Se o Estado de Bloqueio Ainda Não Alterar
SharePoint retorna erro “Site está bloqueado” após desbloqueio
Se você ainda vir o erro após executar o trabalho do temporizador, o banco de dados de conteúdo pode ter um registro de estado de bloqueio corrompido. Execute este comando PowerShell para verificar o banco de dados diretamente:Get-SPSite -Identity "https://yourtenant.sharepoint.com/sites/yoursite" -Confirm:$false
Se o comando retornar um LockState como “Unlock” mas o site ainda aparecer como bloqueado, o problema está na linha do banco de dados de conteúdo. Entre em contato com o Suporte da Microsoft para reparar a linha.
Trabalho do temporizador “Atualização do Estado de Bloqueio do Site” não aparece na Administração Central
Este trabalho do temporizador é criado automaticamente quando você cria uma coleção de sites. Se estiver faltando, execute o seguinte comando PowerShell para criá-lo:New-SPTimerJob -Name "Site Lock State Update" -Type "Microsoft.SharePoint.Administration.SPLockStateTimerJob" -Schedule "Daily from 0:00 to 23:59 every 60 minutes"
Em seguida, execute o trabalho manualmente conforme descrito no Método 1.
Usuários em regiões diferentes veem estados de bloqueio diferentes
Isso é um atraso na propagação do cache. Após forçar a atualização, aguarde até 15 minutos para que todos os servidores front-end atualizem seu cache. Se o problema persistir, limpe o cache em cada servidor usando o comando PowerShell da etapa 4 do Método 1.
| Item | Interface da Central de Administração do SharePoint | PowerShell Set-SPSite |
|---|---|---|
| Opções de estado de bloqueio | Desbloqueado, Somente leitura, Sem acesso | Unlock, ReadOnly, NoAccess |
| Aplica a alteração imediatamente | Não, aguarda o trabalho do temporizador | Sim, no nível do banco de dados |
| Funciona quando o site está como Somente Leitura | Não, a interface não pode gravar em um site bloqueado | Sim, ignora a camada da interface |
| Requer conclusão do trabalho do temporizador | Sim | Não, mas o cache ainda precisa ser atualizado |
Use a interface para alterações programadas. Use o PowerShell quando o site estiver bloqueado como Somente Leitura ou quando você precisar que a alteração seja aplicada imediatamente.
Agora você pode alterar o estado de bloqueio em qualquer site do SharePoint e forçar a atualização sem esperar pela agenda padrão do trabalho do temporizador. Em seguida, revise a agenda do trabalho do temporizador “Atualização do Estado de Bloqueio do Site” na Administração Central e ajuste-a para ser executada com mais frequência se sua organização precisar de alterações rápidas no estado de bloqueio. Uma dica prática: sempre execute o comando Get-SPSite após uma alteração pela interface para confirmar que o valor do banco de dados foi atualizado antes de executar o trabalho do temporizador.