【问题标题】:how to pass a database name as a parameter in SSRS Report如何在 SSRS 报告中将数据库名称作为参数传递
【发布时间】:2014-07-04 10:23:08
【问题描述】:

我的要求是我想传递“使用数据库名称作为 SSRS 报告中的参数”。

当用户运行报告系统时,系统会要求从参数列表中选择数据库名称,这些值是我从“从 sys.databases 中选择名称”中检索的

一旦用户从参数中选择值,该值必须传递给 "use databasename"[参数中的数据库名称值]

例如:参数名称:@param1 所以在报告 SQL Query 中我可以像“use @param1”那样使用 go and select 语句

有可能吗?请指教。

【问题讨论】:

  • 您是说要更改 SSRS 在运行时使用的数据库吗?还是只需要显示一个数据库名称列表作为报表的过滤器?

标签: reporting-services


【解决方案1】:

您可以动态构建查询并使用 sp_executesql 运行它。
下面是一个例子,我用它来返回一个表、视图、存储过程和函数的列表,用于在参数@DatabaseName 中传递的给定数据库名称

DECLARE @SQLScript nvarchar(4000)

SET @SQLScript = 
'USE ' +@DatabaseName + 
'SELECT 
    S.name as SchemaName,
    O.name as ObjectName,
    O.Type,
    REPLACE(O.type_desc,''_'','' '') as TypeDescription,
    O.create_date as CreatedDate,
    O.modify_date as ModifiedDate
FROM 
    sys.objects O
JOIN
    sys.schemas S
    ON
    O.schema_id = S.schema_id
WHERE
    O.type IN (''FN'',''IF'',''P'',''TF'',''U'',''V'') '

EXECUTE sp_executesql @SQLScript


另一种方法是使用嵌入式连接创建数据源(这不适用于共享数据源引用)并将连接字符串构建为表达式。

从您的数据源属性确保选择了嵌入式连接,单击表达式 (fx) 按钮并构建您的连接字符串,但用您的参数(在我的示例中为数据库名称)替换初始目录值。

="Data Source=YourServerName;Initial Catalog=" + Parameters!DatabaseName.Value

一旦您设置了基于表达式的连接字符串,就无法在设计时对其进行评估。当您开始创建数据集时,您将无法在查询设计器中运行任何查询或刷新数据集属性中的字段。不是主要问题,只需使用常规连接字符串,一旦报告工作,将其切换为基于表达式的连接字符串。

您也可以使用此方法将服务器名称作为参数传递。

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
相关资源
最近更新 更多