Както разбрахте, временните таблици на SQL Server и Oracle са коренно различни.
В Oracle глобалните временни таблици са постоянни обекти, които съхраняват временни специфични за сесията (или специфични за транзакцията) данни.
В SQL Server временните таблици са временни обекти, съхраняващи временни данни, като #temp_tables съхраняват данни, които са локални за сесия, а ##temp_tables съхраняват данни, които са глобални. (Никога не съм имал нужда от глобални временни таблици на SQL Server и не знам какъв проблем решават.) Ако #temp_table е създадена в съхранена процедура, тя ще бъде премахната, когато съхранената процедура излезе. В противен случай ще бъде премахнато, когато сесията затвори.
И не, наистина няма начин SQL Server да имитира Oracle. Можете да използвате нормална таблица с допълнителна колона, съхраняваща идентификатор на сесия. Но няма да получите предимствата на временните таблици по отношение на по-малко регистриране. Ще трябва ръчно да изтриете временните данни. И се справете с почистването от преждевременно прекратени сесии.
РЕДАКТИРАНЕ: Друга разлика между Oracle и SQL Server е, че SQL Server позволява DDL да бъде обвит в транзакция с други изрази. Така че, ако трябва да използвате временна таблица като част от по-голяма транзакция, create table #table_name...
операторът няма имплицитно да ангажира текущата транзакция като create table
израз би в Oracle.