Vorübergehende Deaktivierung des Schwellenwerts der Listenansicht in großen Listen

Hauptteil:

In SharePoint 2010 wurden einige neue Beschränkungen hinzugefügt, um Server und andere Benutzer vor kostenintensiven Operationen zu schützen, die von anderen Benutzern unwissentlich ausgeführt werden. Eine vollständige Liste der Softwaregrenzen und -beschränkungen finden Sie hier http://technet.microsoft.com/en-us/sharepoint/ff601870.aspx. Wenn Sie weitere Informationen zur Bedeutung der einzelnen Beschränkungen erhalten möchten, klicken Sie hier, um das Hilfethema zu lesen http://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-with-many-items-HA010378155.aspx?redir=0 . Einen umfassenderen Überblick über die Features, die Sie bei der Verwaltung großer Listen unterstützen, finden Sie in diesem Whitepaper: Entwerfen großer Listen und maximieren der Listenleistung http://technet.microsoft.com/en-us/library/ff608068(office.14).aspx .

Der Schwellenwert der Listenansicht ist einer der Schwellenwerte, der zu den „Ressourcensteuerungseinstellungen“ für jede Webanwendung gehört, die in der Zentraladministration verwaltet werden können. Dieser Wert ist standardmäßig auf 5.000 festgelegt. Das bedeutet, dass jede Ansicht oder Abfrage, die versucht, mehr als 5.000 Elemente gleichzeitig zu verarbeiten, vom SharePoint-Server blockiert wird. Beispielsweise erhält eine Ansicht, die eine nichtindizierte Spalte in einer Liste mit 5.001 Elementen filtert, eine Meldung, die den Benutzer informiert, dass die Abfrage vom Listenansichts-Schwellenwert blockiert wurde. Wenn ein tägliches Zeitfenster vorhanden ist, gibt die Meldung zudem an, zu welcher Zeit diese Operation zulässig ist.

Kurz nach dem Upgrade stellen möglicherweise einige Benutzer fest, dass sie nicht mehr über ihre bestehenden Ansichten auf ihre Daten zugreifen können, und dass sie ihren großen Listen einen Index hinzufügen müssen, um auf die Daten in gewohnter Weise zugreifen zu können (beispielsweise sortiert nach einer Spalte mit dem Namen „color“. Möglicherweise wird dennoch die Beschränkung durch den Schwellenwert der Listenansicht wirksam, sodass sie diese Aufgabe nicht ausführen können, wenn nicht die folgenden Bedingungen erfüllt sind:

  1. Die Benutzer warten bis zu dem täglichen Zeitfenster, das vom Administrator festgelegt wird, vorausgesetzt, dieses ist eingerichtet und aktiviert. Standardmäßig ist das tägliche Zeitfenster nicht festgelegt, da der Administrator sorgfältig abwägen muss, welche Zeit im Unternehmen am ehesten als „außerhalb der Spitzenzeit“ zu betrachten ist. Dies ist die empfohlene Vorgehensweise, die jedoch manchmal nicht ausreichend ist, wenn ein Benutzer sofort auf die Daten zugreifen muss.
  2. Der Farmadministrator legt den Schwellenwert der Listenansicht auf einen sehr hohen Wert fest, damit alle Besitzer großer Listen auf alle ihre Ansichten zugreifen können. Dies ist nicht empfehlenswert, da dies ein hohes Risiko für die Integrität und Stabilität des Servers beinhaltet. Und anstatt das Problem für die kleine Anzahl von Personen zu lösen, für die es relevant ist, entstehen möglicherweise Probleme für alle anderen. Zudem wird die Erstellung unzureichend geplanter Ansichten und Abfragen gefördert.
  3. Der Administrator gewährt der spezifischen Liste des Benutzers eine vorübergehende Ausnahme vom Schwellenwert der Listenansicht. Diese Ausnahme kann nur programmgesteuert vorgenommen werden. In diesem Beitrag wird dieser Vorgang erläutert sowie wie die Ausnahme aufgehoben wird, nachdem der für die Benutzer festgelegte Zeitraum abgelaufen ist. Ich empfehle dringend, dass diese Ausnahme sehr restriktiv gehandhabt wird und nicht länger als erforderlich in Kraft bleibt. In den meisten Fällen sollte eine Woche ausreichend sein, damit Benutzer ihre Ansichten und ihren benutzerdefinierten Code in Ordnung bringen.

Um den Schwellenwert der Listenansicht für eine bestimmte Liste zu deaktivieren, können Sie das Objektmodell verwenden, um die EnableThrottling-Eigenschaft der Liste auf false festzulegen (Standard ist true). Der folgende Code zeigt, wie dies für eine bestimmte Liste vorgenommen wird oder für alle Listen einer bestimmten Website. Diese Ausnahme sollte nur für bestimmte Listen gewährt werden und nicht für eine komplette Website, da sich auf diese Weise leichter verfolgen lässt, wodurch die Leistung des Servers herabgesetzt wird und gegenüber den Endbenutzern die Wichtigkeit betont werden kann, die Listen so schnell wie möglich in Ordnung zubringen.

Diese Änderung kann mithilfe des folgenden, von Chris Clark, einem Tester im SharePoint-Team, geschriebenen Skript ausgeführt werden. Um die Änderung rückgängig zu machen (d. h., die Ausnahme für eine Liste oder alle Listen einer Website aufzuheben), ändern Sie die Zeile:

$list.EnableThrottling = $false

zu:

$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 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 für SharePoint, Microsoft

Veröffentlicht: 15.08.2010 23:40 Uhr

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter Temporarily disabling List View Threshold on a large list