Arrêt du versioning du système sur une table temporelle avec contrôle de version par le système
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance
Vous pouvez interrompre le contrôle des versions sur votre table temporelle temporairement ou définitivement. Pour ce faire, définissez la clause SYSTEM_VERSIONING
sur OFF
.
Configurer SYSTEM_VERSIONING = OFF
Arrêtez le versioning par le système si vous souhaitez effectuer des opérations de maintenance sur une table temporelle ou si vous n’avez plus besoin d’une table versionnée. Avec cette opération, vous obtenez deux tables indépendantes :
- La table actuelle avec une définition de la période
- Une table historique sous la forme d’une table normale
Notes
La table d’historique cesse de capturer les mises à jour pendant SYSTEM_VERSIONING = OFF
.
Aucune perte de données ne se produit sur la SYSTEM_VERSIONING = OFF
table temporaire quand vous définissez SYSTEM_TIME
ou supprimez la période.
Quand vous définissez SYSTEM_VERSIONING = OFF
sans supprimer la période SYSTEM_TIME
, le système continue à mettre à jour les colonnes de période pour chaque opération d’insertion et de mise à jour. Les suppressions effectuées dans la table actuelle sont définitives.
Vous devez abandonner la période SYSTEM_TIME
pour supprimer les colonnes de périodes. Pour supprimer les colonnes de période, utilisez ALTER TABLE <table> DROP <column>;
. Pour en savoir plus, reportez-vous à Modifier le schéma d’une table temporelle à version contrôlée par le système.
Quand vous définissez SYSTEM_VERSIONING = OFF
, tous les utilisateurs disposant des autorisations suffisantes peuvent modifier le schéma et le contenu de la table d’historique, et même supprimer définitivement la table d’historique.
Vous ne pouvez pas définir SYSTEM_VERSIONING = OFF
si d’autres objets ont été créés avec SCHEMABINDING
à l’aide d’extensions de requête temporelles, telles que le référencement de SYSTEM_TIME
. Cette restriction empêche l’échec de ces objets si vous définissez SYSTEM_VERSIONING = OFF
.
Supprimer définitivement SYSTEM_VERSIONING
Cet exemple supprime définitivement SYSTEM_VERSIONING
ainsi que les colonnes de période. La suppression des colonnes de période est facultative.
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;
Supprimer temporairement SYSTEM_VERSIONING
La liste suivante contient la liste des opérations qui requièrent que la valeur de la version du système soit définie sur OFF
:
- Suppression des données superflues de l’historique (
DELETE
ouTRUNCATE
) - Suppression des données de la table actuelle sans contrôle de version (
DELETE
,TRUNCATE
) - Partition
SWITCH OUT
à partir de la table actuelle - Partition
SWITCH IN
dans la table d’historique
Cet exemple arrête temporairement SYSTEM_VERSIONING
pour que vous puissiez effectuer des opérations de maintenance spécifiques. Si vous arrêtez le contrôle de version temporairement à des fins de maintenance de tables, nous vous recommandons vivement d’effectuer cette opération dans une transaction pour préserver la cohérence des données.
Quand vous réactivez le versioning par le système, n’oubliez pas de spécifier l’argument HISTORY_TABLE
. Sinon, une nouvelle table d’historique sera générée et associée à la table actuelle. La table d’historique initiale peut être conservée comme une table standard, mais elle ne sera pas associée à la table actuelle.
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;
Contenu connexe
- Tables temporelles
- Bien démarrer avec les tables temporelles avec versions gérées par le système
- Gérer la rétention des données d'historique dans les tables temporelles avec contrôle de version par le système
- Tables temporelles avec version gérée par le système avec tables à mémoire optimisée
- Créer une table temporelle versionnée par le système
- Modifier des données dans une table temporelle avec version gérée par le système
- Interroger les données dans une table temporelle avec version gérée par le système
- Modifier le schéma d’une table temporelle à version contrôlée par le système