Trabajo con tablas temporales con control de versiones del sistema con optimización para memoria
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance
En este tema se describen las diferencias entre trabajar con una tabla temporal con versiones del sistema optimizadas para memoria y trabajar con una tabla temporal con versiones del sistema basadas en disco.
Nota
El uso de tablas temporales con tablas optimizadas para memoria solo se aplica a SQL Server, no a SQL Database.
Detección de metadatos
Para detectar los metadatos de una tabla temporal con control de versiones del sistema optimizada para memoria, debe combinar información de sys.tables (Transact-SQL) y sys.internal_tables (Transact-SQL). Una tabla temporal con versiones del sistema se presenta como parent_object_id de la tabla de historial en memoria interno.
En este ejemplo se muestra cómo consultar y combinar estas tablas.
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
JOIN sys.tables T1
ON IT.parent_object_id = T1.object_id
JOIN sys.tables T2
ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1 AND T1.temporal_type = 2
Modificar datos
Las tablas temporales con versiones del sistema optimizadas para memoria se pueden modificar mediante procedimientos almacenados compilados de forma nativa, que permiten convertir tablas no temporales optimizadas para memoria a las versiones del sistema y mantener los procedimientos existentes almacenados de forma nativa.
En este ejemplo se muestra cómo se puede modificar una tabla creada anteriormente en un módulo compilado de forma nativa.
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 ;
Consulte también
- Tablas temporales con control de versiones del sistema con tablas con optimización para memoria
- Creación de una tabla temporal con control de versiones del sistema con optimización para memoria
- Supervisión de tablas temporales con control de versiones del sistema con optimización para memoria
- Consideraciones de rendimiento con tablas temporales con control de versiones con optimización para memoria
- Tablas temporales
- Comprobaciones de coherencia del sistema de la tabla temporal
- Administración de la retención de datos históricos en las tablas temporales con control de versiones del sistema
- Funciones y vistas de metadatos de la tabla temporal
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios