OVH Cloud OVH Cloud

recompiler les vues

8 réponses
Avatar
J-Pierre
Bonjour,

existe-t-il l'équivalent de sp_recompile pour les vues ?

Merci
J-Pierre

8 réponses

Avatar
bruno reiter [MVP]
sp_refreshview

br



"J-Pierre" wrote in message
news:
Bonjour,

existe-t-il l'équivalent de sp_recompile pour les vues ?

Merci
J-Pierre




Avatar
J-Pierre
Bonjour,

Je ne crois pas que ce soit ça, en fait, j'aimerais recompiler toutes les vues référencant une table... comme le fait sp_recompile
pour les procédures stockées et les déclencheurs.

J-Pierre


"bruno reiter [MVP]" a écrit dans le message de news:

sp_refreshview

br



"J-Pierre" wrote in message
news:
> Bonjour,
>
> existe-t-il l'équivalent de sp_recompile pour les vues ?
>
> Merci
> J-Pierre
>
>




Avatar
Michel Walsh
Salut,


Une vue n'est-elle pas que du code qui est "inséré" tel quel là où c'est
requis et la "compilation" s'effectue après l'insertion, dans le contexte
global requérant l'insertion du bout de code provenant de la vue? J'admets
que 2000, avec ses vues indexables, a pu changer quelque chose à cette
notion de base, peut-être un peu trop simpliste, mais je ne me rapelle pas
d'avoir vu quelque chose à ce sujet.


Vanderghast, Access MVP


"J-Pierre" wrote in message
news:
Bonjour,

existe-t-il l'équivalent de sp_recompile pour les vues ?

Merci
J-Pierre




Avatar
J-Pierre
Bonjour Michel,

Je croyais savoir ce qu'était une vue, mais après t'avoir lu, je retourne à mes legos, mon tas de sable, ma pelle et mon rateau.

Mais avant, j'explique.....

Si je rajoute des colonnes dans une table (ou en supprime), parfois (souvent ?), les vues qui utilisent ces tables ne retournent
plus les infos correctes (colonnes décalées ou inversées).
Il faut éditer les vues(pas des indexables), les modifier et les réenregistrer.

Bon, peut-être aussi que je dis des conneries....

J-Pierre

"Michel Walsh" a écrit dans le message de news:u$
Salut,


Une vue n'est-elle pas que du code qui est "inséré" tel quel là où c'est
requis et la "compilation" s'effectue après l'insertion, dans le contexte
global requérant l'insertion du bout de code provenant de la vue? J'admets
que 2000, avec ses vues indexables, a pu changer quelque chose à cette
notion de base, peut-être un peu trop simpliste, mais je ne me rapelle pas
d'avoir vu quelque chose à ce sujet.


Vanderghast, Access MVP


"J-Pierre" wrote in message
news:
> Bonjour,
>
> existe-t-il l'équivalent de sp_recompile pour les vues ?
>
> Merci
> J-Pierre
>
>




Avatar
Michel Walsh
Salut,


Quelque chose comme cela, mais légèrement différent, du moins, de
mémoire: si on altère une vue en modifiant l'ordre des colonnes, c'est les
permissions individuellement assignées aux colonnes qui jouent un jeu de
chaise musicale (Delaney, dans "Inside MS SQL Server 2000", dernier
paragraphe de la page 361 (première édition) ).

Il me semble que si une requête est basée sur une vue, que la requête soit
exécutée (donc compilée) et que la vue soit par la suite altérée, MS SQL
Server reportera une erreur, si on utilise les champs nommés:

============ USE Pubs
GO
CREATE VIEW toto As SELECT au_fname, phone FROM authors
GO
CREATE PROC useToto AS SELECT au_fname FROM toto
GO
EXEC useToto -- compile la sp comme side effect
GO
ALTER VIEW toto AS SELECT au_lname, phone FROM authors
GO
EXEC useToto
GO
DROP PROC useToto
DROP VIEW toto
============ (23 row(s) affected)

Server: Msg 207, Level 16, State 3, Procedure useToto, Line 1
Invalid column name 'au_fname'.
============

Si j'utilise

ALTER VIEW toto AS SELECT au_lname, au_fname, phone FROM authors
GO
EXEC useToto

qui insère une colonne, au_fname est toujours correctement retourné.

Il y a un scénario (étape par étape), basé sur Pubs, où modifiant une
vue (enlevant/insérant une colonne) retournera les mauvaises informations
sans annoncer d'erreurs?






Espérant être utile,
Vanderghast, Access MVP


"J-Pierre" wrote in message
news:
Bonjour Michel,

Je croyais savoir ce qu'était une vue, mais après t'avoir lu, je retourne


à mes legos, mon tas de sable, ma pelle et mon rateau.

Mais avant, j'explique.....

Si je rajoute des colonnes dans une table (ou en supprime), parfois


(souvent ?), les vues qui utilisent ces tables ne retournent
plus les infos correctes (colonnes décalées ou inversées).
Il faut éditer les vues(pas des indexables), les modifier et les


réenregistrer.

Bon, peut-être aussi que je dis des conneries....

J-Pierre

"Michel Walsh" a écrit dans le


message de news:u$
> Salut,
>
>
> Une vue n'est-elle pas que du code qui est "inséré" tel quel là où


c'est
> requis et la "compilation" s'effectue après l'insertion, dans le


contexte
> global requérant l'insertion du bout de code provenant de la vue?


J'admets
> que 2000, avec ses vues indexables, a pu changer quelque chose à cette
> notion de base, peut-être un peu trop simpliste, mais je ne me rapelle


pas
> d'avoir vu quelque chose à ce sujet.
>
>
> Vanderghast, Access MVP
>
>
> "J-Pierre" wrote in message
> news:
> > Bonjour,
> >
> > existe-t-il l'équivalent de sp_recompile pour les vues ?
> >
> > Merci
> > J-Pierre
> >
> >
>
>




Avatar
J-Pierre
Michel,

On s'éloigne de mon problème, il ne s'agit pas d'altérer des vues, ni de baser une requête sur une vue, mais de recompiler des vues
lorsque une table a été modifiée, comme on peut le faire pour les procédures stockées et les triggers avec:

sp_recompile nomDeMaTable

J-Pierre
Avatar
bruno reiter [MVP]
pour résumer, on ne recompile pas une vue puisqu'elle n'est pas compilée, on la
rafraichit, ce qui n'est utile que quand on utilise * .... ce qui est
déconseillé!
ensuite tu peux faire une procédure qui utilise sp_refreshview pour toutes les
vues utilisant une table donnée

br



"J-Pierre" wrote in message
news:
Michel,

On s'éloigne de mon problème, il ne s'agit pas d'altérer des vues, ni de baser


une requête sur une vue, mais de recompiler des vues
lorsque une table a été modifiée, comme on peut le faire pour les procédures


stockées et les triggers avec:

sp_recompile nomDeMaTable

J-Pierre




Avatar
J-Pierre
Si j'ai bien compris, je dois donc vérifier toutes mes vues pour enlever nomdDeTable.* et le remplacer par le nom des colonnes
réellement utiles, et je n'aurai plus besoin de les rafraichir quand je modifie mes tables, et ce sera plus performant....

Merci beaucoup :-))))
J-Pierre

"bruno reiter [MVP]" a écrit dans le message de news:

pour résumer, on ne recompile pas une vue puisqu'elle n'est pas compilée, on la
rafraichit, ce qui n'est utile que quand on utilise * .... ce qui est
déconseillé!
ensuite tu peux faire une procédure qui utilise sp_refreshview pour toutes les
vues utilisant une table donnée

br