- Problème
Les paramètres dynamiques que vous configurez dans SQL Report Builder (comme =Today
ou =Today.AddDays(-7)
) fonctionnent lors de l'exécution manuelle d'un rapport, mais SSRS ne supporte pas directement les expressions dynamiques dans les abonnements planifiés. Lors de la création d'un abonnement, SSRS attend des valeurs fixes pour les paramètres.
- Solution : Utiliser un Data-Driven Subscription
Pour contourner ce problème, vous pouvez utiliser un abonnement basé sur les données (Data-Driven Subscription). Cette approche vous permet de générer des valeurs dynamiques pour les paramètres au moment de l'exécution de l'abonnement.
Étapes :
Créez une source de données externe :
- Utilisez une base de données SQL où vous configurez une table pour stocker les dates dynamiques nécessaires (
StartDate
etEndDate
).- Par exemple :
CREATE TABLE SubscriptionParameters (
StartDate DATE,
EndDate DATE
);
INSERT INTO SubscriptionParameters (StartDate, EndDate) VALUES (GETDATE() - 7, GETDATE()); ```
**Configurez l'abonnement basé sur les données** :
- Dans SSRS (portail web ou via SQL Server Management Studio), créez un abonnement de type *Data-Driven*.
- Spécifiez la requête SQL qui fournit les paramètres dynamiques :
```sql
SELECT StartDate, EndDate
FROM SubscriptionParameters; ```
- Mappez les colonnes de la requête aux paramètres `StartDate` et `EndDate` du rapport.
**Planifiez l'abonnement** :
- Configurez une planification pour exécuter l'abonnement à intervalles réguliers (par exemple, tous les jours).
- Alternative : Script SQL pour Mise à Jour des Paramètres
Si les abonnements basés sur les données ne sont pas possibles (par exemple, avec une édition Standard de SQL Server), vous pouvez :
Configurer des paramètres par défaut dans le rapport (=Today
et =Today.AddDays(-7)
).
Écrire un script SQL ou un script PowerShell qui met à jour automatiquement les paramètres d'abonnement dans la base de données SSRS.
Par exemple, pour modifier les paramètres d'un abonnement existant :
UPDATE Subscriptions
SET Parameters = '<nouvelle configuration des paramètres>'
WHERE SubscriptionID = '<ID de l’abonnement>';
Vous devrez spécifier les valeurs de Parameters
dans un format XML. Ce format peut être récupéré en explorant la base de données SSRS.