J'ai rencontré ce problème en essayant d'importer les résultats d'un processus stocké dans une table temporaire, et ce processus stocké a été inséré dans une table temporaire dans le cadre de sa propre opération. Le problème est que SQL Server n'autorise pas le même processus à écrire dans deux tables temporaires différentes en même temps.
La réponse OPENROWSET acceptée fonctionne bien, mais je devais éviter d'utiliser un SQL dynamique ou un fournisseur OLE externe dans mon processus, j'ai donc emprunté une voie différente.
Une solution de contournement simple que j'ai trouvée était de changer la table temporaire de ma procédure stockée en variable de table. Cela fonctionne exactement de la même manière qu'avec une table temporaire, mais n'est plus en conflit avec mon autre insert de table temporaire.
Juste pour éviter le commentaire, je sais que quelques-uns d'entre vous sont sur le point d'écrire, me mettant en garde contre les variables de table en tant que tueurs de performances ... Tout ce que je peux vous dire, c'est qu'en 2020, cela rapporte des dividendes de ne pas avoir peur des variables de table. Si c'était en 2008 et que ma base de données était hébergée sur un serveur avec 16 Go de RAM et fonctionnant sur des disques durs à 5400 tr / min, je pourrais être d'accord avec vous. Mais c'est 2020 et j'ai une baie SSD comme stockage principal et des centaines de Go de RAM. Je pourrais charger la base de données de toute ma société dans une variable de table et avoir encore beaucoup de RAM à revendre.
Les variables de table sont de retour au menu!