Ao criar uma tabela temporária no SQL Server, você tem a opção de torná-la uma tabela temporária local ou global.
Aqui está um resumo rápido das principais diferenças entre tabelas temporárias locais e tabelas temporárias globais.
Nomeação
- Os nomes das tabelas temporárias locais começam com um único sinal numérico (
#
). Por exemplo,#MyTable
. - Tabelas temporárias locais também recebem um sufixo numérico gerado pelo sistema anexado ao nome. Isso é gerado automaticamente pelo SQL Server. Isso permite que várias sessões criem tabelas temporárias locais com o mesmo nome sem causar conflitos de nomenclatura. No entanto, os usuários ainda podem consultar a tabela sem precisar saber o sufixo.
- Os nomes das tabelas temporárias globais começam com um sinal numérico duplo (
##
). Por exemplo,##MyTable
. - As tabelas temporárias globais não anexado com um sufixo como nas tabelas temporárias locais.
Visibilidade
- As tabelas temporárias locais são visíveis apenas na sessão atual.
- As tabelas temporárias globais são visíveis para todas as sessões.
Vida útil
- As tabelas temporárias locais são eliminadas automaticamente no final da sessão atual. Uma tabela temporária local criada em um procedimento armazenado é descartada automaticamente quando o procedimento armazenado é concluído. A tabela pode ser referenciada por qualquer procedimento armazenado aninhado executado pelo procedimento armazenado que criou a tabela. A tabela não pode ser referenciada pelo processo que chamou o procedimento armazenado que criou a tabela.
- As tabelas temporárias globais são descartadas automaticamente quando a sessão que criou a tabela termina e todas as outras tarefas param de fazer referência a elas. A associação entre uma tarefa e uma tabela é mantida apenas durante a vida de uma única instrução T-SQL. Portanto, uma tabela temporária global é descartada na conclusão da última instrução T-SQL que fazia referência ativamente à tabela quando a sessão de criação terminou.