2009-08-26 6 views
1

Notre application utilise SQL Server Reporting Services et permet aux utilisateurs d'ajouter des filtres personnalisés aux rapports. Nous faisons cela en modifiant le RDL et en téléchargeant le RDL modifié sur le serveur pour créer un nouveau rapport. Le problème est qu'après que le rapport a été exécuté une fois, il n'est plus nécessaire; c'est vraiment juste un rapport temporaire. De toute évidence, cela aboutirait à de nombreux rapports temporaires. Nous avons besoin d'un moyen de les nettoyer.Nettoyage des rapports SSRS temporaires

Nous avons déjà pensé à des méthodes externes telles que la création d'un service ou d'un travail pour supprimer périodiquement les rapports, et c'est probablement ce que nous finirons par faire si nous ne pouvons pas trouver quelque chose de mieux. Ce que nous nous demandons, est-ce que SSRS lui-même fournit une meilleure façon de le faire? Nous avons pensé essayer d'utiliser en quelque sorte une instance mise en cache qui serait expirée, mais cela ne semble fonctionner que sur une instance exécutée d'un rapport et non sur le rapport lui-même. Autant que je sache, il n'y a aucun moyen de mettre un rapport à expiration. Existe-t-il un autre moyen de faire en sorte que SSRS se nettoie pour nous?

La suppression immédiate du rapport n'est pas une option car notre exécution est asynchrone.

Répondre

2

Intégré, il n'y a rien. Mais écrire quelque chose vous-même est assez facile. Essayez un processus qui interroge votre catalogue de rapports pour ceux qui datent de plus d'une demi-heure (ou plus). Vous pouvez même joindre à ReportServerTempDB pour voir s'ils ont encore une session active (auquel cas, vous les ignorez un peu plus longtemps). Une fois que vous les avez trouvés, il est facile de les récupérer à l'aide de l'interface du service Web et de les supprimer du catalogue.

Mais ... Je chercherais une meilleure façon de fournir le filtre personnalisé, en utilisant du code. Vous pouvez certainement fournir le filtre en tant que paramètre et utiliser le code VB dans le rapport pour convertir ce que l'utilisateur fournit en quelque chose qui pourrait être évalué pour chaque ligne.

Rob

+0

Bonne astuce pour vérifier la session active dans la base de données temporaire. Quant à l'utilisation du code intégré dans le rapport, c'est une bonne idée, mais cela ne fonctionnera probablement pas pour notre scénario. Notre exigence est qu'il soit très facile pour nos utilisateurs finaux de développer leurs propres rapports personnalisés. Les obliger à écrire du code pour leurs rapports ne volera probablement pas. Je me demande également quel serait l'impact sur les performances du code évaluant chaque rangée. –

Questions connexes