Parar o controle de versão de sistema em uma tabela temporal com controle de versão de sistema
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do Azure Banco de dados SQL da Instância Gerenciada de SQL do Azure no Microsoft Fabric
Talvez você queira parar o controle de versão em sua tabela temporal de forma temporária ou permanente. Faça isso definindo a cláusulaSYSTEM_VERSIONING
como OFF
.
Defina SYSTEM_VERSIONING = OFF
Pare o controle de versão do sistema se quiser realizar operações de manutenção específicas em uma tabela temporal ou se não precisar mais de uma tabela com controle de versão. Como resultado dessa operação, você obterá duas tabelas independentes:
- A tabela atual com a definição do período
- Tabela de histórico como uma tabela normal
Comentários
A tabela de histórico para de capturar as atualizações durante o SYSTEM_VERSIONING = OFF
.
Nenhuma perda de dados ocorre na tabela temporal quando você define SYSTEM_VERSIONING = OFF
ou descarta o período SYSTEM_TIME
.
Quando você define SYSTEM_VERSIONING = OFF
e não descarta o período SYSTEM_TIME
, o sistema continua a atualizar as colunas de período de cada operação de inserção e atualização. As exclusões na tabela atual são permanentes.
O período SYSTEM_TIME
deverá ser descartado para que as colunas de período possam ser excluídas. Para remover as colunas de período, use ALTER TABLE <table> DROP <column>;
. Para obter mais informações, consulte Alterar o esquema de uma tabela temporal com controle de versão do sistema.
Quando você define SYSTEM_VERSIONING = OFF
, todos os usuários com permissões suficientes podem modificar o esquema e o conteúdo da tabela de histórico ou até mesmo excluir permanentemente a tabela de histórico.
Não é possível definir SYSTEM_VERSIONING = OFF
quando há outros objetos criados com SCHEMABINDING
usando extensões de consulta temporais, como ao referenciar SYSTEM_TIME
. Essa restrição impede que esses objetos falhem quando você define SYSTEM_VERSIONING = OFF
.
Remover permanentemente o SYSTEM_VERSIONING
Este exemplo remove permanentemente SYSTEM_VERSIONING
e exclui as colunas de período. A remoção das colunas de período é opcional.
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
-- Optionally, DROP PERIOD if you want to revert temporal table to a non-temporal
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;
Remover temporariamente o SYSTEM_VERSIONING
A lista a seguir contém a lista de operações que exigem que o controle de versão do sistema seja definido como OFF
:
- Removendo dados desnecessários do histórico (
DELETE
ouTRUNCATE
) - Removendo dados da tabela atual sem controle de versão (
DELETE
,TRUNCATE
) - Partição
SWITCH OUT
da tabela atual - Partição
SWITCH IN
na tabela de histórico
Este exemplo interrompe temporariamente o SYSTEM_VERSIONING
para permitir que você execute operações de manutenção específicas. Se você parar temporariamente o controle de versão como um pré-requisito para a manutenção da tabela, é altamente recomendável fazer essa alteração dentro de uma transação para manter a consistência dos dados.
Ao ativar novamente o controle de versão do sistema, não se esqueça de especificar o argumento HISTORY_TABLE
. Se isso não for feito, uma tabela de histórico será criada e será associada à tabela atual. A tabela de histórico original ainda poderá existir como uma tabela normal, mas não mais associada à tabela atual.
BEGIN TRANSACTION;
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
TRUNCATE TABLE [History].[DepartmentHistory]
WITH (PARTITIONS(1, 2));
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory));
COMMIT;
Conteúdo relacionado
- Tabelas temporais
- Introdução a tabelas temporais com controle de versão do sistema
- Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema
- Tabelas temporais com controle de versão do sistema e tabelas com otimização de memória
- Criar uma tabela temporal com controle de versão pelo sistema
- Modificar dados em uma tabela temporal com controle de versão de sistema
- Consultar dados em uma tabela temporal com controle da versão do sistema
- Alterar o esquema de uma tabela temporal com controle de versão de sistema