Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 如何在SSRS报告中将数据库名称作为参数传递_Reporting Services - Fatal编程技术网

Reporting services 如何在SSRS报告中将数据库名称作为参数传递

Reporting services 如何在SSRS报告中将数据库名称作为参数传递,reporting-services,Reporting Services,我的要求是我想通过“在SSRS报告中使用databasename作为参数” 当用户运行时,报告系统将要求从参数列表中选择数据库名称,我将从“select name from sys.databases”中检索这些值 一旦用户从参数中选择值,该值必须传递给 “使用databasename”[参数中的数据库名称值] 例如:参数名:@param1 所以在报表SQL查询中,我可以使用像“use@param1”这样的go和select语句吗 可能吗?请告知。您可以动态生成查询并使用sp_executesq

我的要求是我想通过“在SSRS报告中使用databasename作为参数”

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

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

例如:参数名:@param1 所以在报表SQL查询中,我可以使用像“use@param1”这样的go和select语句吗


可能吗?请告知。

您可以动态生成查询并使用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)按钮并生成连接字符串,但在参数(在我的示例中为DatabaseName)中替换初始目录值

="Data Source=YourServerName;Initial Catalog=" + Parameters!DatabaseName.Value
一旦设置了基于表达式的连接字符串,就无法在设计时对其求值。当您来创建数据集时,将无法在查询设计器中运行任何查询或刷新数据集属性中的字段。这不是一个大问题,只需使用常规连接字符串,一旦报表正常工作,就可以将其切换到基于表达式的字符串


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

您是说要更改SSR在运行时使用的数据库吗?还是只需要显示数据库名称列表作为报表的筛选器?