SSRS 2005 Subscription changes - sql-server-2005

OK this is my question(s) and its SSRS 2005 and SQL Server 2005/2008
I had been tasked with rebuilding a dozen or so reports that our users use on their data systems. We just build them and since every DB instance is schematically the same for all our clients, we push the reports out to their report servers for use.
So modified a great many reports, but the reports have blown away the clients subscriptions. So every user that uses these reports, that can be a great many seeing as how everyone can have their own set of parameters, has to run the reports manually or redo their subscriptions.
My company would very much like to avoid that, but I can not figure out how to change a report, and even with the same parameter set going in as the last report, keep the subscription there.
Even when I copy the report down to their report server and replace the old with the new using same name. The subscription is still there, but it gets modified.
I am looking either for a way to push down a subscription as part of the report, so that they will have minimal input to their subscriptions in order to tailor it to their needs
--OR ideally--
Upload a new version of the report to their report server and just have the subscription apply to the newest report that I have put on their server
It doesn't really matter which one but the second is best seeing as how individual users use the reports with individual names as a parameter
Many thanks in advance for anyone that can point me to the way to manage out subscriptions on my side, or enable my reports to assume the subscriptions of same named reports on their server.
--edit--
Want to put a clearer picture out there
I have a master copy of a report. The users use the report on their own systems.
I do some heavy modifications to the master copy of the report, and upload it to their systems. using the same name and same parameter set as the original report.
I want the subscriptions on their report server to find this report using the same name.
so XXX.report has a subscription. I change it to XXX.report locally, and upload to their servers. The subscriptions are not synching though.
Thanks

I'm not sure how you're accessing SSRS but you can use the following webservice methods to download and upload report subscriptions
ListSubscriptions
GetSubscriptionProperties
GetDataDrivenSubscriptionProperties
DeleteSubscription
CreateDataDrivenSubscription
CreateSubscription
Using those methods, you use ListSubscriptions to get a report's subcriptions. The Subscription.IsDataDriven property will tell you if it's data driven or not. For data driven subscriptions, use GetDataDrivenSubscriptionProperites to get the subscription properties, otherwise use GetSubscriptionProperties. All of those classes are XML serializable so you can save them to disk out of the box using the XmlSerializer.
To readd the subscriptions, use DeleteSubscription to delete the subcriptions one by one and then CreateSubscription or CreateDataDrivenSubscription to readd the subscriptions.
This is a hack though, because you should be able to modify reports without breaking the subscriptions. You should to the following to help diagnose the issue
Set SSRS logging to verbose for all components
Use the click once report builder to change the title of a report and see if the subscriptions break when you click save
Have the SQL profiler running on the ReportServer database to see what SQL is being generated when the subscriptions break

there's a tool called Reporting Services Scripter from Jasper Smith. I think it should work for you.

What I had to wind up doing was going back and change all the input parameters, including the sql content for the drop downs, back to what they originally were. Then playing with the SQL for the report to accept the new(old) parameters.
Thanks for your input. I accepted the web services answer as that is a path I will have to explore for our next update.

Related

Advantage to using SSRS or Crystal reports when the output is simple and static?

I have an ASP.NET/C# web app in which the user needs to run reports with various criteria that will ALWAYS yield simple, 2-dimensional, tabular data. I'm tempted to use a sophisticated reporting engine like SSRS or Crystal Reports, but these seem like overkill, since there's really nothing to design (all outputs will be to CSV, or JSON for the browser to render in an HTML table).
In this scenario, am I eating too much complexity by trying to use SSRS or Crystal Reports? Should I instead just write custom classes to dynamically assemble SQL statements (based on user selections) that will be fired against the database?
Does SSRS or CR add anything that is of value (within the requirements constraints I've already described)...?
Its depend on your requirement if you want to minimal overhead on your web app then please go ahead and use your custom codes since you are not required any styling or extra functions.
Just get JSON objects and fill in HTML and go Head !!
I am working with ssrs So i will talk just about it:
ssrs is a very useful tool for building a Reports
all You need is sql server Stored Procedure to build your report
then deploy it to report server and use this report from your app
-now all you need in your app just one page for all reports and you path the URL
dynamically with report name
You need to know this :
-ssrs did not work correctly with all browser
for Exp :
-Print Btn just work with IE
so Mozila and Google you need to use java script to print Report
-some issue with criteria section :
there is no way to rename the 'select value' with drop down
so you need to use java scrip to handle it
also you find ( Null and chick box ) any customer did not know what null mean so
you need first to remove null keyword or to rename it to anther Keyword
also you need java script to do this
the most problem i have :
all reports in reports server so
when i go to a new client what i need
just Sql server no need to setup visual studio and ssrs tool
just to deploy all reports on client report server
its very bad ..
i solved this issue with tool i had make to deploy the all the report
and no need to setup VS just to deploy the report
i think that the most important problem i have
and all of it i found a work around to solve .. and it takes more time
finally :
use ssrs or CR its very easy to use and make report very fast no need to create a custom page for report and develop all its control just like print and export
report to PDF,excel or any type
but if you have a few report i think no need to use any reports tool

Can I run my own DAX or MDX queries against Power BI?

I have a data model in Power BI desktop. I'd like to publish it to the server, but I'd also like to have an internal report run MDX (or DAX) queries against it. Is this possible? Can I just create a connection string and connect to Power BI like to a SSAS Cube? Maybe using the REST APIs?
Edit:
Thanks for your answers. Kyle gave me the best answer to my question, so I accepted his, but all of you made me clear that I'd better just use SSAS. This is what I did, with some hassle of seeing up HTTP bridge, but it works like a charm now.
It actually is possible in a literal sense - every time you run PowerBI, it creates a behind-the-scenes instance of SSAS Tabular that you can connect to and run queries against. Obviously this isn't directly supported by Microsoft, but I leave these steps in case anyone else wants to know how:
Navigate to %user%/AppData/Local/Temp/Power BI Desktop
Open your PowerBI Desktop model
A new folder will appear in the temp folder, inside that is a folder called AnalysisServicesWorkspace1111111111 (numbers at end are random)
Inside that folder is a file, msmdsrv.port.txt, which contains the port number (portnum) on which the SSAS Tabular model is running
You can open SSMS and connect to Analysis Services server localhost:portnum
The specific database instance you can find either via SSMS or the name of the GUID folder in the workspace folder (it'll be something like "33df46dd-8c77-46eb-bf01-8d545f626723.0.db")
Or you can use this as the server / catalog in an SSAS connection string i.e.
Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;
Initial Catalog=databasename;Data Source=localhost:portnum;
MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error
Also, for devs of note, inside that *.db folder is a SQLite database which contains all the PowerBI model metadata, you can modify it via code and have it persist as long as you do something trivial in the UI such as select add calculated column and then click away.
To my knowledge this is not possible. Whether there is a workaround or not, I don't know.
You're probably better served using SSAS and connecting to a model in that both from Power BI with the AS Connector and for whatever DAX queries you need to run against it.
By publish, if you mean to put it out on SharePoint, then, YES there is a way to access it.
PowerPivot for SharePoint actually consists of two components. First, there is the Service Application that runs in the SharePoint farm that is responsible for performing data refreshes, and usage analytics. The main part however is actually an instance of Analysis Services using the tabular engine. It’s properly referred to as Analysis Services SharePoint Mode, and as of SharePoint 2013/SQL Server 2012 SP1, it can be installed standalone. However, it is most commonly installed on SharePoint front end servers.
In the case above, the SharePoint front end server is named NautilusSP. You can also see that there is a model being hosted by the server already. The model is named by taking a workbook, and adding a GUID to it. This is done by Excel Services the first time that a model is interacted with. For example, if we add the file Health.xlsx, which contains an embedded PowerPivot model, and immediately refresh the object explorer in Management Studio, we will see that nothing has changed. However, if we then interact with the model at all, by clicking a slicer, or opening a pivot table category, we will see that the model has been automatically created for us.
Caveats:
These models are temporary. If they haven’t been used for a period of
time, they get deleted. Also, if the source workbook is updated, a new
model is automatically create upon first interaction. This can be seen
if we edit, and save our Health.xlsx workbook, and then open it in the
browser and interact with it.
The original model will be deleted in a garbage collection process. We
therefore cannot reliably target these models, as any reference will
become invalid relatively quickly.
The better and actually scalable option is to create a tabular model(we are talking SSAS here) and import this PowerPivot model into it.

How to distribute a SSRS report?

(distinction, I'm talking about distributing a report--not deploying a report to a report server)
To our product we've recently added support for it so it can dump various stats to a database (mssql server). Since then, I've made reports (where the datasource is my own sql server). But if I want to get these reports into the hands of customers (pointing to their own database, obviously) so they don't need to make their own (or if they don't want/can't make their own) is there a good way to do this?
I'd rather not have to give instructions on how to use the report creator and have them copy/paste what I've done nor have them open it and change the datasource. I'm completely new to using SSRS and don't know any of its intricacies. I know I can query the database to see what reports are available, is there a way to just add an entire report to the database via code (c# or java)?
Assuming that they have SSRS installed and configured, and assuming that their DB (tables, SPs etc.) match your report - one of the way this could be done is:
When creating your report use a shared datasource (don't use one embedded into report)
Ask a customer to create shared data source in their SSRS instance under the same name, but pointing to their DB
Profit! That's it, all you have to to is to give them the RDL file, they will upload it to their SSRS. It will use shared datasource they provided to pull data from their DB

Dynamically generating reports in Pentaho and dealing with report definitions store in the database

I am developing a reporting application where a user can select(and order) reports from a list of 100 reports and ask for a master report. This master report will contain all the selected reports in the exact order and with a table of contents listing the reports included in the master report. The reports available for the user to select (which could be 100s) are stored in the database.
My questions are :-
To generate the master report with the user selected reports, the only solution I can see is using the Reporting Engine API to generate a dynamic report into which I have to add the user selected reports as subreports. Is this the right and easiest way to approach this problem? Does anyone have samples of the Reporting Engine API usage especially to inject subreports in a Master report?
Since I am storing the reports in the db(blobs), I am trying to find a way to generate my sub reports with an inputstream rather than a URL as specified in ResourceManager.createDirectly(url, MasterReport.class), but haven't been successful till now. How can I generate reports from definitions stored in the database? There should be some resource abstraction.
Read your reports into a byte-array and then use the ResourceManager.createDirectly method as usual. That will solve your problem of parsing the reports.
You can parse them directly into SubReports by using
ResourceManager.createDirectly(bytes, SubReport.class)
These subreports can then be added to your master report as banded subreports. if you want your selected reports to start on a new page, make sure you set the "pagebreak-before" style on your subreport's report-header.
There is a resource abstraction: It is called "LibLoader" and you can create your own ResourceLoaders that deal with the problem of getting your data out of your database as raw-streams so that the ResourceFactory implementations can interpret/parse the raw-data.
But every database is designed differently and thus you as the system integrator have to write the glue code for it. We only can offer the interfaces.

Custom Report Items in local reports

i have read this article about custom report items(CRI)
http://msdn.microsoft.com/en-us/magazine/cc188686.aspx
The only problem is that CRI are only usable in reporting service and not in local reports. My question is it possible some how to use CRI in local reports( RDLC ). Also i am interested in which version of reporting service is this possible, if possible
Best Regards,
Iordan
Custom report items are not supported in .rdlc files. (http://msdn.microsoft.com/en-us/library/ms251712(v=vs.90).aspx) This is likely the approach taken by Microsoft because the ReportViewer used with these files is a free control, while more complex features like third-party controls are supported only on a full SQL Server report server.
One thing in particular I have done in the past to get around this is generate custom charts/controls/images etc. As images and then send them into the report as an image. Not an ideal solution but it works.