Sql 保存SSRS报告参数

Sql 保存SSRS报告参数,sql,sql-server,reporting-services,ssrs-2012,Sql,Sql Server,Reporting Services,Ssrs 2012,我有一个SSRS报告,每次都需要运行多个参数。当用户想要运行报告时,他总是需要填写这些参数。我们在SSRS服务中是否有将这些参数保存为模板并用于将来运行的解决方案,或者实现这一点的最佳方法是将报告参数保存为模板 目前我有SSRS报告,可以在Sharepoint中查看该报告。您不能保存单个用户在SSRS中所做的先前选择,以便该用户下次登录时显示该选择。您可以通过设置默认值进行默认选择。每次运行报表时,报表的每个用户都会显示此默认值。您可以将默认值设置为select的结果,但无论在默认值中构建什么逻

我有一个SSRS报告,每次都需要运行多个参数。当用户想要运行报告时,他总是需要填写这些参数。我们在SSRS服务中是否有将这些参数保存为模板并用于将来运行的解决方案,或者实现这一点的最佳方法是将报告参数保存为模板


目前我有SSRS报告,可以在Sharepoint中查看该报告。您不能保存单个用户在SSRS中所做的先前选择,以便该用户下次登录时显示该选择。您可以通过设置默认值进行默认选择。每次运行报表时,报表的每个用户都会显示此默认值。您可以将默认值设置为select的结果,但无论在默认值中构建什么逻辑,每次运行报表时都会应用该逻辑。

这是一个我没有测试过的理论,因此不确定它的效率如何。但是想法是这样的

虽然您不保存上次使用的参数,但您可以在
ExecutionLog
表中查看用户上次运行报告的时间,提取提供给此报告的参数,并将其作为下次运行的默认值

只需查询执行日志即可获得详细信息:

SELECT 
R.Name
,L.[Parameters]
,L.username
,L.TimeStart 

FROM dbo.ExecutionLog L WITH (NOLOCK)  

INNER JOIN dbo.Catalog R WITH (NOLOCK) 
    ON L.ReportID = R.ItemID 

WHERE R.Name =  'your report name'
and L.username = @user_name
这将为您提供报告的历史记录(取决于您的RS设置)

只需使用日志的最新实例(可能是max L.TimeStart)。然后提取参数,然后设置报告的默认值

再次。。不确定这有多有效,但它可能会工作

如果您的参数是级联参数,那么您可能会遇到问题,因为以前的参数值可能不再有效。。但是你明白了。

你可以这样做

假设我们在报告中使用了两个参数,@Country和@Category

通常情况下,可用值来自如下数据集:

SELECT DISTINCT CountryID, CountryName FROM myTable ORDER BY CountryName
…以及类似的类别

假设用户使用以下参数运行报告

CountryID=8994245(法国、德国和英国) 和 类别ID=11,15(汽车、自行车)

我们需要创建一个表来与用户一起存储这些值。 差不多

CREATE TABLE userParams(userName nvarchar(128), reportName nvarchar(128), paramName nvarchar(128), paramValue int)
在主报表的数据集查询开始时,您可以保存参数值

DELETE FROM userParams WHERE userName = SYSTEM_USER AND reportName = 'myReportName'
INSERT INTO userParams
    SELECT DISTINCT SYSTEM_USER, 'myReportname', 'Country', CountryID FROM myTable WHERE CountryID IN (@Country)
INSERT INTO userParams
    SELECT DISTINCT SYSTEM_USER, 'myReportname', 'Category', CategoryID FROM myTable WHERE CategoryID IN (@Category)
好的,现在我们有了每个用户保存的最后一个参数,我们只需要创建一个数据集来读取它们,并将它们用作默认值

创建一个名为
dsCountry\u Defaults
的数据集,使用类似于

SELECT CountryID from userParams WHERE userName = SYSTEM_USER and reportName = 'myReportName'
在您的国家/地区参数设置中,将默认参数设置为查询并指向此数据集

对其余参数重复此操作

应该是这样的


如果您使用SP作为数据集,则需要对其稍加修改,但原则是相同的。

Google“ssrs中的默认参数”-第一次点击告诉您如何修改。