As tabelas temporárias locais (começam com #) são limitadas à sua sessão; outras sessões, mesmo da mesma string de usuário/conexão, não podem vê-las. As regras para o tempo de vida dependem se a tabela temporária local foi criada em um procedimento armazenado:
- Uma tabela temporária local criada em um procedimento armazenado é descartada quando o procedimento termina; outros procedimentos armazenados ou o processo de chamada não podem vê-los.
- Outras tabelas temporárias locais são descartadas quando a sessão termina.
As tabelas temporárias globais (começam com ##) são compartilhadas entre as sessões. Eles são descartados quando:
- A sessão que os criou termina
- E nenhuma outra sessão está se referindo a eles
Este comando pode ser útil para ver quais tabelas temporárias existem:
select TABLE_NAME from tempdb.information_schema.tables
E isso é útil para descartar tabelas temporárias se você não tiver certeza de que elas existem:
if object_id('tempdb..#SoTest') is not null drop table #SoTest
Consulte este artigo do MSDN para obter mais informações.