Автоматическая настройка подписки пользователя в SSRS - PullRequest
3 голосов
/ 30 ноября 2010

У меня есть очень простой отчет в SSRS, который представляет собой таблицу с тремя столбцами, именем объекта, учетной записью клиента и датой истечения срока действия.

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

Я храню учетные записи клиентов пользователя в простой таблице с доменом \ alias | поля учетной записи клиента, которые заполняются из пакета служб SSIS.

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

Возможно ли это?

Недавно я обнаружил веб-службу сервера отчетов и думаю, что это может помочь. Могу ли я настроить новые подписки здесь? В идеале я хотел бы позвонить по этому вопросу в моем пакете служб SSIS, когда будет идентифицирована новая учетная запись клиента.

Также обратите внимание, Я не верю, что управляемые данными подписки будут работать по нескольким причинам:
1) Я использую параметр UserID для фильтрации отчета
2) Я бы хотел, чтобы пользователи могли сами управлять своей подпиской после ее создания в разделе «Мои подписки»

UPDATE
Мне удалось успешно создать подписку для себя с помощью веб-службы (см. Ниже), и я все еще изучаю, как это можно сделать для других пользователей, хотя это выглядит не очень хорошо:

ReportingService2010SoapClient service = new ReportingService2010SoapClient();
service.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
TrustedUserHeader userHeader = new TrustedUserHeader();

string desc = "Send to Document Library";
string eventType = "TimedSubscription";
string scheduleXml =
       @"<ScheduleDefinition>" +
        "   <StartDateTime>2010-11-30T08:00:00-08:00" +
        "   </StartDateTime>" +
        "   <WeeklyRecurrence>" +
        "      <WeeksInterval>1</WeeksInterval>" +
        "      <DaysOfWeek>" +
        "         <Monday>True</Monday>" +
        "      </DaysOfWeek>" +
        "   </WeeklyRecurrence>" +
        "</ScheduleDefinition>";

ParameterValue[] extensionParams = new ParameterValue[4];

extensionParams[0] = new ParameterValue();
extensionParams[0].Name = "TO";
extensionParams[0].Value = "my alias";

extensionParams[1] = new ParameterValue();
extensionParams[1].Name = "IncludeReport";
extensionParams[1].Value = "FALSE";

extensionParams[2] = new ParameterValue();
extensionParams[2].Name = "IncludeLink";
extensionParams[2].Value = "TRUE";

extensionParams[3] = new ParameterValue();
extensionParams[3].Name = "Subject";
extensionParams[3].Value = "@ReportName was executed at @ExecutionTime";



string matchData = scheduleXml;
ExtensionSettings extSettings = new ExtensionSettings();
extSettings.ParameterValues = extensionParams;
extSettings.Extension = "Report Server Email";

string id;
service.CreateSubscription(userHeader, "/report path/report name",
                            extSettings, desc, eventType, matchData, null, out id );

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

NetworkCredential credentials = new NetworkCredential("alias", "", "userdomain");
service.ClientCredentials.Windows.ClientCredential = credentials;

или другой найденный вариант, который не требует пароля, но выдает исключение COM:

WindowsIdentity wi = new WindowsIdentity("alias@fqdn");
WindowsImpersonationContext ctx = null;
ctx = wi.Impersonate();

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Завершено с использованием пользовательского решения, которое пока требует администратора для управления подписками пользователя.

0 голосов
/ 30 марта 2011

re: я не верю, что управляемые данными подписки будут работать по нескольким причинам:

1) Я использую параметр UserID для фильтрации отчета 2) Я бы хотел, чтобы пользователи могли сами управлять своей подпиской после ее создания в разделе «Мои подписки»

э-э ... Я почти уверен, что управляемые данными подписки БУДУТ удовлетворить ваши потребности, я думаю, что смогу обойти оба этих пункта всего за несколько минут.

1) создать веб-форму для управления таблицей, которая управляет подпиской. Я имею в виду, я мог бы сделать это в Dreamweaver за 10 минут.

2) так что передавайте параметр, наверное, я не понимаю ваших колебаний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...