J'ai une question concernant un document sur les tables temporaires que j'ai récemment lu sur TechNet . Le quatrième paragraphe de la section Tables temporaires de cette page se lit comme suit:
Si une table temporaire est créée avec une contrainte nommée et que la table temporaire est créée dans le cadre d'une transaction définie par l'utilisateur, un seul utilisateur à la fois peut exécuter l'instruction qui crée la table temporaire. Par exemple, si une procédure stockée crée une table temporaire avec une contrainte de clé primaire nommée, la procédure stockée ne peut pas être exécutée simultanément par plusieurs utilisateurs.
Je travaille dans un environnement où nous utilisons de manière significative une poignée de procédures stockées qui utilisent des tables temporaires indexées, et nous n'avons jamais rencontré de problème où les utilisateurs doivent attendre la fin d'une exécution avant le début de la suivante. J'espère que cela continuera d'être le cas, mais je crains que cela ne devienne un problème si cette mise en garde n'est pas bien comprise.
Plus précisément, je ne suis pas clair sur les points suivants:
- Cela s'applique-t-il uniquement aux tables temporaires globales ou aux tables locales? Il semble étrange qu'une table qui n'est pas visible en dehors de la session (comme dans ce dernier cas) empêche une autre session de s'exécuter simultanément.
- Qu'est-ce qui constitue une "contrainte nommée"? Toutes les contraintes n'ont-elles pas de noms (même si elles sont générées par le système)? S'agit-il de contraintes avec un alias défini par l'utilisateur? Cela me semble une mauvaise formulation.
- Est-ce que "plusieurs utilisateurs" signifie en réalité plusieurs sessions? Ces procédures sont appelées via notre application à l'aide d'un seul compte de service, donc 99,9% des appels à nos scripts sont effectués vers la base de données par ce compte unique (et je ne suis pas préoccupé par l'appel occasionnel qu'un administrateur peut faire sur le backend). Si le compte de service peut exécuter le sproc dans plusieurs sessions simultanément, ce problème est sans objet pour mes besoins.