3

J'ai un rapport très simple dans SSRS qui est juste une table avec trois colonnes, un nom d'objet, un compte client et une date d'expiration.Configurer automatiquement l'abonnement de l'utilisateur dans SSRS

Dans mon rapport, j'inclue un filtre par ID utilisateur pour limiter les données aux seuls comptes clients de l'utilisateur connecté.

Je stocke les comptes clients de l'utilisateur dans un tableau simple avec domain \ alias | les champs de compte client qui sont remplis à partir d'un package SSIS.

Lorsqu'un nouvel alias | l'association de compte client est entrée, je voudrais également mettre en place un abonnement au rapport pour cet alias afin qu'ils soient notifiés quand il est mis à jour.

Est-ce possible?

J'ai récemment découvert le Report Server Web Service et je pense que cela peut aider. Est-ce que je peux installer de nouveaux abonnements ici? Idéalement, je voudrais faire un appel à cela dans mon package SSIS lorsqu'un nouveau compte client est identifié.

Notez également, Je ne crois pas données abonnements Driven travail pour plusieurs raisons:
1) J'utilise le paramètre UserID pour filtrer le rapport
2) Je voudrais que les utilisateurs soient en mesure de gérer leur abonnement se une fois qu'il est créé sous la rubrique « Mes abonnements »

MISE à JOUR
J'ai pu créer avec succès un abonnement pour moi-même en utilisant le service Web (voir ci-dessous) et je suis toujours en ho w cela peut être fait pour les autres utilisateurs bien qu'il ne cherche pas bon:

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

Je veux être en mesure de faire quelque chose comme ce qui suit avant d'appeler CreateSubscription, mais je ne peux pas le faire sans inclure le mot de passe de l'utilisateur.

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

ou d'une autre option que je trouve qui ne nécessite pas un mot de passe, mais renvoie une exception COM:

WindowsIdentity wi = new WindowsIdentity("[email protected]"); 
WindowsImpersonationContext ctx = null; 
ctx = wi.Impersonate(); 
+0

serait-il possible d'ajouter des entrées dans une table DB pour y parvenir? – earthling

Répondre

0

Nous avons fini à l'aide d'une solution personnalisée qui, pour le moment, il faudra un administrateur pour gérer les abonnements de l'utilisateur.

0

re: Je ne crois pas données abonnements Driven travailler pour plusieurs raisons:

1) J'utilise le paramètre UserID pour filtrer le rapport 2) Je voudrais que les utilisateurs soient en mesure de gérer leur abonnement une fois eux-mêmes est créé sous la rubrique « Mes abonnements »

euh .. Je suis assez sûr que les abonnements axés sur les données répondent à vos besoins, je pense que je pourrais travailler mon chemin autour de ces deux éléments en quelques minutes.

1) créer un formulaire Web pour gérer une table qui gère l'abonnement. Je veux dire, je pourrais le faire dans dreamweaver dans 10 minutes.

2) pour passer le paramètre, je suppose que je ne comprends pas votre hésitation