SharePoint & SSRS – Removing the “Open with Report Builder” selection from the Action Menu


After some reading I found that this menu option is not controlled by SharePoint permissions. Below are three workarounds, two of which I have tested (1&2).


“Open With Report Builder” option






1.)    Setup up version control that requires approval prior to modification. This approach would not remove the “Open with Report Builder” option, nor would it disallow a user from saving changes to a report. This approach simply does not allow the modification of a report without approval. A report that has been modified cannot be viewed by end users and will stay in a queue (in the form of a view) until approved or rejected by someone with the proper permissions. This approach has the most maintenance overhead as someone will need to purge the libraries every now and then.


2.)    Make configuration changes to the ConfigInfo table in the ReportServer. This approach requires configuration changes in Report Server to the ConfigInfo table.



FROM dbo.ConfigurationInfo

WHERE name = ‘EnableReportDesignClientDownload’





UPDATE dbo.ConfigurationInfo

SET value = ‘True’

WHERE name = ‘EnableReportDesignClientDownload’




Setting EnableReportDesignClientDownload to “False” removes the “Open with Report Builder” option from the Action Menu while still allowing developers to modify existing reports and create new reports (if they have previously downloaded the client). Where issues may arise is when a new user would like to develop reports, then the option will need to be switched on momentarily to allow the client to be downloaded.


3.)    Setting security on the directory where the installation file is located. This would not allow anyone without permission to have access to the client. This approach does not, however, remove the “Open with Report Builder” action item. The end user will simply receive a permissions error in SharePoint.


Of the above options I am in favor of #2. This option would provide a cleaner UI/UX in that it removes the option completely. Add to that easier maintenance in that a simple script is applied to make changes. The only drawback I can see is messing around in the configuration tables.


Converting Time data type columns in sysschedules table

Leave a comment

Working on a report that will provide a schedule similar to an Outlook calendar for SQL job scheduling.

From Book Online. . .
“Time on any day between active_start_date and active_end_date that job begins executing. Time is formatted HHMMSS, using a 24-hour clock.”

So, taking into consideration the time is formatted as HHMMSS I used the following script to parse and concatenate the time.

Partial Script
LEFT(RIGHT('0' + CAST(active_start_time AS VARCHAR), 6), 2) + ':' + SUBSTRING(RIGHT('0'
+ CAST(active_start_time AS VARCHAR),6), 3, 2) + ':' + RIGHT(CAST(active_start_time AS VARCHAR), 2) 'Start Time'
FROM dbo.sysjobs
INNER JOIN dbo.sysjobschedules
ON dbo.sysjobs.job_id = dbo.sysjobschedules.job_id
INNER JOIN dbo.sysschedules
ON dbo.sysjobschedules.schedule_id = dbo.sysschedules.schedule_id

I might post the report once completed. 😉

Custom Report Viewer Permission Level

Leave a comment

An issue that we have run into a few times with SSRS running in SharePoint Integration mode is that we would like for the end users to have access to the Report Services features without having god status or Full Control permissions in the library. To accomplish this a new permission level needs to be created specific to Reporting Services.

There are two ways to go about doing this at the permissions level an I am not a SharePoint guru so take this with a grain of salt. The first option is to create a permission level that only addresses the report viewing permissions. In this case you will need to couple this level with an additional standard SharePoint permission level for additional permissions. (Ex. Add Report Viewer and Design permissions, so the user can not only have Report Viewer permissions but also have Design permissions in the library as well. The second option is to combine two roles into one which is the approach I took. To accomplish this you will need to create the Report Viewer permission level and into it also add the features of another level. This is better illustrated in the below walkthrough.

On the Site Actions menu , click Site Settings.

1. On the Site Settings page, in the Users and Permissions section, click Advanced permissions.

2. If the Settings menu is not available, select Manage Permissions of Parent from the Actions menu. Otherwise, skip to step 4.

Note: The Settings menu is not available on the Permissions page if your site is inheriting permissions from its parent site.

3. On the Permissions page, on the Settings menu, click Permission Levels.

Click permission levels

4. On the Permission Levels page, click Add a Permission Level.

Add permission level

5. On the Add a Permission Level page, in the Name and Description section, type a name and optionally a description.

Add name description and permissions levels

In my case, I added the Report Viewer permissions as well as the View Only permission level permissions. To grab another roles permissions to copy them in to the new permission level simply click the permission level from the Permission Level page and copy the permissions to your new permission level.

*To add report subscription features simply check “Create Alerts” and “Manage Alerts” from within the permissions selection page.

SSRS – Repeating Header Row

Leave a comment

Took me awhile to crack this one . .

In Report Builder ensure that you have Advanced Mode selected in the Row/Column Group section.

select Advanced Options

Once selected you should have several static row and column groups. Select the Header Row group in the Row Groups section. If

you are unsure which static group you are selecting look into the report pane. Every time a group is selected its corresponding cell is

highlighted as well. Once the header group is found, look at the properties and set them as follows; Fixed Data = True, RepeatOnNewPage=True.

Make the proper selections

Now you’re all set.

*If you cannot see the properties of the static group head to the view Tab at the top of the application and ensure the properties check box is checked.

Cannot preview Excel spreadsheet data in BIDS 2008

Leave a comment

Simple error returned when trying to view sheet data in Excel from within BIDS.

“There was an error displaying the preview. (Microsoft Visual Studio)

Index and length must refer to a location within the string.

Parameter name: length (mscorlib)”


BIDS doesn’t do well with spaces in the Excel sheet name. Remove the spaces or replace them with underscores lazy programmer. 😉

SSRS Tablix with alternating background color

Leave a comment

This one is pretty simple and can be handled in an expression.


=iif(RowNumber(Nothing) Mod 2, “White”, “Gainsboro”)

According to the expression first color (White) will be the background color of the first line in the dataset. The second color (Gainsboro or light gray) will be the alternating background color.

To apply this right-click the dataset cell for which you would like the alternating background color applied to, then click

“Textbox Properties”.


Next, select Fill from the right sidebar and click the “fx” next to the fill color.

All that remains is to paste the expression into the textbox and you’re done. The only pain in this process is that you’ll need to select each individual cell in each dataset in order to change its background color. Report Builder does not support the selection multiple textbox properties within a dataset.

Parse Path from Filename in the Catalog.Path table in Report Server.

Leave a comment

On my trials and tribs trying to develop a report to display SQL Report Server execution data (from a SRS server in Sharepoint integration mode) I found a way to parse the pathname from the Catalog.Path column in the Catalog table. (see below)


I left the stages of the parse routine commented out for your own research. To fill in the variables query your report server’s catalog table. There you should find valid path names and to query against. Heck, also comment out the @Report and @User variables unless you also plan to filter

by those two criteria.

Clean formatting 🙂


Messy Script

DECLARE @Report VARCHAR(50) = ‘Adhoc Analysis Report.rdl’
DECLARE @User VARCHAR(50) = ‘CORP\sa_aforney’
DECLARE @Path VARCHAR(50) = ‘/LIMS/Reports/Job Logs/’

SELECT ExecutionLogStorage.ReportID
–,SUBSTRING([Catalog].[Path], 40, 100) AS [1]
–,REVERSE(SUBSTRING([Catalog].[Path], 40, 100)) AS [2]
–,CHARINDEX(‘/’, REVERSE(SUBSTRING([Catalog].[Path], 40, 100))) AS [3]
–,SUBSTRING(REVERSE(SUBSTRING([Catalog].[Path], 40, 100)),CHARINDEX(‘/’, REVERSE(SUBSTRING([Catalog].[Path], 40, 100))),100) AS [4]
,REVERSE(SUBSTRING(REVERSE(SUBSTRING([Catalog].[Path], 40, 100)),CHARINDEX(‘/’, REVERSE(SUBSTRING([Catalog].[Path], 40, 100))),100)) AS [AbrvPath]
FROM ExecutionLogStorage
INNER JOIN [Catalog]
ON ExecutionLogStorage.ReportID = [Catalog].ItemID
WHERE [Catalog].Name <> ‘ ‘
–AND [Catalog].Name IN ( @Report )
AND ExecutionLogStorage.UserName IN ( @User )
AND REVERSE(SUBSTRING(REVERSE(SUBSTRING([Catalog].[Path], 40, 100)),CHARINDEX(‘/’, REVERSE(SUBSTRING([Catalog].[Path], 40, 100))),100)) IN (@Path)
ORDER BY ExecutionLogStorage.TimeStart DESC

Older Entries Newer Entries

%d bloggers like this: