Créer des tables et y accéder dans TempDB à partir de procédures stockées
S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance
La création et l’accès aux tables dans TempDB à partir de procédures stockées compilées en mode natif ne sont pas pris en charge. Au lieu de cela, utilisez des tables optimisées en mémoire avec DURABILITY=SCHEMA_ONLY ou utilisez des types de table et des variables de table.
Pour plus d’informations sur l’optimisation de la mémoire de la table temporaire et sur les scénarios de variables de table, consultez : Table temporaire et variable de table plus rapides à l’aide de l’optimisation de la mémoire.
L’exemple suivant montre comment l’utilisation d’une table temporaire à trois colonnes (ID, ProductID, Quantity) peut être remplacée par l’utilisation d’une variable de table OrderQuantityByProduct de type 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
Voir aussi
Problèmes de migration pour les procédures stockées compilées en mode natif
Constructions Transact-SQL non prises en charge par In-Memory OLTP