é muito benéfico armazenar dados nas tabelas temp do servidor SQL em vez de manipular ou trabalhar com tabelas permanentes. Digamos que quer acesso DDL ou DML completo a uma tabela, mas não a tem. Você pode usar o seu acesso de leitura existente para puxar os dados para uma tabela temporária do servidor SQL e fazer ajustes a partir daí. Ou você não tem permissões para criar uma tabela na base de dados existente, você pode criar uma tabela de temp do servidor SQL que você pode manipular., Finalmente, você pode estar em uma situação em que você precisa que os dados sejam visíveis apenas na sessão atual.
SQL Server suporta alguns tipos de tabelas temp do servidor SQL que podem ser muito úteis.
Antes de prosseguir, se você quiser seguir juntamente com exemplos de código, sugiro abrir o SQL Server Management Studio:
Local do SQL temp tabelas
Local do SQL Server tabelas temporárias são criadas usando-se o símbolo de libra ou “hashtag” seguido do nome da tabela. Por exemplo: #Table_ name. As tabelas SQL temp são criadas na base de dados tempdb., Uma tabela local de temp do servidor SQL só é visível para a sessão actual. Não pode ser visto ou usado por processos ou consultas fora da sessão em que é declarado.
Aqui está um exemplo rápido de pegar um conjunto de resultados e colocá-lo em uma tabela de temp do servidor SQL.
Um dos cenários mais usados para tabelas temp do servidor SQL está dentro de um loop de algum tipo. Por exemplo, você quer processar dados para uma declaração SQL e que você precisa de um lugar para armazenar itens para o seu loop para ler. Proporciona um meio rápido e eficiente para o fazer., Veja a amostra de código acima, seu loop pode agora referenciar a tabela temp do servidor SQL e processar os registros que atendem aos critérios de seu objetivo.
outra razão para usar tabelas temp do servidor SQL é que você tem algum processamento exigente para fazer em sua instrução sql. Digamos que você cria uma junção, e cada vez que você precisa puxar os registros desse conjunto de resultados tem que processar esta junção de novo. Por que não apenas processar este conjunto de resultados uma vez e jogar os registros em uma tabela SQL temp? Então você pode ter o resto da instrução SQL se referir ao nome da tabela SQL temp., Não só isso economiza em processamento de consulta caro, mas pode até fazer o seu código parecer um pouco mais limpo.
Há um ponto que eu quero fazer no entanto. Se a sessão em que estamos trabalhando tiver sessões aninhadas subsequentes, as tabelas temp do servidor SQL serão visíveis em sessões mais baixas na hierarquia, mas não acima na hierarquia. Por favor, permita-me visualizar isto.
neste diagrama rápido, uma tabela de temperatura SQL é criada na Sessão 2. As sessões abaixo dele (sessões 3 e Sessão 4) são capazes de ver a tabela temp do servidor SQL., Mas a sessão 1, que está acima da sessão 2, não será capaz de ver a tabela temp do servidor SQL.
a tabela temp SQL é retirada ou destruída quando a sessão se desligar. Muitas vezes você vai ver os desenvolvedores usar o comando “DROP #Table_Name” no final de sua declaração apenas para limpar. Mas depende inteiramente de TI e do que estás a tentar alcançar.,
também note, que no caso de conflito de nome (lembre-se que as tabelas temp Server SQL são criadas no tempdb) o servidor SQL irá adicionar um sufixo ao fim do nome da tabela de modo que seja único dentro da base de dados do tempdb. Mas este processo é transparente para o desenvolvedor/usuário. Pode usar o mesmo nome que declarou, uma vez que está confinado àquela sessão.as tabelas de temperatura SQL globais
as tabelas de temperatura SQL globais são úteis quando quiser que o resultado seja visível em todas as outras sessões. Não é necessário configurar as permissões., Qualquer um pode inserir valores, modificar ou recuperar registros da tabela. Note também que qualquer um pode deixar cair a mesa. Como as tabelas temp do servidor SQL Local, elas são descartadas uma vez que a sessão se desconecta e não há mais nenhuma referência à tabela. Você pode sempre usar o comando “DROP” para limpá-lo manualmente. Que é algo que eu recomendaria.
para criar uma tabela global de temperatura SQL, você simplesmente usa símbolos de duas libras em frente ao nome da tabela. Exemplo: ##Global_Table_Name.,
as variáveis da tabela
as variáveis da tabela são criadas como qualquer outra variável, usando a declaração de declaração. Muitos acreditam que as variáveis de tabela existem apenas na memória, mas isso simplesmente não é verdade. Eles residem na base de dados tempdb, assim como tabelas de temperatura do servidor SQL local. Também como tabelas locais de temperatura SQL, as variáveis de tabela são acessíveis apenas dentro da sessão que as criou. No entanto, ao contrário das tabelas SQL temp, a variável tabela só é acessível dentro do lote atual. Eles não são visíveis fora do lote, o que significa que o conceito de Hierarquia de sessão pode ser um pouco ignorado.,
no que diz respeito ao desempenho, as variáveis da tabela são úteis com pequenas quantidades de dados (como apenas algumas linhas). Caso contrário, uma tabela temp do servidor SQL é útil ao peneirar grandes quantidades de dados. Então, para a maioria dos scripts você provavelmente verá o uso de uma tabela temp do servidor SQL em oposição a uma variável de tabela. Para não dizer que um é mais útil do que o outro, é que você tem que escolher a ferramenta certa para o trabalho.
Aqui está um exemplo rápido de configurar e usar uma variável de tabela.,
criamos uma variável de tabela que irá conter informações sobre as quantidades totais de um determinado produto vendido. Este é um exemplo muito simplificado, e não o usaríamos se contivesse muitas linhas. Mas se estivéssemos apenas a olhar para alguns produtos, Isso poderia muito bem acontecer. Uma vez que a variável tabela é povoada, você pode então juntar isso como uma tabela para mais uma tabela e recolher qualquer informação que você precisa. Assim, há muita flexibilidade e permite que o desenvolvedor seja bastante criativo.
também, numa nota final, em termos de transacções sobre variáveis do quadro., Se um desenvolvedor rolar para trás uma transação que inclui alterações às variáveis da tabela, as alterações feitas às variáveis da tabela dentro desta transação particular permanecerão intactas. Ou seja, outras partes desta transação em questão serão revertidas, mas qualquer referência à variável da tabela não será, a menos que essa parte do seu script esteja em erro.,
- Autor
- Posts Recentes
Ver todos os posts por Aamir Syed
- É o SQL Server Sempre Criptografada, para criptografia de dados sensíveis, para seu ambiente – julho 27, 2018
- casos de Uso para Consulta de arquivo no SQL Server – 18 de julho de 2018
- Quando Usar o SQL Temp Tabelas vs. Variáveis de Tabela – 21 de fevereiro de 2017.