EventLog

This problem was bugging me sometime back and I’ve only just got around to blogging about it…

Suppose you create a SQL Server Reporting Services report and you bundle this report up into a Service Manager Management Pack and deploy it to the Data Warehouse.

If you are watching the deployment process running under Data WarehouseManagement Packs, you may see that the deployment status changes from “Running” to “Failed” very briefly. After a few seconds it will change from “Failed” to “Completed”. You’ll not even notice the brief failure unless you are sitting there hitting F5 or perhaps if you later examine the Operations Manager event log on the Data Warehouse server. Especially as your report will now appear in the console and run perfectly, well, assuming you made no mistakes 🙂

But suppose you make changes to your report and rebundle your Management Pack after increasing the version by at least one…?

When you import the new version and deployment starts to run, you will see the deployment status change from “Running” to “Failed” and now it will never change to “Completed”.

If you see this, then you have hit this issue.

If you look in the Operations Manager event log on the Data Warehouse server you will see:

Event 33411, Deployment

Report deployment failed for report with ID c510195c-f3ee-b95c-e414-f184eaca7e5a and name YourReport.

One possible reason for this error is the Microsoft.EnterpriseManagement.Reporting.Code.dll may be missing.
Please make sure you follow the instructions in the Service Manager Deployment Guide to deploy this DLL to the Reporting Services server.

This event is a complete red herring, it is nothing to do with Microsoft.EnterpriseManagement.Reporting.Code.dll, unless you actually haven’t configured it correctly as per the documentation, in which case, you wouldn’t even have got this far…

Next you will see:

Event 33403, Deployment

Deployment Execution Infrastructure encountered an error while executing a deployer.
MP element ID: 17cf36cc-31ec-f306-bb8f-03e71138240b
MP name: YourReportMP
MP version: 1.0.0.0
Operation: Update
Error message: Microsoft.EnterpriseManagement.Deployers.DeploymentException:
Install ‘Report’ operation failed from within ‘install’ Installing reports
store = http://YourSSRSServer:80/ReportServer/ReportService2005.asmx parameters are folderpath =
/SystemCenter/ServiceManager/YourReportsFolder, report name = YourReport in AddReport within SRSResourceStore AddReport ;
After initialize within SRSResourceStore AddReport ;Object reference not set to an instance of an object.
at Microsoft.SystemCenter.ResourceAccessLayer.SrsResourceStore.AddReport(String folderPath, String name,
String reportDescription, String reportId, IResource rdl, Boolean overwrite, Boolean visible)
at Microsoft.EnterpriseManagement.Deployers.ReportDeployer.CreateReport(Boolean overwrite)

Microsoft.EnterpriseManagement.Deployers.DeploymentException
at Microsoft.EnterpriseManagement.Deployers.ReportDeployer.CreateReport(Boolean overwrite)
at Microsoft.EnterpriseManagement.Deployers.ReportDeployer.Update()
at Microsoft.SystemCenter.DeploymentEngine.ExecutionManager.Run(DeployerBase deployer)
at Microsoft.SystemCenter.DeploymentEngine.ExecutionManager.Run(IXPathNavigable instance)

Followed by:

Event 33410, Deployment

Deployment Execution Infrastructure has retried the maximum number of times and is giving up on this execution step.
MP Element ID: 17cf36cc-31ec-f306-bb8f-03e71138240b
MP name: YourReportMP
MP version: 1.0.0.0
Operation: Update
Error message: Install ‘Report’ operation failed from within ‘install’ Installing reports
store = http://YourSSRSServer:80/ReportServer/ReportService2005.asmx parameters are folderpath =
/SystemCenter/ServiceManager/YourReportsFolder, report name = YourReport in AddReport within SRSResourceStore AddReport ;
After initialize within SRSResourceStore AddReport ;Object reference not set to an instance of an object.
at Microsoft.SystemCenter.ResourceAccessLayer.SrsResourceStore.AddReport(String folderPath, String name,
String reportDescription, String reportId, IResource rdl, Boolean overwrite, Boolean visible)
at Microsoft.EnterpriseManagement.Deployers.ReportDeployer.CreateReport(Boolean overwrite)

The only error here is “Object reference not set to an instance of an object” which, of course, is not very helpful.

If you, the reader, also has this problem, here is how to fix it…

When you save your report from Report Builder, it will automatically reset the DataSource path (if you used it) and the property ReportServerUrl. These need fixing.

Open your report RDL file in Visual Studio or another appropriate editor directly.

At the top, find this section:

DataSourceBad

And remove the path in DataSourceReference:

DataSourceGood

Next scroll to the end of the file and locate this line:

ServerSetting

Remove this line completely.

Now, if you created your report by copying an existing one, you must make this a new Guid:

Guid

You can easily create a new Guid from Visual Studio via ToolsCreate GUID, selecting “Registry Format” and clicking “Copy”.

Paste in the new guid, replacing the old one, and removing the {}:

Guid2

You only need to change the Guid once if required, do not change it again but you must check and make the other changes every time before you rebundle your changes.

OK, the next thing to know is that this won’t fix your currently imported Management Pack. You must delete it and wait for the Status under Data WarehouseData Warehouse JobsMPSyncJob to say “Disassociated”. Order the jobs by Batch Id descending and monitor the latest one. Disassociation will delete everything the Management Pack defines. For this reason, you should never put anything else into your reports MPs such as Data Warehouse extensions or class extensions.

Now you can import your new Management Pack and if you always reset the data source path and remove the SSRS server URL your Management Pack will now upgrade correctly every time!