Jak jste zjistili, SQL Server a dočasné tabulky Oracle jsou zásadně odlišné.
V Oracle jsou globální dočasné tabulky trvalé objekty, které ukládají dočasná data specifická pro relaci (nebo specifická pro transakci).
V SQL Server jsou dočasné tabulky dočasné objekty ukládající dočasná data, přičemž #temp_tables ukládají data, která jsou pro relaci místní, a ##temp_tables ukládají data, která jsou globální. (Nikdy jsem nepotřeboval globální dočasné tabulky SQL Serveru a nevím, jaký problém řeší.) Pokud byla #temp_table vytvořena v uložené proceduře, bude při ukončení uložené procedury zrušena. V opačném případě bude po ukončení relace zrušena.
A ne, opravdu neexistuje způsob, jak SQL Server napodobit Oracle. Můžete použít normální tabulku s dalším sloupcem, který ukládá ID relace. Ale nezískali byste výhody dočasných tabulek s ohledem na méně protokolování. Budete muset ručně smazat údaje o tempu. A vypořádejte se s úklidem relací, které předčasně skončily.
UPRAVIT: Dalším rozdílem mezi Oracle a SQL Server je to, že SQL Server umožňuje zabalit DDL do transakce s jinými příkazy. Pokud tedy potřebujete použít dočasnou tabulku jako součást větší transakce, create table #table_name...
příkaz implicitně nepotvrdí aktuální transakci jako create table
příkaz by v Oracle.