Управляемые данными подписки SSRS Standard Edition 2008 - PullRequest
2 голосов
/ 24 октября 2011

Я довольно новичок в MSSQL и SSRS.

Я пытаюсь создать управляемую данными подписку в MSSQL 2008 Standard SSRS, которая выполняет следующие действия.

Отправлять результаты по электронной почтесообщить по адресу электронной почты, найденному в отчете.Запуск ежедневно

Например:

Select full_name, email_address from users where (full_name = 'Mark Price')

В этом столбце email_address будет использоваться для определения, кому отправлять электронные письма. Это также должно работать для нескольких результатов с несколькими адресами электронной почты.

Я думаю о том, чтобы сделать это, подписавшись на запрос, и если ничего не найдено, то ничего не происходит.Но если результат будет найден, тогда отчет изменит строку в таблице подписок, чтобы запустить отчет снова в следующую минуту или около того с правильной информацией электронной почты, найденной в результатах.Это глупая идея или нет?

Я нашел пару постов в блогах, утверждающих, что это работает, но я не мог понять их код достаточно, чтобы знать, что он делает.

Итак, любые предложенияо том, как это сделать, или если вы можете предложить что-то уже в Интернете с кратким описанием?

Ответы [ 5 ]

1 голос
/ 09 мая 2016

Я реализовал нечто подобное в SQL Server Standard, чтобы не платить за Enterprise.Сначала я создал отчет под названием «Запланировать DDR» (Отчет, управляемый данными).Этот отчет имеет следующие параметры:

Отчет по расписанию: имя отчета SSRS (включая папку), который вы хотите запустить при выполнении теста данных.Например, "/Accounting/Report1".

Набор параметров: строка, которая будет использоваться для поиска параметров, используемых в отчете.Например, «ABC».

Запрос на проверку необходимости запуска отчета: SQL-запрос, который будет возвращать одно значение, нулевое или ненулевое.Ноль будет интерпретироваться как «не запускать этот отчет»

Получатели электронной почты: список разделенных точкой с запятой получателей электронной почты, которые получат отчет, если он будет запущен.

Обратите внимание, что «Запланируйте отчет DDR »- это отчет, который мы здесь работаем, и он отправит мне свой вывод;он запускает другой отчет - в данном случае это «/ Accounting / Report1», и именно этому отчету нужны эти адреса электронной почты.Так что «Планирование DDR» на самом деле не отчет, хотя он запланирован и выполняется как единое целое - это гаджет для создания и запуска отчета.

У меня также есть таблица в SQL, определенная следующим образом:

CREATE TABLE [dbo].[ParameterSet](
            [ID] [varchar](50) NULL,
            [ParameterName] [varchar](50) NULL,
            [Value] [varchar](2000) NULL
) ON [PRIMARY]

Каждый набор параметров - в данном случае «ABC» - имеет набор записей в таблице.В этом случае записи могут быть ABC / placecode / AA и ABC / year / 2013, что означает, что в ABC есть два параметра: placecode и year, и они имеют значения «AA» и «2013».

Набор данных для отчета «Запланировать DDR» в SSRS:

DDR.dbo.DDR3 @reportName, @parameterSet, @nonZeroQuery, @toEmail;

DDR3 - это хранимая процедура:

CREATE PROCEDURE [dbo].[DDR3] 
   @reportName            nvarchar(200),
   @parameterSet   nvarchar(200),
   @nonZeroQuery   nvarchar(2000),
   @toEmail        nvarchar(2000)
AS
BEGIN
   -- SET NOCOUNT ON added to prevent extra result sets from
   -- interfering with SELECT statements.
   SET NOCOUNT ON;

   select ddr.dbo.RunADDR(@reportName,@parameterSet,@nonZeroQuery,@toEmail) as DDRresult;

   END

RunADDR - это CLR.Вот схема того, как это работает;Я могу опубликовать некоторый код, если кому-то захочется.

  • Настройка учетных данных
  • Выберите все параметры в таблице ParameterSet, где поле parameterSet соответствует имени набора параметров, переданному из расписания.Отчет DDR
  • Для каждого из этих параметров
    • Настройте массив параметров для хранения параметров, определенных в извлеченных строках.(Вот как вы используете таблицу для динамического заполнения параметров.)
  • Конец для
  • Если есть значение «nonZeroQuery», переданное из расписания A DDR
    • Затем запустите nonZeroQuery и выйдите, если вы вернули ноль строк.(Таким образом вы предотвращаете выполнение запроса, если какое-либо условие не выполняется; любой запрос, который возвращает что-либо, отличное от нуля, разрешает выполнение отчета)
  • Конец, если
  • Сейчаспопросить SSRS запустить отчет, используя параметры, которые мы только что извлекли из таблицы, и имя отчета, переданное из расписания A DDR
  • Получить вывод и записать его в локальный файл
  • Emailфайл на любые адреса электронной почты, которые были переданы из расписания A DDR
1 голос
/ 24 октября 2011

Это возвращает меня к моей старой работе, где я написал решение проблемы с помощью управляемых данными подписок в нашей среде разработки SQL Server 2005 Enterprise, а затем обнаружил, к моему ужасу, что у нашего клиента был только Standard.

Я добавил в закладки этот пост в то время, и это выглядело очень многообещающе, но я закончил тем, что перешел на работу, прежде чем у меня появилась возможность его реализовать.

Конечно, он нацелен на 2005 год,но один из комментариев, кажется, предполагает, что это работает и в 2008 году.

0 голосов
/ 06 апреля 2016

Вы можете использовать SQL-RD, стороннее решение, для создания и запуска расписаний, управляемых данными, без необходимости обновления до SQL Enterprise. Он также поставляется с планированием на основе событий (запускает отчет о событиях, включая изменения базы данных, изменения файлов, полученные электронные письма и т. Д.).

0 голосов
/ 30 июля 2013

На рынке есть несколько инструментов, которые поддерживают отчеты на основе данных SSRS:

Это инструменты для рабочего стола, но я полагаю, что вы не хотите заменять SSRS, просто чтобы расширить его. Вы можете использовать их с SQLServer Standard Edition.

0 голосов
/ 24 октября 2011

Вместо создания подписки для изменения таблицы подписок, я бы поместил эту часть в другое место, например, в агент SQL.Но идея та же самая.Регулярно работающий фрагмент SQL может добавлять или изменять строки в таблице подписок.

Google из "Таблицы подписок SSRS" дал несколько полезных результатов: Вот статья на основе 2005 года, нопринципы должны быть одинаковыми для 2008 года: Эта статья предназначена для 2008 года, и она очень близка к тому, что вы описываете.

Я бы просто посмотрел поля по одному вТаблица подписок и определить, что вам нужно для каждого.Попробуйте создать строку вручную (оператор вставки вручную), чтобы отправить себе подписку.

...