Identifying who changes a data-source SSRS - reporting-services

I have this report when I deploy it it works. I come in the next day and under the Data Sources tab in properties I notice the report is pointing to our Dev environment. Now I know and double check that it is not coming from the solution as I have overwrite datasources equal to false, and there is only the one datasource in the project (named something completely different)
But what I also noted was when I change just the datasource on the report the Modified Date and Modified By does not change.
So it begs the question, is there anywhere on the SSRS site or database that I can capture who and when a datasource for a report is changed?
We are currently using SSRS 2005

Reportserver.dbo.Catalog has record of who first created and last modified any object on the server.

Related

Adding SSRS report through CRM2016: Prefiltering doesn't work?

I've created a custom Reporting Services report from within Visual Studio that is intended to use automatic prefiltering as described here.
So, I've created my query as follows:
select fullname, createdbyname, createdon
from FilteredContact as CRMAF_FilteredContact
order by createdon desc
However, once I add a new Report in CRM based on the report's .rdl file (as described under "Deploying the Report" here) it adds the report fine, but two things happen:
1) The shared data source for this report is initally invalid, both CRM and SSRS refuse to render it with the error:
"The report server cannot process the report or shared dataset. The shared data source 'MyOrg_MSCRM' for the report server or SharePoint site is not valid. Browse to the server or site and select a shared data source. (rsInvalidDataSourceReference)"
I have to manually set the DataSource from within SSRS to /MyOrg_MSCRM/CustomReports/MSCRM_DataSource to get it to work.
2) The report doesn't appear under "Run on Selected records" but under "Run on All Records", and doesn't perform any prefiltering.
Also, when I download the .rdl from SSRS it hasn't modified it, neither adding an extra parameter or changing the SQL query. as I would have expected based on this information.
What could I be doing wrong?
I'm using MS CRM 2016 update 1 (v8.1.0.359) on premise, with SQL Server 2014 Reporting Services and the SRS Data Connector installed on the same machine.
Apparently, you can use a shared data source reference, but you have to name it MSCRM_DataSource, just as the Data Source that MSCRM uses for its reports.
If you upload a Report in MSCRM like this, MSCRM recognizes this and automatically updates the data source to the valid /MyOrg_MSCRM/CustomReports/MSCRM_DataSource datasource, and also adds the prefiltering modifications.
You've created a Shared Data Source that you are using for multiple reports. When uploading reports through CRM this is not supported. Each report must have its own connection details embedded in the report.
I think the reason for this is, as you are trying to do, the report gets modified to add hidden CRM parameters and to alter the queries so that pre-filtering can take place.
To fix this, you have to modify each report and enter the Connection Details directly into the report rather than using a Shared Connection. Its a little annoying but should give you the results you are expecting to see

Error after renaming SSRS linked report names

I have changed the SSRS report names in my reporting server projects. I have four reports and four linked reports in this projects. The linked reports are being called by an action setup on a column value where the parameters are being passed to the linked reports. After renaming all the report names I have made similar changes in the Action property in order direct the parameters to the changed report name. I have also saved the changes and re-built the project and have not got any errors. All the four main reports are working fine but the linked reports are trowing the following error while running the reports using preview options in MS Visual Studio 2010
An error occurred during local report processing. Object reference not set to an instance of an object.
I have deployed this to my local report server and on browser I getting the following error
The item '/Unit Reports/OLDREPORTNAME' cannot be found. (rsItemNotFound)
Here you can see that it is still trying to locate it to the old report name not the new changed one.
I have clean, built and deployed the project several times but still getting these errors
Please let me know if I need to make changes in any other files to avoid this error.
Thanks
Within the .rdl search for "OLDREPORTNAME" and replace with "NEWREPORTNAME"...
Take a backup first :-)
I have noticed that when I implement the Action property on the report field, it automatically set-up the same Action property of that text box where the field was defined.
I have found that the text box Action property was still pointing to the old report. I have changed text box Action property to point it to the new report and now my linked reports are working absolutely fine.
Thanks
Yogesh

How can the CustomerRef field from SalesTable be added to the CustAccountStatementExt report?

In Microsoft Dynamics Ax2012 R2 I want a customization for report CustAccountStatementExt by adding the field CustomerRef from SalesTable
Location of report in the AOT :
SSRS Reports\Reports\CustAccountStatementExt
You have to open Visual studio 2010 (only supported version for AX 2012 R2) and open this repot from Application Explorer (View -> Application Explorer Ctrl+D,Enter).
MSDN:
Walkthrough: Customizing Existing Microsoft Dynamics AX Reports
How to: Customize a Report
Visual Studio Tools for AX must be installed from the AX Setup.
In addition to Matej's answer (which only covers the customization of the report layout) you also have to make the field available in the report data source. To do that you have to add a new field to table CustAccountStatementExtTmp that will hold the value of the CustomerRef field from table SalesTable.
You will also have to customize the creation of the CustAccountStatementExtTmp records which in this case is surprisingly done in the report controller class CustAccountStatementExtController (usually the report tables are filled in the data provider class). This will require some work, because you have no direct way to access the SalesTable record there. Basically you have to figure out how to determine the sales order from the CustTrans record that is available there.
After that, you still have to customize CustAccountStatementExtDP.insertNewRecords method because for some reason the records are copied from one instance of the (temporary) table CustAccountStatementExtTmp to another.
After that the new field should show up in the data set of the report in Visual Studio and you can then include it in the report layout (see Matej's answer on how to do that).
Here are the steps I followed to accomplish this:
Add field to the CustAccountStatementExtTmp table
Add code to CustAccountStatementExtController.insertCustAccountStatementExtTmp method to populate the new field.
Refresh the data source in the SSRS report, and in the report design (and then re-open the design).
Add the field to the report
At this point I also had to restart the AOS before the data would appear on the report. Apparently there was something cached in memory that prevented it from working.

Issue re-deploying updated default parameters in SSRS report

I have an SSRS (SQL Server 2008 R2) report with several parameters. I'm having an issue where one of the parameters is not consistently choosing its default value when the report is first loaded.
Specifically, it works fine in BIDS but works intermittently (works on one server but not another) once deployed to IIS and viewed in IE. By intermittently, I mean it works on the server I deploy it to, but when I copy the RDS file to another server, the default behaviour for my parameter is broken.
Details
The parameter has a series of specified (constant) integer values specified in the Available Values section, which represent a selection of fixed reporting periods. The Default Values has a single specified value, which matches one of the Available Values.
Options: data type integer, no null values, no multiple values, parameter visible, automatically determine when to refresh.
Any ideas why I'm seeing this behaviour?
That is true, once the report is deployed to the server then the parameters are controlled at the server level.
Once item to note however is if you redeploy the report with changes to the default values THEY WILL NOT be changed on the server!!! The report must be deleted and deployed for the new defaults to take effect.
If you do not wish to delete the report then change the defaults by hand on the Report Server.
I've discovered my own answer to this question. I'm detailing it here for anyone else new-ish to SSRS who might be confused by the same behaviour. The parameters can be managed separately from the RDL file, and defaults can be overridden once the report is deployed to the server. To manage the parameters on the server:
Click on the report name link at top left on the browser page.
Click on the Parameters tab at left.
Manage the parameters as needed (e.g. set the default value).
Click Apply.
Click the report name link (large bold text at top) to return to the report.
Another solution without having to delete the reports (the issue when you delete the report is the logs are also deleted) is to open the new deployed report with ReportBuilder (Modifier dans le Générateur de rapports).
Just save the report and the defaults values will be changed.
lets say your report name is xyz.rdl
if you have set default parameter and deployed it to server now, it will not change on the server.
i suggest 3 options
1. change the parameter 'Has Default' value on the server, by right click manage on the report
2. delete the report on the server and redeploy it
3. deploy a dummy report or old version report with same name say 'xyz.rdl' which doesn't have this parameter, doing this will erase report parameters on the server, report stays in tact. then deploy your new version report with default parameter, now it should work.
I had similar issue. When a report has been deployed to the Server "Without" Default, and you subsequently modify this report in Visual Studio and change the same parameter to have a default, the server will not pickup that the modify report has a default now.
My workaround to this dilemma was to create a dummy parameter and put it to the top of the list. I then redeployed the report with the new dummy parameter and the same modified one with a default parameter. This time the server picked up that the parameter I was interested in as having a default value. I then proceeded to delete the dummy parameter in visual studio and redeployed the report. The parameter that I was interested in remained as having a default value.
I prevented deleting the report and adding subscriptions to it if I had went that route in order to fix my dilemma.
It takes a bit of work to correctly handle all the various scenarios, but it is (at least as of Sql Server 2012) possible to update the parameters from a script by loading the .rdl file as an xml file, and comparing it to the various settings available from the ReportingService2010.GetItemParameters method of the SSRS management web service
Based on that comparison, you can then update the parameters on the SSRS server using the ReportingService2010.SetItemParameters method.
Finally, there is a connect issue "Report parameter defaults not updated during deployment" that is a bit more limited in scope to allow just auto-updating parameter defaults.
I have noticed this is only a problem when making updates to static parameter values (Value "1"). The expression parameter values seem to a good job of getting updated (Value "=iif(1=1, 1, 0)". Screenshot example included below.
I would suggest using an expression. Or if it's a static value just type that in at the manager page. For example:
//ssrsdev/Reports/manage/catalogitem/parameters/Accounts%20Receivables/Bill%20of%20Lading%20Comparison
Also, I typically deploy my reports using the ReportServerTools powershell cmdlet, so I don't know if maybe their deployment does a better job with updating parameters. So you might try installing and deploying with that tool instead of from Visual Studio.
Write-RsRestCatalogItem
#------------------------------------------------------
# --1,FILES: Add
# Upload file from disk to server
#------------------------------------------------------
## TARGET FOLDER
$rsFolder= "/Accounts Receivables" #Datasets #Cost
$rsReportPortalUri= "http://ssrsname/Reports/"
$locDir= "C:\MyPath\Solution\Report Project\"
Get-variable rsReportPortalUri; Get-variable rsFolder; get-variable locDir
## SOURCE ITEM
$rsItem= "Bill of Lading Comparison.rdl"
$locPath= $locDir + $rsItem
Get-variable locPath
## Write-RsRestCatalogItem (1)
Write-RsRestCatalogItem -Path $locPath -RsFolder $rsFolder -ReportPortalUri $rsReportPortalUri -RestApiVersion "v1.0" -Overwrite "true" -verbose
Parameters - "Static" vs "Expression"

SQL Server Reporting Services Default Values From Query not working in deployed report

In order to populate a textbox in a page header I am setting up a parameter (as you cannot use Fields) and referencing this in the textbox. The parameter has the Default Value set to "From Query" and the Dataset and Value Field are set accordingly. This works a treat in developmentt in Visual Studio 2005. Once I have deployed the report and am viewing the report in the ReportViewer control I get the error:
"Parameter validation failed. It is not possible to provide valid values for all parameters. (rsParameterError)".
If I remove the parameter, the report works fine.
(Strange thing is that I thought I had this working earlier).
You've probably checked, but has the default value copied over? I've had issues in the past with reporting services where the default values were lost when I moved a report from one box to another.
Thanks for the answer - it has pointed me in the right direction...I have been using my own program to deploy multiple reports so rarely look at them via the Report Manager website. Anyway - I just deployed the report on my home PC and it worked fine....looking at the report in Report Manager on both PCs I found that "Prompt User" on the PC that wasn't working was not ticked...go figure. Ticking this resolved the problem.
I am liking the results that I am getting from SSRS, but I am quite new to it and am finding some things (like this) a little frustating...mouse and keyboard are lucky to not find themselves thrown out the window!