Travailler avec les tables temporelles avec versions gérées par le système et à mémoire optimisée
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance
Cet article décrit la façon dont l’utilisation d’une table temporelle avec contrôle de version du système à mémoire optimisée diffère de celle d’une table temporelle avec contrôle de version du système sur disque.
Remarque
Les tables temporelles optimisées en mémoire sont disponibles uniquement dans SQL Server, et non dans la base de données Azure SQL.
Découvrir les métadonnées
Pour découvrir les métadonnées relatives à une table temporelle avec version gérée par le système et optimisée en mémoire, vous devez combiner les informations de sys.tables et sys.internal_tables. Une table temporelle avec contrôle de version du système est présentée en tant que parent_object_id de la table de l’historique en mémoire interne.
Cet exemple indique comment exécuter une requête sur ces tables et joindre ces dernières.
SELECT SCHEMA_NAME(T1.schema_id) AS TemporalTableSchema,
OBJECT_NAME(IT.parent_object_id) AS TemporalTableName,
T1.object_id AS TemporalTableObjectId,
IT.Name AS InternalHistoryStagingName,
SCHEMA_NAME(T2.schema_id) AS HistoryTableSchema,
OBJECT_NAME(T1.history_table_id) AS HistoryTableName
FROM sys.internal_tables IT
INNER JOIN sys.tables T1
ON IT.parent_object_id = T1.object_id
INNER JOIN sys.tables T2
ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1
AND T1.temporal_type = 2;
Modifier des données
Les tables temporelles mémoire optimisées avec contrôle de version du système sont modifiables par le biais de procédures stockées compilées en mode natif, ce qui vous permet de convertir des tables mémoire optimisées non temporelles en tables avec contrôle de version du système et de conserver les procédures stockées en mode natif existantes.
Cet exemple indique la façon dont une table créée précédemment peut être modifiée dans un module compilé en mode natif.
CREATE PROCEDURE dbo.UpdateFXCurrencyPair (
@ProviderID INT,
@CurrencyID1 INT,
@CurrencyID2 INT,
@BidRate DECIMAL(8, 4),
@AskRate DECIMAL(8, 4)
)
WITH NATIVE_COMPILATION, SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH (
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'English'
)
UPDATE dbo.FXCurrencyPairs
SET AskRate = @AskRate,
BidRate = @BidRate
WHERE ProviderID = @ProviderID
AND CurrencyID1 = @CurrencyID1
AND CurrencyID2 = @CurrencyID2
END
GO;
Contenu connexe
- Tables temporelles avec version gérée par le système avec tables à mémoire optimisée
- Créer une table temporelle à mémoire optimisée avec version système
- Surveiller des tables temporelles avec contrôle de version par le système à mémoire optimisée
- Performances des tables temporelles optimisées en mémoire avec gestion de version par le système
- Tables temporelles
- Vérifications de cohérence système des tables temporelles
- Gérer la rétention des données d'historique dans les tables temporelles avec contrôle de version par le système
- Vues et fonctions des métadonnées des tables temporelles