I am facing a List Throttling issue on a production site following are the details.
I have a SharePoint Calendar list named "Bookings" it currently has about 16,000 events(items) and the list view threshold for normal users is set to 5000 and for site collection administrators is set to 20,000.(the default values in central admin)
So here when i query this list it gives me a Throttling exception as it should do because when a particular list crosses throttling limits we cannot Query all the items at once.
Following is my code
SPListItemCollection collBookings = null;
SPList lstBookings = web.Lists.TryGetList("Bookings");
qryBookings.ViewFields = "<FieldRef Name='Title'/>" +
"<FieldRef Name='ID'/>" +
"<FieldRef Name='EventDate'/>" +
"<FieldRef Name='Room_x003a_MaxCapacity'/>" +
"<FieldRef Name='Company'/>" +
"<FieldRef Name='Room'/>" +
"<FieldRef Name='Place'/>" +
"<FieldRef Name='Hosted_x0020_By'/>" +
"<FieldRef Name='Author'/>" +
"<FieldRef Name='Linked_x0020_Id'/>" +
"<FieldRef Name='Is_x0020_Linked'/>" +
"<FieldRef Name='fRecurrence'/>" +
"<FieldRef Name='Internal_x0020_Meeting'/>" +
"<FieldRef Name='RoomMaxCapacity'/>" +
"<FieldRef Name='Total_x0020_Attendees'/>" +
"<FieldRef Name='External_x0020_Attendees'/>" +
"<FieldRef Name='EndDate'/>";
qryBookings.Query = "<Where>" +
"<DateRangesOverlap><FieldRef Name='EventDate' />" +
"<FieldRef Name='EndDate' />" +
"<FieldRef Name='RecurrenceID' />" +
"<Value Type='DateTime'><Today /></Value></DateRangesOverlap></Where>";
qryBookings.ExpandRecurrence = true;
qryBookings.CalendarDate = date.Date;
collBookings = lstBookings.GetItems(qryBookings);
So what i did was, i used Paging with pagelimit=4000 so that only 4000 items are queried at one time
Following was my new code
qryBookings.RowLimit=4000;
do{
qryBookings.ViewFields = "<FieldRef Name='Title'/>" +
"<FieldRef Name='ID'/>" +
"<FieldRef Name='EventDate'/>" +
"<FieldRef Name='Room_x003a_MaxCapacity'/>" +
"<FieldRef Name='Company'/>" +
"<FieldRef Name='Room'/>" +
"<FieldRef Name='Place'/>" +
"<FieldRef Name='Hosted_x0020_By'/>" +
"<FieldRef Name='Author'/>" +
"<FieldRef Name='Linked_x0020_Id'/>" +
"<FieldRef Name='Is_x0020_Linked'/>" +
"<FieldRef Name='fRecurrence'/>" +
"<FieldRef Name='Internal_x0020_Meeting'/>" +
"<FieldRef Name='RoomMaxCapacity'/>" +
"<FieldRef Name='Total_x0020_Attendees'/>" +
"<FieldRef Name='External_x0020_Attendees'/>" +
"<FieldRef Name='EndDate'/>";
qryBookings.Query = "<Where>" +
"<DateRangesOverlap><FieldRef Name='EventDate' />" +
"<FieldRef Name='EndDate' />" +
"<FieldRef Name='RecurrenceID' />" +
"<Value Type='DateTime'><Today /></Value></DateRangesOverlap></Where>";
qryBookings.ExpandRecurrence = true;
qryBookings.CalendarDate = date.Date;
collBookings = lstBookings.GetItems(qryBookings);
qryBookings.ListItemCollectionPosition = collBookings.ListItemCollectionPosition;
} while (qryBookings.ListItemCollectionPosition != null);
But Even after doing this i got the Throttling Exception.
So i think we cannot query to recurring events if threshold limits are exceeded because, i have tried using paging on a custom list whose throttling limits have exceeded and it has worked.
Can Someone help me resolve this issue.
Thanks