2010-08-06 17 views
18

Dans SSRS, j'ai remarqué que les fichiers cache rdl.data sont stockés sur ma machine dev. Ces fichiers sont-ils également stockés sur le serveur de rapports lorsque les rapports sont exécutés? Si oui, existe-t-il un moyen d'éviter de créer ces fichiers sur le serveur?Dans SSRS, existe-t-il un moyen de désactiver la création du fichier rdl.data?

+0

demande microsoft connexion: https: // connexion .microsoft.com/SQLServer/feedback/details/468482 –

+0

J'ai eu un problème que je pensais être dû à cela, mais en réalité parce que les jeux de données sont copiés dans 'bin /' et ne sont pas supprimés quand ils ne sont plus dans le projet provoquer l'échec du rapport en s'appuyant dessus pendant les tests locaux. Horrible. –

Répondre

13

Les fichiers rdl.data ne sont pas créés sur le serveur. Ils servent uniquement à accélérer le temps d'exécution des rapports au cours du développement lorsque vous exécutez plusieurs fois le rapport avec les mêmes paramètres tout en modifiant la mise en page.

En passant, je crois qu'il est vrai de dire qu'il est possible de configurer le service SSRS pour mettre en cache les résultats en vue de leur réutilisation.

Je ne connais pas les détails du mécanisme de mise en cache que le service utilise; il peut utiliser un mécanisme basé sur un fichier comme rdl.data, ou stocker les résultats dans l'une des bases de données ReportingServices. Peut-être que quelqu'un de mieux informé sur SSRS peut confirmer les détails du mécanisme.

+0

@Ed .... grande info. Merci! Et si quelqu'un voudrait commenter sur la configuration de mise en cache de service côté serveur ... Je serais très intéressé – MikeTWebb

+1

Je sais que c'est un commentaire en retard, mais la mise en cache de SSRS se produit dans la base de données ReportServer et ReportServerTempDB.Cela peut constituer un point de départ pour comprendre le modèle de mise en cache SSRS: http://sqlcat.com/technicalnotes/archive/2008/06/26/report-server-catalog-best-practices.aspx – warriorpostman

+0

@warriorpostman thanks - used la machine de wayback pour traquer l'information à cette URL actuelle d'archives https://blogs.msdn.microsoft.com/robertbruckner/2008/11/04/technical-note-series-on-reporting-services-performance-and-scalability/le titre est "" dans le cadre de "Construction et déploiement de la série de notes techniques sur les environnements SQL Server Reporting Services à grande échelle" et voici un lien contextuel concret http://web.archive.org/web/20080802051432/http://sqlcat : 80/technicalnotes/archive/2008/06/05/reporting-services-scale-out-architecture.aspx –

8

En cours de développement, vous pouvez désactiver la mise en cache (et éliminer les fichiers * .rdl.data) en modifiant le fichier de configuration du concepteur.

Pour SQL Server 2008 SSRS, l'emplacement par défaut serait:

C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies \ RSReportDesigner.config

changement CacheDataForPreview « false »

Source Lien http://blog.summitcloud.com/2010/05/disable-reporting-services-data-cache-in-development/

+4

Cela ne fonctionne pas ce problème de connexion a été ouvert à MS depuis 4 ans http: //social.msdn .microsoft.com/Forums/sqlserver/fr-FR/0aa81692-352f-4c1f-a0e3-95fe6c0797ca/cachedatafo Le paramètre rpreview-in-rsreportdesignerconfig-not-honoré –

+0

existe toujours dans VS2013, mais n'arrête toujours pas la génération des fichiers '.data' –

2

Je ne suis pas convaincu que les travaux de réponse de zomf (et neither are Microsoft). Cela semble bien en théorie, mais cela ne semble pas fonctionner dans la pratique. Je pense que la chose la plus facile à faire est de vivre avec ces fichiers. Si vous êtes dérangé, vous pouvez toujours définir la propriété AutoRefresh de chaque rapport que vous avez créé à 1 seconde (bien que l'effet clignotant irritant et la charge sur votre serveur puissent rendre cette option irréalisable).

Sinon, il suffit de cliquer sur le bouton RAFRAÎCHIR lors de la prévisualisation de votre rapport.

Une autre option pourrait être de créer des paramètres factices pour un rapport, avec une valeur générée aléatoirement chaque fois que vous l'exécutez. Étant donné que SSRS affiche uniquement les données mises en cache lorsque la combinaison des paramètres entrés est identique à l'exécution précédente du rapport, cela peut résoudre le problème. Je ne l'ai pas testé dans la pratique, cependant.

0

PowerShell à la rescousse, juste le cacher - ajouter un projet PowerShell à votre solution de rapports et le définir comme projet de démarrage dans la configuration de construction:

$path = "../*.rdl.data" 

$rdlDataFiles = Get-ChildItem -Recurse -Force -Path "$path"; 

Write-Output "$path" 

$rdlDataFiles | ForEach-Object { 
    Write-Output "Hiding *.rdl.data file $_" 

    $_.Attributes = $_.Attributes -bor (([System.IO.FileAttributes]::Hidden)) 

    # Next line isn't required per say, but just a guard. 
    $_.Attributes = $_.Attributes -bor (-bnot([System.IO.FileAttributes]::ReadOnly)) 
}