SSRS - установите параметры по умолчанию и источники данных в зависимости от папки, в которой они развернуты - PullRequest
0 голосов
/ 14 декабря 2018

Мы сталкиваемся с дилеммой, в которой мы поддерживаем одни и те же отчеты с простым изменением параметров и источника данных.

Мне интересно, есть ли способ установить параметр / источник данных по умолчанию на основепапка, в которой развернут отчет.

Например, если путь находится в папке Folder1, задайте для параметра значение X, а для источника данных - значение X. Если он находится в папке Folder2, задайте для параметра значение Y, а для источника данных - Y и т. д...

Возможно ли это в SSRS 2016?

1 Ответ

0 голосов
/ 14 декабря 2018

Я использовал Dynamic Data Sources для анализа данных с одной и той же базой данных на разных серверах (в качестве примеров можно привести такие сценарии, как базы данных ReportServer или приложения, которые дублируются для разных подразделений или местоположений).Вы можете использовать эту технику для динамической установки источника данных в зависимости от папки.Возможно, вам также понадобится использовать глобальные функции ReportFolder() and ReportServerUrl().

Ниже приведены инструкции по установке параметра / источника данных по умолчанию на основе папки, в которой развернут отчет.


Глобальные функции:

Выражение:

="Folder: " & Globals!ReportFolder & ", ReportName: " & Globals!ReportName & ", Url: " & Globals!ReportServerUrl

enter image description here

Создание динамического источника данных

Вот ссылка: 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 Project создайте общий источник данных и укажите его в базе данных.создали в предыдущих шагах.

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 создали на предыдущем шаге.(Назовите это «Shared»).

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) Откройте окно свойств встроенного источника данных отчета и нажмите кнопку «Выражение».Создайте строку подключения с параметром ServerName.

="Data Source="+ Parameters!ServerName.Value+ ";Initial Catalog=DBA"

10) Развернуть отчет на сервере.Запустите отчет, и вас спросят, на каком сервере вы хотите выполнить отчет.

...