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

Temporärer Tabellenbereich?

Erstens werden innerhalb einer Prozedur erstellte lokale temporäre Tabellen gelöscht, sobald die Prozedur beendet ist. Aus dem BOL auf Tabelle erstellen :

Wenn Ihr Datenzugriffscode eine Verbindung ordnungsgemäß öffnet, eine gespeicherte Prozedur aufruft und dann die Verbindung schließt, wird die temporäre Tabelle in der Prozedur erstellt und effektiv zerstört.

Ich sage „effektiv“, um einen weiteren Punkt anzusprechen. Ich würde nicht empfehlen, die temporäre Tabelle am Ende Ihrer Prozedur zu löschen, obwohl ich eine Überprüfung hinzufügen würde, kurz bevor ich die temporäre Tabelle erstellt habe, und sie löschen würde, falls vorhanden (z. B. if object_id('tempdb..#Foo') is not null ). Das Argument gegen das Löschen der temporären Tabelle am Ende ist, dass Sie durch Aufrufen der Drop-Anweisung SQL Server dazu zwingen, Ressourcen aufzuwenden, um die Tabelle an Ort und Stelle zu zerstören, während Sie auf das Ende Ihrer Prozedur warten. Wenn Sie stattdessen den Bereich verlassen, endet Ihre Prozedur sofort und Sie lassen SQL Server die Tabelle zu einem Zeitpunkt seiner Wahl zerstören.