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

Löschen Sie alle temporären Tabellen für eine Instanz

Der springende Punkt bei temporären Tabellen ist, dass sie ... temporär sind. Sobald sie den Geltungsbereich verlassen

  • #temp in Stored Proc erstellen:Stored Proc wird beendet
  • #temp in Sitzung erstellt:Sitzung wird getrennt
  • ##temp :Sitzung, die es erstellt hat, wird getrennt

Die Abfrage verschwindet. Wenn Sie feststellen, dass Sie temporäre Tabellen manuell entfernen müssen, müssen Sie sich noch einmal ansehen, wie Sie sie verwenden.

Für die globalen wird dies die Anweisung generieren und ausführen, um sie alle zu löschen.

declare @sql nvarchar(max)
select @sql = isnull(@sql+';', '') + 'drop table ' + quotename(name)
from tempdb..sysobjects
where name like '##%'
exec (@sql)

Es ist jedoch keine gute Idee, die [globalen] temporären Tabellen anderer Sitzungen zu löschen.

Für die lokale (zu dieser Sitzung ) temporäre Tabellen, einfach trennen und wieder verbinden.