Tabela Temporal no SQL Server – Parte 3: Boas Práticas e Limitações


Depois de criar sua Tabela Temporal (Parte 1) e aprender a consultar o histórico de dados com FOR SYSTEM_TIME
(Parte 2), é hora de aprofundar a análise com boas práticas, limitações importantes e dicas para uso em ambientes de produção.
Mesmo sendo um recurso robusto e nativo, as Temporal Tables exigem planejamento e conhecimento para não virar uma armadilha de performance e crescimento descontrolado.
⚙️ Como desabilitar o versionamento (temporariamente)
Durante operações de carga ou manutenção, pode ser útil pausar o versionamento para evitar acúmulo desnecessário de histórico.
ALTER TABLE dbo.Cliente
SET (SYSTEM_VERSIONING = OFF);
E para ativar novamente:
ALTER TABLE dbo.Cliente
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Cliente_Hist));
Atenção: ao desligar e religar o versionamento, as versões de linha entre os dois momentos não serão rastreadas.
🧹 Cuidando do crescimento da tabela de histórico
A tabela de histórico pode crescer rapidamente. Para isso:
⚠️ Evite DELETEs massivos ou UPDATEs frequentes em tabelas versionadas
🧹 Implemente uma rotina de purga automática das versões mais antigas:
O SQL Server 2016 não possui processo automático para limpeza periódica da tabela histórico, esperamos ter em versões futuras. Para evitar com que a tabela histórico fique muito grande, prejudicando o desempenho e ocupando muito espaço, é necessário agendar rotina de limpeza.
BEGIN TRAN
-- Desabilita Temporal Table em Cliente
ALTER TABLE dbo.ClienteTemporal SET (SYSTEM_VERSIONING = OFF)
-- Exclui as linhas
DELETE FROM dbo.ClienteTemporal WHERE SysStartTime < '20150101'
-- Habilita Temporal Table em Cliente
ALTER TABLE dbo.ClienteTemporal SET (SYSTEM_VERSIONING = ON
(HISTORY_TABLE = dbo.ClienteTemporal_Hist, DATA_CONSISTENCY_CHECK = OFF))
COMMIT
🔒 Segurança e Controle
Proteja a tabela de histórico com permissões específicas
Garanta que apenas usuários autorizados possam consultar dados históricos sensíveis
Use views para limitar o acesso a colunas sensíveis no histórico
🧪 Considerações Técnicas
Índices na tabela de histórico podem melhorar queries, mas aumentam o custo de manutenção
A tabela versionada deve ter chave primária
Temporal Tables não suportam colunas LOB (TEXT, NTEXT, IMAGE)
🧠 Quando usar (e quando não usar)
✅ Use Temporal Tables quando:
Precisa de rastreabilidade e auditoria nativa
Deseja consultar o estado dos dados no tempo
Precisa de histórico automático, sem triggers ou código adicional
❌ Evite usar quando:
Você realiza cargas massivas com UPDATEs frequentes
O histórico precisa ser controlado com lógica de negócio customizada
O volume de alterações é muito alto e sem valor para auditoria
As Tabelas Temporais são um recurso valioso, mas precisam de estratégia para uso eficiente em produção. Com as práticas corretas, elas oferecem uma solução nativa, segura e altamente confiável para controle de versões no SQL Server.
Fui, mas volto com mais SQL Server em breve!
✍️ Sobre o autor
O Prof. Landry é especialista em Microsoft SQL Server desde 1999, Microsoft Trainer, Professor Universitário e criador do canal SQL Server Expert no YouTube, com conteúdo técnico semanal para DBAs e profissionais de dados.
🚀 Quer aprender mais sobre SQL Server?
👉 Me acompanhe no LinkedIn e inscreva-se no canal para não perder nenhuma dica prática!
Subscribe to my newsletter
Read articles from SQL Server Expert directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

SQL Server Expert
SQL Server Expert
O Prof. Landry Duailibe é especialista em Microsoft SQL Server desde 1999, Microsoft Certified Trainer, professor universitário e criador do canal SQL Server Expert no YouTube, onde compartilha conteúdo técnico semanal para DBAs e profissionais de dados. Já ajudou milhares de alunos a evoluírem suas habilidades com SQL Server e conquistarem melhores oportunidades na área de dados.