【发布时间】:2018-12-14 16:28:49
【问题描述】:
我们遇到了一个两难境地,我们需要通过简单的参数和数据源更改来维护相同的报告
我想知道是否有办法根据报告部署到的文件夹设置默认参数/数据源。
比如路径在Folder1,参数设置为X,datasource设置为X。如果在Folder2,参数设置为Y,datasource设置为Y,以此类推……
这在 SSRS 2016 中是否可行?
【问题讨论】:
标签: reporting-services ssrs-2016
我们遇到了一个两难境地,我们需要通过简单的参数和数据源更改来维护相同的报告
我想知道是否有办法根据报告部署到的文件夹设置默认参数/数据源。
比如路径在Folder1,参数设置为X,datasource设置为X。如果在Folder2,参数设置为Y,datasource设置为Y,以此类推……
这在 SSRS 2016 中是否可行?
【问题讨论】:
标签: reporting-services ssrs-2016
我曾使用 Dynamic Data Sources 来分析不同服务器上相同数据库的数据(例如 ReportServer 数据库等场景,或针对不同部门或位置重复的应用程序)。您可以利用此技术根据文件夹动态设置数据源。您可能还需要使用全局函数 ReportFolder() and ReportServerUrl()。
以下是如何根据报表部署到的文件夹设置默认参数/数据源的步骤。
表达式:
="Folder: " & Globals!ReportFolder & ", ReportName: " & Globals!ReportName & ", Url: " & Globals!ReportServerUrl
这是一个链接:mssqltips.com/sqlservertip/4302。下面是 MSSQLTips 文章中的步骤。
1) 创建一个数据库来保存我们的信息 基础设施。
USE [master] GO CREATE DATABASE [DBA] CONTAINMENT = NONE ON PRIMARY ( NAME = N'DBA', FILENAME = N'E:\MSSQL\DBA.mdf' , SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'DBA_log', FILENAME = N'E:\MSSQL\DBA_log.ldf' , SIZE = 10240KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO2) 创建一个包含我们服务器名称的表。 (你可能 还需要创建一个表来保存数据库的名称;如果 数据库名称通过环境更改)。
USE DBA GO CREATE TABLE DatabaseServers ( Server_ID INT IDENTITY(1, 1) NOT NULL , ServerName VARCHAR(255) NOT NULL CONSTRAINT PK_DatabaseServers PRIMARY KEY CLUSTERED ( Server_ID ) ) GO3) 然后用您的环境的数据填充表格。
USE DBA GO INSERT INTO dbo.DatabaseServers ( ServerName ) VALUES ( 'ORIOM' ); INSERT INTO dbo.DatabaseServers ( ServerName ) VALUES ( 'PROMETEO' ); INSERT INTO dbo.DatabaseServers ( ServerName ) VALUES ( 'SQLA' ); GO4) 在 Visual Studio SSRS 项目中,创建一个共享数据源并 将它指向我们在前面的步骤中创建的数据库。
Name: DataSource1 Type: Microsoft SQL Server Conn String: Data Source=ORIOM;Initial Catalog=DBA5) 使用共享数据源创建共享数据集 以下查询将输出我们插入的服务器列表 上表。 (称之为“SharedDataSet”)。
SELECT ServerName FROM dbo.DatabaseServers ORDER BY ServerName;6) 在报告数据集上,我们
create a new dataset to point to the shared dataset是我们在上一步中创建的。 (称它为 “共享”)。7) 创建数据集后,我们
create a report parameter named "ServerName"类型为文本并将其设置为可见。提示是“输入 服务器名称”。8) 在可用值页面上,我们选择我们之前创建的
Shared Dataset as the Dataset and select the ServerName field on both "Value field" and "Label field"组合框。9) 打开报表的嵌入式数据源属性窗口并单击 在表达式按钮上。使用 服务器名称参数。
="Data Source="+ Parameters!ServerName.Value+ ";Initial Catalog=DBA"10) 将报告部署到服务器。运行报告,您将 询问您要针对哪个服务器执行报告。
【讨论】: