Abstract
We recently delivered a SQL Server 2012 Reporting Services solution to a client with an additional capability for the client’s business users to be able to design, develop and publish ad hoc reports using Report Builder 3.0. During unit testing we had one of the Business Analysts (BA) in our team simulate business user experience by attempting to create reports using Report Builder. Although the BA could connect to datasets and design a report accordingly, he couldn’t run the newly designed report from Report Builder. The error that he got is as follows – “Failed to preview report. The permissions granted to user ‘*selectSifiso\Sifiso’ are insufficient for performing this operation” (for the rest of the article the error will be referred to as ‘this error’). The error basically relates to user permissions. I have gone through the web to find possible workarounds to this error and as it turns out this error is not so uncommon in the world of Business Intelligence. Thus, this article will demonstrate how to resolve such an error should you encounter it too.
*For obvious security reasons, I replaced the original BA account with my dummy account.
Requirements
- Software Requirements:
- Microsoft SQL Server 2012
- SQL Server Reporting Services
- Report Builder 3.0
- Conceptual Understanding of:
- SQL Server Reporting Services
- Report Builder 3.0
- Report Manager Configuration
**Please note that the above requirements are only necessary for fixing the user permissions error as it is this article main objective. There are further requirements for developing an SSRS Reporting Solution.
Article
According to this MSDN article, in Reporting Services there is a task referred to as Execute Report Definitions (ERD) which allows for the processing of a “report definition that is not currently stored on the report server”.
Now going back to the issue we are trying to resolve, assigning our BA a role that includes the ERD task would obviously solve our problem.
Unfortunately, or fortunately (depending on your user role in a given report server) the ERD task is available to users assigned to system roles i.e. system administrator and system user.
Therefore, in order to prevent a situation whereby you have all business users assigned to system administrator roles, the best practice would be to set up another system role with only an ERD task.
Thereafter you can merely assign business users, in our example the BA, to the role with an ERD task.
In the following steps, we will demonstrate the creation of a system role with an ERD task and assign users to that role.
Step 1: Create System Role
1.1. In administrator mode, Start SQL Server Management Studio (SSMS) and connect to Reporting Services
1.2. Navigate to the System folder, collapse it, then right-click to the System Roles sub-folder and choose New System Role… (If you didn’t launch SSMS as an administrator, the option of adding a New System Role would appear greyed out)
1.3. In a New System Role dialog box, for the purposes of this exercise let us assign RunReportBuilder to the Name textbox. Then check the Execute Report Definitions task.
Step 2: Assign Users to RunReportBuilder System Role
2.1. Again, preferably launch your Report Manager as administrator (in order for that to happen, launch Internet Explorer/preferred browser as administrator)
2.2. Click Site Settings – usually found at the top right side menu in browsers.
2.3. Still on your Site Settings page, click the Security tab
2.4. The Security tab will return a list of users/groups with their respective roles, click on New Role Assignment
2.5. After a New Role Assignment page loads, on the Group or user name textbox type the account of the user you would like to grant access to the ERD task. Thereafter check the RunReportBuilder role.
Conclusion
You can now inform the user to test run a report using Report Builder to check that the role assignment has taken effect.
Till next time folks, cheers.
Sifiso.
0 Comments