Question

Nous obtenons des erreurs étranges sur l'une de nos procédures stockées. Cette procédure stockée appelle d'autres procédures stockées et nous obtenons des erreurs relatives aux colonnes qui ne sont pas trouvées dans les sous-procédures. Par exemple:

Exec StoredProc1, this stored proc calls StoredProc2, StoredProc3 & StoredProc4

Lorsque j'exécute StoredProc1 la première fois, j'obtiens des erreurs relatives aux colonnes sur STOREDPROC2. J'exécute ensuite directement StoredProc2 et cela fonctionne, puis j'appelle à nouveau StoredProc1 et il se plaint des erreurs de colonne sur StoredProc3, etc.

Je suppose que cela a à voir avec la façon dont SQL Server a mis en cache ses plans d'exécution pour STOREDPROC1, et l'exécution de chaque Proc stocké oblige à son tour les plans / dépendances stockés à mettre à jour.

Comment puis-je corriger cela à tous les niveaux?

Si j'exécute chaque procédure dépendante une à la fois, exécutez le parent, cela fonctionne. Si j'exécute alors ces commandes:

CHECKPOINT; 
DBCC DROPCLEANBUFFERS;
DBCC FREEPROCCACHE; 

et exécuter la procédure parent, j'obtiens à nouveau les erreurs.

Les procédures stockées utilisent toutes une table temporaire avec le même nom, mais si je le comprends correctement parce qu'ils sont dans différentes procédures, ils créeraient des tables distinctes.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top