Qual é a diferença entre tabelas temporárias locais e globais no SQL Server?
sql-server
temp-tables
global-temp-tables
andrew Sullivan
fonte
fonte
Respostas:
Acho esta explicação bastante clara (é uma cópia pura da Technet ):
fonte
As variáveis de tabela (
DECLARE @t TABLE
) são visíveis apenas para a conexão que a cria e são excluídas quando o lote ou procedimento armazenado termina.As tabelas temporárias locais (
CREATE TABLE #t
) são visíveis apenas para a conexão que a cria e são excluídas quando a conexão é fechada.As tabelas temporárias globais (
CREATE TABLE ##t
) são visíveis a todos e são excluídas quando todas as conexões que as referenciaram foram fechadas.As tabelas permanentes do Tempdb (
USE tempdb CREATE TABLE t
) são visíveis para todos e são excluídas quando o servidor é reiniciado.fonte
1.) Uma tabela temporária local existe apenas para a duração de uma conexão ou, se definida dentro de uma instrução composta, para a duração da instrução composta.
2.) Uma tabela temporária global permanece permanentemente no banco de dados, mas as linhas existem apenas dentro de uma determinada conexão. Quando a conexão é fechada, os dados na tabela temporária global desaparecem. No entanto, a definição da tabela permanece no banco de dados para acesso quando o banco de dados for aberto na próxima vez.
fonte
Citação de Manuais Online:
As tabelas temporárias locais são visíveis apenas na sessão atual; tabelas temporárias globais são visíveis para todas as sessões.
As tabelas temporárias são eliminadas automaticamente quando ficam fora do escopo, a menos que sejam explicitamente eliminadas usando DROP TABLE:
fonte
Tabelas temporárias locais : se você criar tabelas temporárias locais, abrir outra conexão e tentar a consulta, receberá o seguinte erro.
as tabelas temporárias são acessíveis apenas dentro da sessão que as criou.
Tabelas temporárias globais : às vezes, convém criar uma tabela temporária acessível a outras conexões. Nesse caso, você pode usar tabelas temporárias globais.
As tabelas temporárias globais são destruídas apenas quando todas as sessões referentes a ela são fechadas.
fonte
Vale ressaltar que também há: tabelas temporárias globais com escopo no banco de dados (atualmente suportadas apenas pelo Banco de Dados SQL do Azure).
fonte
Não vi nenhuma resposta mostrar aos usuários onde podemos encontrar uma tabela Temp Global. Você pode visualizar as tabelas temporárias locais e globais no mesmo local ao navegar no SSMS. Captura de tela abaixo retirada deste link .
Bancos de Dados -> Bancos de Dados do Sistema -> tempdb -> Tabelas Temporárias
fonte