Sql server 2008 动态更改Sql Reporting Serivces 2008中的数据源

Sql server 2008 动态更改Sql Reporting Serivces 2008中的数据源,sql-server-2008,ssrs-2008,Sql Server 2008,Ssrs 2008,我想使用相同的报告(.rdl)为24个数据库生成报告 例如,如果我的报表(.rdl)中有一个用户表,那么报表(.rdl)的数据源应该动态更改。现在,我正在为24个数据库制作24个不同的报告 我想要一个在运行时更改了数据源的报表(.rdl)。实现这一点的方法是在报表(.rdl)文件中添加3个参数 服务器名 数据库名 如果需要的话 密码 然后更改数据源的连接字符串,如 =“数据源=”&参数!ServerName.Value&“初始目录=”&参数!DatabaseName.Value 这种方法唯一的一

我想使用相同的报告(.rdl)为24个数据库生成报告

例如,如果我的报表(.rdl)中有一个用户表,那么报表(.rdl)的数据源应该动态更改。现在,我正在为24个数据库制作24个不同的报告


我想要一个在运行时更改了数据源的报表(.rdl)。

实现这一点的方法是在报表(.rdl)文件中添加3个参数

服务器名

数据库名

如果需要的话

密码

然后更改数据源的连接字符串,如

=“数据源=”&参数!ServerName.Value&“初始目录=”&参数!DatabaseName.Value


这种方法唯一的一个小问题是参数名在URI中可见,因此请注意清空。实现这一点的方法可能是在报表(.rdl)文件中添加3个参数

服务器名

数据库名

如果需要的话

密码

然后更改数据源的连接字符串,如

=“数据源=”&参数!ServerName.Value&“初始目录=”&参数!DatabaseName.Value


这种方法唯一的一个小问题是参数名在URI中可见,因此请注意,我找到了解决问题的替代方案。我创建了一个单独的(.rdl)报告文件,该文件使用了在所有数据库中拥有权限的用户,并将数据源作为该用户,以及在数据库中创建单个过程的数据库,假设为admin数据库(用于所有共有的所有过程),在该过程中,我执行了其他数据库中存在的过程,如下所示:

set @sSql='Execute '+ @databasename + '.'+ @username + '.'+'GetData'
EXEC (@sSql)

其中username和Databasename出现在表中(对于所有数据库)和一个列名sentDate,该列名在对该Databasename执行过程后更新为todays date,以便数据源在执行过程后移到username和Databasename之后的下一个。并使订阅在10分钟后运行,以便通过每次执行时从不同的数据库获取数据来发送所有数据库的报告。

我找到了解决问题的替代方案。我创建了一个单独的(.rdl)报告文件,该文件使用了在所有数据库中拥有权限的用户,并将数据源作为该用户,以及在数据库中创建单个过程的数据库,假设为admin数据库(用于所有共有的所有过程),在该过程中,我执行了其他数据库中存在的过程,如下所示:

set @sSql='Execute '+ @databasename + '.'+ @username + '.'+'GetData'
EXEC (@sSql)
其中username和Databasename出现在表中(对于所有数据库)和一个列名sentDate,该列名在对该Databasename执行过程后更新为todays date,以便数据源在执行过程后移到username和Databasename之后的下一个。并使订阅在10分钟后运行,以便通过在每次执行中从不同的数据库获取数据来发送所有数据库的报告