Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre tabelas temporárias locais e globais no SQL Server


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.