I have noticed that when I run a report that contains nothing but an execution time field, the report spends a long time loading whenever I have a large embedded dataset from sql. Why is this? The report is not even looking for any data from the dataset, so what is it doing with it? The load time is clearly proportional to the amount of data in the dataset(s). Is there a better way to create datasets? SQL Report Builder seems pretty unusable as is, since some of my datasets contain millions of records.
Share
Report generation involves three stages:
These stages run sequentially, so during the data retrieval stage Reporting Services does not know how the data will be used in the report and so it will execute the queries for all datasets in the report. The processing stage then takes the results of the dataset queries and applies the report structure, such as tables and grouping, to the data.
This is why your report is executing the dataset query even though the report only contains an execution time field, and is also why it’s important to ensure that datasets only return the data required for the report. Minimising the amount of data retrieval is important for good report performance.