Desabilitando temporariamente o Limite do Modo de Exibição de Lista em uma lista grande
Desabilitando temporariamente o Limite do Modo de Exibição de Lista em uma lista grande
Texto:
No SharePoint 2010, alguns novos limites foram adicionados para proteger os servidores e outros usuários contra operações caras executadas acidentalmente por outras pessoas. Para obter uma lista completa das restrições e dos limites do software SharePoint 2010, clique aqui https://technet.microsoft.com/en-us/sharepoint/ff601870.aspx. Se você quiser saber mais sobre o que significam os limites diferentes, clique aqui para ler o tópico de ajuda https://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-with-many-items-HA010378155.aspx?redir=0 . Para obter uma análise mais detalhada dos recursos que o ajudam a gerenciar listas grandes e as práticas recomendadas envolvidas, leia este white paper sobre o design de grandes listas e maximização do desempenho de listas https://technet.microsoft.com/en-us/library/ff608068(office.14).aspx .
O Limite do Modo de Exibição de Lista é um dos limites que se enquadra nas configurações de "limitação de recursos" para cada aplicativo Web que pode ser gerenciado na Administração Central. Ele é definido como 5.000 por padrão; o que significa que qualquer modo de exibição ou consulta que tente processar mais de 5.000 itens de cada vez será bloqueado pelo servidor do SharePoint. Por exemplo, um modo de exibição que seja filtrado em uma coluna não indexada em uma lista que tenha 5.001 itens receberá uma mensagem informando o usuário de que a consulta foi bloqueada pelo Limite do Modo de Exibição de Lista e, se houver uma janela de tempo diária definida, a mensagem também informará as horas durante as quais essa operação será permitida.
Logo após a atualização, alguns usuários poderão descobrir que não conseguem acessar seus dados por meio dos modos de exibição que já existiam; e, para acessar os dados da maneira como desejam (por exemplo, classificados por uma coluna chamada "cor"), eles deverão adicionar um índice à lista grande. No entanto, continuarão executando no Limite do Modo de Exibição de Lista, portanto, não poderão executar essa tarefa, a menos que:
- Eles esperem até a janela de tempo diária permitida pelo administrador, caso esteja configurada e ativada. Por padrão, a janela de tempo diária não está definida porque precisa ser uma decisão consciente por parte do administrador para descobrir quais horários funcionam melhor como "fora do horário de pico" para a organização. Esse é o procedimento recomendado, mas às vezes não será suficiente se o usuário precisar acessar esses dados imediatamente.
- O administrador do farm gera o Limite do Modo de Exibição de Lista para um número muito alto, de modo que todos que tiverem uma lista grande possam acessar todos os modos de exibição. Isso não deve ser feito, pois representa um alto risco para a integridade e a estabilidade do servidor e, em vez de resolver o problema para o menor número de pessoas que o tiverem, tem o potencial de criar problemas para todos os outros usuários, incentivando modos de exibição e consultas mal construídos.
- O administrador concede à lista específica do usuário uma isenção temporária do Limite do Modo de Exibição de Lista. Somente é possível fazer essa isenção programaticamente. Mostrarei aqui como fazer isso e como suspender a isenção quando o período especificado para os usuários estiver ativo. Eu recomendo que você conceda essa exceção de modo muito conservador e não deixe-a ativa por mais tempo do que o necessário. Na maioria dos casos, dar aos usuários uma semana para corrigir seus modos de exibição ou código personalizado deve ser mais do que suficiente.
Para desabilitar o limite do modo de exibição de lista para uma determinada lista, você pode usar o modelo de objetos para editar a propriedade da lista "EnableThrottling" como false (o padrão é true). O código abaixo mostra como fazer isso para uma determinada lista ou para todas as listas em um certo site. É melhor conceder essa isenção somente para listas específicas, em vez de a um site inteiro, pois esse fornecimento granular facilita manter o controle do que pode causar um desempenho fraco do servidor, bem como impor a importância de corrigir as listas assim que possível para os usuários finais.
Aqui está um script escrito por Chris Clark, um profissional de testes da equipe do SharePoint, para executar essa alteração. Para inverter a alteração (isto é, remover a exceção em uma lista ou todas as listas na Web), basta alterar essa linha:
$list.EnableThrottling = $false
to:
$list.EnableThrottling = $true
###########################################################################
# MakeExceptionLIst Script
# OnFailure: NONE
# OnSuccess: Changes SPList settings to make one or more lists under an SPWeb Exception Lists
#
# Input Parameters:
# - WebUrl ~ The URL of the SPWeb which contains the lists to be made exception lists
# - ListName (Optional) ~ The name of the list to make an exception list
#
# Ex:
# makeexceptionlist.ps1 -WebUrl https://localhost -ListName "Shared Documents"
# makeexceptionlist.ps1 -WebUrl https://localhost/sites/site1 -ListName "*"
#
# Exit code rule:
# On success, exit 0
# On failure, if no other scripts depend on this, exit a none-zero value
#
# Do not use "return" to give the caller exit code, as this cannot be
# captured by the caller process.
###########################################################################
Param([string]$WebUrl = "", [string]$ListName = "")
# Add Sharepoint pssnapin
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
###########################################################################
#
# Turn off/on list throttling on selected list
#
###########################################################################
Function UpdateList($list)
{
$listname = $list.Title
Write-Host "Making list $listname an exception list"
$list.EnableThrottling = $false
$list.Update()
}
###########################################################################
#
# Retrieve relevant objects (SPWeb, SPList) for operation and call Update
#
###########################################################################
$web = Get-SPWeb $WebUrl
if( $web -eq $NULL )
{
Write-Host "Web not found. Exiting"
exit 1;
}
if ( $ListName -eq "*" )
{
Write-Host "Locating all Lists under web..."
$lists = $web.Lists
foreach( $list in $lists )
{
UpdateList( $list )
}
}
elseif ( $ListName -ne "" )
{
Write-Host "Locating List < $ListName >..."
$list = $web.Lists[$ListName]
if ( $list -ne $NULL )
{
Write-Host "List found!"
UpdateList( $list )
}
else
{
Write-Host "List not found. Exiting"
exit 1;
}
}
else
{
Write-Host "Invalid List Name"
exit 1;
}
Write-Host "Done!"
exit 0;
###########################################################################
#
# End
#
###########################################################################
- Dina Ayoub
Gerente de Programas do SharePoint, Microsoft
Publicado em: 15/08/2010 23:40:00
Esta é uma postagem de blog traduzida. O artigo completo pode ser encontrado em Desabilitando temporariamente o Limite do Modo de Exibição de Lista em uma lista grande