【问题标题】:SSRS - Set default parameters and datasources based on folder it is deployed toSSRS - 根据部署到的文件夹设置默认参数和数据源
【发布时间】:2018-12-14 16:28:49
【问题描述】:

我们遇到了一个两难境地,我们需要通过简单的参数和数据源更改来维护相同的报告

我想知道是否有办法根据报告部署到的文件夹设置默认参数/数据源。

比如路径在Folder1,参数设置为X,datasource设置为X。如果在Folder2,参数设置为Y,datasource设置为Y,以此类推……

这在 SSRS 2016 中是否可行?

【问题讨论】:

    标签: reporting-services ssrs-2016


    【解决方案1】:

    我曾使用 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%)
    GO
    

    2) 创建一个包含我们服务器名称的表。 (你可能 还需要创建一个表来保存数据库的名称;如果 数据库名称通过环境更改)。

    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 )
        )
    GO
    

    3) 然后用您的环境的数据填充表格。

    USE DBA
    GO
    
    INSERT INTO dbo.DatabaseServers ( ServerName )
    VALUES ( 'ORIOM' );
    
    INSERT INTO dbo.DatabaseServers ( ServerName )
    VALUES ( 'PROMETEO' );
    
    INSERT INTO dbo.DatabaseServers ( ServerName )
    VALUES ( 'SQLA' );
    GO 
    

    4) 在 Visual Studio SSRS 项目中,创建一个共享数据源并 将它指向我们在前面的步骤中创建的数据库。

    Name: DataSource1
    Type: Microsoft SQL Server
    Conn String: Data Source=ORIOM;Initial Catalog=DBA
    

    5) 使用共享数据源创建共享数据集 以下查询将输出我们插入的服务器列表 上表。 (称之为“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) 将报告部署到服务器。运行报告,您将 询问您要针对哪个服务器执行报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 2010-10-09
      • 2013-10-30
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多