Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum kann keine globale temporäre Tabelle erstellt oder abgeschnitten werden, wenn eine gespeicherte Prozedur aus C#-Code aufgerufen wird?

Ich glaube, dass es zwar möglich ist, das zu tun, was Sie beschreiben, aber nicht allzu praktisch ist, da es eine Menge kniffliges Timing voraussetzt:Eine Sitzung öffnet Verbindung A und führt den Prozess aus, um die ##temp-Tabelle und diese Sitzung zu erstellen hält die Verbindung offen, solange die Verbindungen B, C usw. auf die temporäre Tabelle zugreifen können müssen.

Sie sind besser dran mit einer Lösung, die eine „permanente“ Tabelle verwendet, wo eine Zeile mit einer eindeutigen Kennung (int oder GUID) für jede „Sitzung“ hinzugefügt wird, dieser Wert wird vom Initialisierungsaufruf zurückgegeben (oder kann anderweitig abgerufen werden oder identifiziert) und von allen nachfolgenden Aufrufen für die Sitzung verwendet.