Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Elimina tutte le tabelle temporanee per un'istanza

Il punto delle tabelle temporanee è che sono... temporanee. Non appena escono dal campo di applicazione

  • #temp create in stored proc :stored proc esce
  • #temp creato nella sessione:la sessione si disconnette
  • ##temp :la sessione che l'ha creata si disconnette

La domanda scompare. Se ritieni di dover rimuovere manualmente le tabelle temporanee, devi rivedere il modo in cui le stai utilizzando.

Per quelli globali, questo genererà ed eseguirà l'istruzione per eliminarli tutti.

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

Tuttavia, è una cattiva idea eliminare le tabelle temporanee [globali] di altre sessioni.

Per il locale (a questa sessione ) tabelle temporanee, disconnetti e riconnettiti di nuovo.