Creación y acceso a tablas en TempDB desde procedimientos almacenados
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
No es posible crear ni obtener acceso a tablas de TempDB desde procedimientos almacenados compilados de forma nativa. En su lugar, use tablas optimizadas para memoria con DURABILITY=SCHEMA_ONLY, o bien use tipos de tabla y variables de tabla.
Para obtener más información sobre la optimización para memoria de escenarios de tabla temporal y variable de tabla, vea Tabla temporal y variable de tabla más rápidas mediante la optimización para memoria.
En el ejemplo siguiente, se muestra cómo el uso de una tabla temporal con tres columnas (ID, ProductID, Quantity) se puede reemplazar mediante una variable de tabla OrderQuantityByProduct de tipo dbo.OrderQuantityByProduct:
CREATE TYPE dbo.OrderQuantityByProduct
AS TABLE
(id INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=100000),
ProductID INT NOT NULL,
Quantity INT NOT NULL) WITH (MEMORY_OPTIMIZED=ON)
GO
CREATE PROCEDURE dbo.usp_OrderQuantityByProduct
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'ENGLISH'
)
-- declare table variables for the list of orders
DECLARE @OrderQuantityByProduct dbo.OrderQuantityByProduct
-- populate input
INSERT @OrderQuantityByProduct SELECT ProductID, Quantity FROM dbo.[Order Details]
end
Consulte también
Problemas de migración para los procedimientos almacenados compilados de forma nativa
Construcciones de Transact-SQL no admitidas en In-Memory OLTP.