Smyslem dočasných tabulek je, že jsou... dočasné. Jakmile přejdou mimo rozsah
- #temp create v uloženém procesu :uložený proces se ukončí
- #temp vytvořeno v relaci :relace se odpojí
- ##temp :relace, která ji vytvořila, se odpojí
Dotaz zmizí. Pokud zjistíte, že potřebujete odstranit dočasné tabulky ručně, musíte se znovu podívat, jak je používáte.
U globálních to vygeneruje a provede příkaz, aby je všechny zrušil.
declare @sql nvarchar(max)
select @sql = isnull(@sql+';', '') + 'drop table ' + quotename(name)
from tempdb..sysobjects
where name like '##%'
exec (@sql)
Je však špatný nápad zrušit [globální] tabulky temp jiných relací.
Pro místní (k této relaci ) dočasné tabulky, stačí se odpojit a znovu připojit.