Ich habe eine Frage zu einer Dokumentation zu temporären Tabellen, die ich kürzlich im TechNet gelesen habe . Der vierte Absatz des Abschnitts Temporäre Tabellen auf dieser Seite lautet wie folgt:
Wenn eine temporäre Tabelle mit einer benannten Einschränkung erstellt wird und die temporäre Tabelle im Rahmen einer benutzerdefinierten Transaktion erstellt wird, kann jeweils nur ein Benutzer die Anweisung ausführen, mit der die temporäre Tabelle erstellt wird. Wenn eine gespeicherte Prozedur beispielsweise eine temporäre Tabelle mit einer benannten Primärschlüsseleinschränkung erstellt, kann die gespeicherte Prozedur nicht gleichzeitig von mehreren Benutzern ausgeführt werden.
Ich arbeite in einer Umgebung, in der wir eine Handvoll gespeicherter Prozeduren verwenden, die indizierte temporäre Tabellen verwenden, und wir haben nie ein Problem festgestellt, bei dem Benutzer warten müssen, bis eine Ausführung abgeschlossen ist, bevor die nächste beginnt. Ich hoffe, dass dies auch weiterhin der Fall sein wird, aber ich befürchte, dass es zu einem Problem werden könnte, wenn diese Einschränkung nicht richtig verstanden wird.
Insbesondere bin ich in folgenden Punkten unklar:
- Gilt dies nur für globale temporäre Tabellen oder auch für lokale? Es scheint seltsam, dass eine Tabelle, die außerhalb der Sitzung nicht sichtbar ist (wie im letzteren Fall), die gleichzeitige Ausführung einer anderen Sitzung verhindert.
- Was ist eine "benannte Einschränkung"? Haben nicht alle Einschränkungen Namen (auch wenn sie vom System generiert wurden)? Bezieht sich dies auf Einschränkungen mit einem benutzerdefinierten Alias? Das scheint mir eine schlechte Formulierung zu sein.
- Bedeutet "mehrere Benutzer" tatsächlich mehrere Sitzungen? Diese Prozeduren werden über unsere Anwendung mit einem einzigen Dienstkonto aufgerufen, sodass 99,9% der Aufrufe unserer Skripte von diesem einzigen Konto an die Datenbank gesendet werden (und ich bin nicht besorgt über den gelegentlichen Anruf, den ein Administrator im Backend tätigen kann). Wenn das Dienstkonto den Sproc in mehreren Sitzungen gleichzeitig ausführen kann, ist dieses Problem für meine Zwecke nicht relevant.