2

I created a SSRS 2016 solution and deploy my reports. Each report has a "DESCRIPTION" property, that gets visible in the report's properties in report manager. There in the report manager, this property can be modified as well.

Unfortunately this description property will NOT BE changed after it was changed in visual studio and re-deployment of the report.

I checked the report server database to exclude any caching issues. There the value of the description column also stays untouched by/after re-deployment:

USE ReportServer;
select [Description], * from dbo.[Catalog] where Path like '/myReports/Demo';

Since this property is part of the report, I expect it to get modified by deployment. Is there anything we can config or do I miss anything? Why does this not work?

Environment:

ReportServer: SQL-Server 2016 Developer Edition 
Microsoft Visual Studio Enterprise 2015
    Version 14.0.25424.00 Update 3
    Microsoft .NET Framework
    Version 4.6.01055
    SQL Server Data Tools   14.0.60812.0
    Microsoft SQL Server Data Tools
    SQL Server Reporting Services   13.0.1700.68
    Designer für Microsoft SQL Server Reporting Services 
    Version 13.0.1700.68
3

This is a "known" issue/feature according to Microsoft. Descriptions, parameter defaults, subscriptions, etc. all fall under report "meta data" and are maintained separately on the Report Manager server. The only way to get these to change on the Report Manager is to either manipulate them manually or delete the report and upload anew. The links below deal specifically with this issue in regards to report parameters, but the same is true for descriptions.

Here is an excerpt from a Technet Article regarding parameters

Parameter properties that you set in Report Manager for a published report are generally preserved if you republish the report definition from Report Designer. If the report definition is republished as the same report, and parameter names and data types remain the same, your property settings are retained. If you add or delete parameters in the report definition, or change the data type or name of an existing parameter, you may need to change the parameter properties in the published report.

This is a related Connect issue

Parameter defaults do not get updated when re-deploying existing reports. These either have to be updated manually or the reports deleted and re-deployed. The latter regenerates all report ID's (GUID's) and makes traking usage from the ExecutionLog more difficult.

This is explained here http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=100960&SiteID=1 as being by design however I can't envisage parameter defaults and prompts being maintaned by an administrator.

An override mechanism similar to OverwriteDataSources should be added to Reporting Services projects to allow deploymnent from Visual Studio.

  • thanks for pointing out. I searched a lot but without the "parameter" keyword I had no luck. It's a shame, really! If this affects the description, bad but still I can handle this - but are changes to parameters never updated as well, is this for sure in the latest version? This would kill my.... Any known workarounds? – Magier Sep 14 '16 at 15:26
  • We require our developers to make the changes in a development environment and then have a home brewed application that syncs the changes up the environments. Everything with the exception of subscriptions is maintained by gathering the new values and then updating them via code instead of reusing the old values, per the standard APIs. This keeps our test, staging and production environments intact for things like usage stats. – Steve Mangiameli Sep 14 '16 at 15:41
2

After Steve's Answer I traced SQL Servers activity to find out more:

First the initial deployment with "myInitialDescription":

exec CreateObject 
@ItemID='CC754C47-4E02-42A1-9F71-9ABF84FBE30A',@Name=N'TestReport',@Path=N'/myReports/Folder1/TestReport',@ParentID='36CE605B-F030-4A0E-BC3C-C51C8C423427',@Type=2,@Content=0x3.....743E,@Intermediate='AAAAAAAA-3967-457B-B23D-780D34489A30',@Property=N'<Properties>
  <Language>de-DE</Language>
  <HasUserProfileQueryDependencies>False</HasUserProfileQueryDependencies>
  <HasUserProfileReportDependencies>False</HasUserProfileReportDependencies>
  <PageHeight>297.000007629395</PageHeight>
  <PageWidth>210</PageWidth>
  <TopMargin>20</TopMargin>
  <BottomMargin>20</BottomMargin>
  <LeftMargin>20</LeftMargin>
  <RightMargin>20</RightMargin>
</Properties>',@Parameter=N'<Parameters>
  <UserProfileState>0</UserProfileState>
  <ParametersLayout>
    <ParametersGridLayoutDefinition>
      <NumberOfColumns>4</NumberOfColumns>
      <NumberOfRows>2</NumberOfRows>
    </ParametersGridLayoutDefinition>
  </ParametersLayout>
</Parameters>',@Description=N'myInitialDescription',@Hidden=0,@CreatedBySid=0x010500000000000515000000235F636BB4B7CD22828BA62802120000,@CreatedByName=N'domain\me',@AuthType=1,@CreationDate='2016-09-14 16:31:00.960',@ModificationDate='2016-09-14 16:31:00.960',@SubType=default

Then the Update process:

exec GetAllProperties @Path=N'/myReports/Folder1/TestReport',@AuthType=1

Returned:

Description = myInitialDescription

After that:

exec SetAllProperties @Path=N'/myReports/Folder1/TestReport',@Property=N'<Properties>
  <Language>de-DE</Language>
  <HasUserProfileQueryDependencies>False</HasUserProfileQueryDependencies>
  <HasUserProfileReportDependencies>False</HasUserProfileReportDependencies>
  <PageHeight>297.000007629395</PageHeight>
  <PageWidth>210</PageWidth>
  <TopMargin>20</TopMargin>
  <BottomMargin>20</BottomMargin>
  <LeftMargin>20</LeftMargin>
  <RightMargin>20</RightMargin>
</Properties>',@Description=N'myInitialDescription',@Hidden=0,@ModifiedBySid=0x010500000000000515000000235F636BB4B7CD22828CC62802120000,@ModifiedByName=N'domain\me',@AuthType=1,@ModifiedDate='2016-09-14 16:38:36.550'

Excerpt of the SetAllProperties Procedure:

UPDATE Catalog
SET Property = @Property, Description = @Description, Hidden = @Hidden, ModifiedByID = @ModifiedByID, ModifiedDate = @ModifiedDate
WHERE Path = @Path

So right here we can see that the old DESCRIPTION is taken out of the previous version into memory and then gets passed to update itself with the old value instead of the new!

  • 1
    I ran this same test while troubleshooting this issue. I was a bit shocked! – Steve Mangiameli Sep 14 '16 at 15:38
1

I wrote a TSQL script that will update the description based on the current version of the report.

GitHub Gist

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.