Rather than generate my RS reports by directly accessing a SQL database, I'd like to take advantage of Domain Objects I've already written in another application, where complex business rules and calculations already exist so that I don't have to duplicate that logic in stored procedures and other code. I want to keep it DRY.
It would be nice to treat the reporting concern as just another type of view
Is that possible with Reporting Services? It seems logical that it should be, but I'm not finding much information out there.
Yes. You can use the ReportViewer control in Local Processing mode. In this mode, you can just pass a DataSource instead of directly accessing the Database.
Keep in mind that there are certain things that you cannot do in LocalMode that you can in ServerMode. One that I recall, is exporting to anything other than PDF or Excel.
Related
In my client environment there are many SSRS reports have been deployed. Each having separate data source and it is pointing same server and same database.
Is it good that to convert into single data source based on the database base. Will there be any performance issue or any other issue will occur? Please suggest me.
If you need Manageability then please go with a shared data source.
As far i'm aware, there won't be any performance issues.
When you create a shared data source, all of the connection information for the data source you’re connecting to is stored outside of the report, and deployed as its own object. Other reports are able to reference the shared data source.
On whether its good to convert into single data source based on the database base, i would say it depends, but in general I tend to use the following guidelines.
If I have multiple reports that are going to be referencing the same data source, a shared data source makes perfect sense
If I have a data source that I know is only going to be used by one report, and never by any others, then an embedded data source might make more sense, although this is kind of a rare case in my experience. If you do created an embedded data source and start getting requests for other reports using the same data source…you should definitely convert it to a shared data source.
The advantage of using shared data sources starts to become evident once you start to have a large number of reports to manage. If you have to point your reports to different environments like dev / QC / Stg / prod, you can change all the reports at once by simply changing the information in the shared data source. Had you created all your reports with embedded data sources however, you’d have to edit each report individually, and if you have a lot of reports, that can translate into a lot of work.
I managed to create a typical SSRS report by building one through MSSQL BI development environment. I used a simple procedure to retrieve a list of databases that reside on our SQL servers. My question would be...would SSRS allow me to build a native UI app in displaying SQL procedure results in a more user friendly way?
For instance, I am currently manually running procedures to retrieve information about our backend systems, and I wonder whether SSRS would be an ideal tool to automate the process by allowing a user to view the information that the procedures produce in a more user friendly way?
I'm not 100% sure about your question, when you ask (emphasis mine):
would SSRS allow me to build a native UI app in displaying SQL procedure results
In any case, SSRS isn't meant for nor very good at functioning as an "App" with proper UI/UX. If you're just after basic features for letting the user pick a stored procedure and then reporting the results back to the user SSRS may suit your needs.
You continue:
I wonder whether SSRS would be an ideal tool to automate the process by allowing a user to view the information that the procedures produce in a more user friendly way?
Whether it's "ideal" really depends on your context.
Finally, the last bit is somewhat confusing: "more" than what? Running queries directly in SSMS? Then probably yes.
Bottom line: if you stick with using SSRS for reporting purposes (possibly interactive, to a certain degree), then SSRS may be the ideal tool for your case.
I have two SQL Server databases with identical schemas, but different data. I also have SSRS generating reports, in native mode, for one of the databases. All reports the same shared data source.
I would like to allow users to get reports for the other database. I created a second shared data source for the second database. Modifying the reports to use this second data source results in reports as expected.
Because the RDLs are the same, except for the data source, and because I don't want to maintain what are basically duplicate reports, I'm looking for a way to dynamically switch data sources, depending on user input.
Is there an easy means of accomplishing this? An existing solution would be best. Barring that, can the RDL's data source be parametrized? Or, can the RDS's connection string be parametrized?
You can use parameters or other expressions in the connection string.
See http://msdn.microsoft.com/en-us/library/ms156450%28SQL.90%29.aspx (2005)
or http://msdn.microsoft.com/en-us/library/ms156450.aspx (2008)
I'm going to piggy back on the last answer. Yes, use parameters in the connection string, but populate the data to ensure your users aren't seeing database names, etc. that you might not want them to see for security. You can store the values in a table, pass both the human readable and SQL Server specific values.
Does that make sense?
I have MS Access reports that needs to be displayed in a crystal report in .net windows application. Is there any way to do it or some alternatives?
I am not sure about the right approach to complete this, can anybody help here?
Hum, I don’t think this is possible. I not aware that access reports can be converted or transferred to crystal reports anyway.
Remember, access reports have event code, and even can have code run in the report for EACH line of detail that displays. In other works, not only are access reports amazing, but they are fully programmable with VBA code embedded INSIDE of the report.
Because of this issue, you need ms-access running and loaded for those reports to work correctly (the VBA is required, and functions, and also that of sql queries..of which a report can be based on SEVERAL data sources and several tables all at the SAME TIME).
Even more worry is that there is not any kind of code or report converter here from ms-access to crystal reports. So, you never could in any way easy way transfer reports from ms-access to crystal reports.
You could attempt to embed ms-access as a com object, but all kinds of problems like page numbering etc. can’t really be controlled here if the report is to appear inside of the crystal report.
I STRONLY recommend that if you need some reports in crystal reports, then have the appropriate reports built in crystal and you avoid this whole mess. And, you avoid having ms-access in the mix. Or, dump crystal, and only use ms-access here.
Attempting to embed word, excel, pdf, or other com objects such as ms-access inside of some crystal report is formula for VERY unreliable applications. This is likely not possible, but even if it was, I would not let loose an application of this type. Heck, embedding pdf’s in a access report can’t even reliable work (they break after some stupid pdf update gets issued automatic). This type of mixed up systems near guarantee break when one or the other system has some automatic update occurring!
You start mixing up several applications and it will cost you buckets support trying to keep that mess running.
If you MUST take different reports from several different systems, then send out all the reports to pdf, and then use some pdf tools to combine them into one final pdf document.
Don’t try t mix reporting systems at the application level. It not reliable even if this was possible..
I would like to use SQL Reporting Services 2008 to generate my reports, but I want to use my own UI for specifying the report type, columns, parameters and everything. I want to be able to take these criteria, and then kick off an asynchronous request to SSRS and have the report emailed to me. Is this possible? I don't want to go all the way down the road of researching SQL Reporting Services 2008 only to find that it doesn't do what I need it to do. Also, I will have a ton of DB partitions that the data will need to be pulled from. Some reports will need to pull data from only one of these, but other ones may actually need to span different databases. Is it possible when sending a report request to SSRS to specify what servername/database to pull the data from? Is it possible to tell it to take the data from multiple databases and combine it? Thanks.
Like Crystal Reports, ActiveReports and other report generators, SSRS has two basic elements behind each report: the SQL query and the report layout. No matter what tool you use for the SQL -- it can be inline SQL in the report or a call to a stored procedure -- it's going to be the same query. Multiple databases are fine as long as you can specify them up front.
You can have parameterized queries, so the user is prompted to input the relevant filters (customer ID, product group, date range, whatever).
Doing the report layout is similar to other tools -- you drag and drop controls like labels onto the report, and set their formatting.
SSRS does provide a lot of options for distributing the report, including email. You can embed the report in an ASP.Net web page, leave it on the report server site for users to browse to, run it in the wee hours of the morning and cache it so every user doesn't have to wait for the lengthy query to run.
It's a great tool. I think it will be worth your effort to experiment with it. I would wait on creating the customized UI until you've exhausted the possibilities inherent in the tool.
SSRS is not designed with this scenario in mind, for that matter I am not sure that any out of the box reporting solution is going to have an elegant solution for this. While SSRS can do what you are asking (as well as others), it is by no means quick or easy. You seem to be looking for an advanced ad-hoc solution with dynamic sourcing of the data. I would first question the requirements and determine if the business scenario really justifies such an implementation. I would weigh custom building a solution vs your learning curve with a BI reporting solution. You may find that it is easier to just build something on your own.
I think the heterogeneous dynamic database mashup is probably going to be the most challenging part.
Depending on what your scalability requirements are, one place that has that part covered, and a report writer, is Access. (Duck! Incoming!)
I think you may be creating a rod for your own back to a certain extent as RS ships with a few interfaces for report creation.
Mind you the end product is an rdl file which is nothing but xml, so you can write them by hand if you really like.
Multiple data sources are supported, but combining them on a single control/chart/etc are not, so you'll need to configure yourself a cross database capability from one of your data-sources prior to the report request if you want to do that.