SSRS Troubleshooting: Existing Sites and Subscriptions Fail After You Upgrade SharePoint Products and Convert to Claims Authentication
Background:
Following the upgrade of a SharePoint environment to SharePoint 2010 Products and the conversion to Claims Authentication, several of the Reporting Services features will fail until you update permissions to the appropriate Claims Authentication credentials.
Error accessing Reporting Services pages in SharePoint
When you try to access pages on an existing site, you will see an error message indicating the current user does not have sufficient permissions. For example, when you attempt to view the properties pages for Reporting Services items, you will receive an access denied error message. A message that resembles the following will also appear in the SharePoint trace log:
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at Microsoft.SharePoint.SPUserToken.GetClaimsUserLoginName()
at Microsoft.SharePoint.SPSite.CopyUserToken(SPUserToken userToken)
at Microsoft.SharePoint.SPSite.SPSiteConstructor(SPFarm farm, Guid applicationId, Guid contentDatabaseId, Guid siteId, Guid siteSubscriptionId, SPUrlZone zone, Uri requestUri, String serverRelativeUrl, Boolean hostHeaderIsSiteName, SPUserToken userToken)
Workaround:
Reconfigure Reporting Services integration in SharePoint Central Administration. From the General Application Settings section, select Reporting Services Integration. For more information, see How to: Configure Report Server Integration in SharePoint Central Administration in the TechNet Library.
Existing subscriptions fail
Existing subscriptions fail and an "UnauthorizedAccessException" message will be added to the SharePoint trace log.
When you attempt to view properties of a subscription in the SharePoint pages, you will see an error message indicating the current user does not have sufficient permissions to view the subscription properties.
Workaround:
Use the ChangeSubscriptionOwner SOAP API to change the owner of each subscription to an appropriate Claims Authentication account. It is not possible to change subscription owners with the user interface. You can only change subscription owners by using the API. The following is an example script that uses the ChangeSubscriptionOwner API.
call using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Services.Protocols;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
RS2010.ReportingService2010 rs = new RS2010.ReportingService2010();
rs.UseDefaultCredentials = true;
RS2010.Subscription[] subs = rs.ListSubscriptions("http://MyServerName/Shared%20Documents");
foreach (RS2010.Subscription sub in subs)
{
if (String.Equals(sub.Owner, @"MyDomain\MyUserName", StringComparison.CurrentCultureIgnoreCase))
{
rs.ChangeSubscriptionOwner(sub.SubscriptionID, @"i:0#.w|MyDomain\MyUserName");
}
}
}
}
}
For more information about the ChangeSubscriptionOwner API, see ReportingService2010.ChangeSubscriptionOwner in the TechNet Library.
See Also
- [[SQL Server Reporting Services]]
- [[(SSRS) Troubleshooting Issues and Errors]]