J'ai un rapport qui sur l'exécution se connecte à la base de données avec le nom d'utilisateur my_report_user
. Il peut y avoir plusieurs utilisateurs finaux du rapport. Et à chaque exécution une nouvelle connexion à la base de données sera faite avec my_report_user
(il n'y a pas de regroupement de connexions)Tables temporaires locales et globales - Quand utiliser quoi?
J'ai un ensemble de résultats que je pense peut juste être créé une fois (peut être sur la première exécution du rapport) et d'autres exécutions de rapports peuvent simplement réutiliser ce genre de choses. Fondamentalement, chaque exécution de rapport doit vérifier si ce jeu de résultats (stocké en tant que table temporaire) existe ou non. S'il n'existe pas, créez ce jeu de résultats, sinon réutilisez ce qui est disponible. Dois-je utiliser local
tables temporaires (#) ou global
tables temporaires (##)?
Est-ce que quelqu'un a déjà essayé ce genre de choses et si oui, s'il vous plaît faites-moi savoir de quoi tout ce qui m'importe? (Presque rapport simultané, etc.) Le
EDIT: J'utilise Sql-Server 2005
Quelle version de SQL Server? Si 2005+, les CTE (et éventuellement les CTE récursifs) sont une autre option. Sans en savoir plus sur ce que vous devez faire avec eux, je recommande des tables temporaires locales plutôt que globales ... –
Hypothèse: que la table temporaire globale ne soit pas supprimée car des connexions existent toujours, à quel moment les données de cette table deviennent invalides? c'est-à-dire, qu'est-ce qui définit quand les données doivent absolument être rafraîchies pour éviter les mauvaises données dans les rapports? –
sql-server 2005. Etes-vous sûr que les tables temporaires locales me permettent la réutilisabilité. Je pensais que les tables temporaires locales ne permettent pas la réutilisation sur plusieurs exécutions de rapports. Que dites-vous maintenant en connaissant la version? – peakit