2009-11-25 5 views
11

Je génère dynamiquement des fichiers RDL pour SSRS 2008, en assemblant mes rapports à partir des «blocs de construction» que j'ai définis comme rapports sur Report Server et que j'utilise comme sous-rapports sur mon serveur. rapport généré.Utilisation d'une source de données partagée pour les rapports générés et déployés dynamiquement

Sur mon serveur de rapports, j'ai une seule source de données partagée qui fonctionne tant que je lance des tâches directement sur le serveur de rapports.

Ce que je suis en train d'accomplir est la suivante:

  • mon rapport principal produit devrait faire référence à ces données partagées la source
  • mes sous-rapports contenus dans le rapport principal produit devrait également utiliser la même source de données
  • après que je Déployez le rapport serveur de rapports en utilisant l'interface WebService, je voudrais être en mesure de voir réellement le rapport tout de suite

pour l'instant, je peux genres Je peux très bien le déployer sur le serveur de rapports et le valider, et ça se voit.

Mais lorsque je tente de voir le rapport, je reçois une erreur que ma source de données est invalide ou a été supprimé ou quelque chose .......

Qu'est-ce que je manque ?? Je suis à peu près sûr d'avoir la bonne source de données - GUID pour tout cela - et les noms correspondent. Comment puis-je dire à un RDL généré d'utiliser la source de données partagée déjà présente sur le serveur?

Répondre

18

répondre à ma propre question ici, en espérant que quelqu'un d'autre pourrait trouver ce utile:

J'étais sous l'impression (fausse) que l'unique « DataSourceID » donnée à une source de données sur le serveur serait suffisant pour l'identifier uniquement.

Donc, dans mon produit RDL, j'avais quelque chose comme:

<DataSources> 
    <DataSource Name="MyDataSource"> 
     <Transaction>true</Transaction> 
     <DataSourceReference>MyDataSource</DataSourceReference> 
     <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID> 
     <rd:SecurityType>None</rd:SecurityType> 
    </DataSource> 
    </DataSources> 

Maintenant cela a fonctionné une fois, quand ma source de données a en effet été appelé « MyDataSource » et situé dans le même répertoire que mon rapport que je publiai par l'API RS WebService.

Dès que j'ai déplacé la source de données ailleurs, il a cessé de fonctionner.

LA SOLUTION:
Cela peut paraître stupide, mais je n'a pas vraiment « obtenir » d'abord: les DataSourceReference doit avoir le « chemin » pleine et entière sur le serveur de rapports à cette source de données I vouloir faire référence. Il suffit de spécifier l'ID unique ne fera pas ....

Alors une fois que je changé mon RDL à:

<DataSources> 
    <DataSource Name="MyDataSource"> 
     <Transaction>true</Transaction> 
     <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference> 
     <rd:DataSourceID>6ba7c588-e270-4de9-988c-d2af024f10e1</rd:DataSourceID> 
     <rd:SecurityType>None</rd:SecurityType> 
    </DataSource> 
    </DataSources> 

(remarquez le <DataSourceReference>/MyProject/DataSources/MyDataSource</DataSourceReference>)

depuis ce moment, il fonctionne comme un charme.

J'espère que quelqu'un pourrait trouver cela utile un jour!

Questions connexes