In SharePoint 2010, some new limITs have been added to protect the servers and other users from expensive operations inadvertently carried out by other users. For a complete list of the SharePoint 2010 Software Boundaries and LimITs, click here http://technet.microsoft.com/en-us/sharepoint/ff601870.aspx. If you’d like to find out more about what the different limITs mean <a href="http://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-wITh-many-ITems-HA010378155.aspx?redir=0″>click here to read the help topic <a href="http://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-wITh-many-ITems-HA010378155.aspx?redir=0″>http://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-wITh-many-ITems-HA010378155.aspx?redir=0 . For a more in-depth look at the features that help you manage large lists, and the best practices involved, read this whITe paper: Designing Large Lists and Maximizing List Performance http://technet.microsoft.com/en-us/library/ff608068(office.14).aspx .
The List View Threshold is one of the thresholds that fall under the "resource throttling" settings for each Web Application, which can be managed in Central Administration. IT is set to 5,000 by default; which means that any view or query that attempts to Process more than 5,000 ITems at a time will be blocked by the SharePoint server. For example, a view that filters on an un-indexed column in a list that has 5,001 ITems will receive a message informing the user that the query was blocked by the List View Threshold, and if there is a daily time window set, then the message will also state the hours during which this operation would be permITted.
Shortly after upgrade, some users may find that they are unable to access their data through the views they had existing; and to access the data in the way they wish to (e.g. sorted by a column called "color"), they must add an index to their large list. However, they keep running into the List View Threshold limITation so can’t perform this task unless:
- They waIT until the daily time window set by the administrator, if IT is at all set and enabled. By default the daily time window is not set, because IT needs to be a conscious decision on the administrator’s part to figure out what times work best as "off peak" for their organization. This is the recommended course of action, but sometimes this is not sufficient if the user needs to be able to access that data immediately.
- The farm administrator raises the List View Threshold to a very high number, so that everybody who has a large list can access all their views. This is highly discouraged, because IT poses a high risk to the server’s health and stabilITy, and instead of solving the problem for the small number of people who have IT, IT has the potential of creating problems for everybody else, and encouraging poorly constructed views and queries.
- The administrator grants the user’s specific list a temporary exemption from the List View Threshold. This exemption can only be done programmatically. I’ll show here how you can accomplish this, as well as how to lift the exemption once the period you specified to the users is up. I highly recommend that you grant this exception very conservatively, and don’t leave IT on any longer than necessary. In most cases, giving the users a week to fix their views or custom code should be more than enough.
To disable the list view threshold for a particular list, you can use the object model to edIT the list’s "EnableThrottling" property to false (defaults to true). The code below shows you how to do this for one particular list, or for all lists under a certain sITe. IT’s best to grant this pardon only to specific lists, rather than an entire sITe since providing IT granularly makes IT easier to keep track of what might cause the server to perform poorly, as well as reinforcing the importance of fixing the lists as quickly as possible to the end users.
Here’s a script wrITten by Chris Clark, a tester on the SharePoint team, to perform this change. To reverse the change (i.e. remove the exception on a list or all the lists wIThin a web), just change this line:
$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 http://localhost -ListName "Shared Documents"
# makeexceptionlist.ps1 -WebUrl <a href="http://localhost/sITes/sITe1″>http://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
Program Manager on SharePoint, Microsoft

Tags: Administration, Configuration