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