Créer des tables et y accéder dans TempDB à partir de procédures stockées
S’applique à :SQL ServerAzure SQL DatabaseAzure 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 des scénarios de table temporaire et de table, consultez : Table temporaire plus rapide et variable de table à l’aide de l’optimisation de la mémoire.
L’exemple suivant montre comment l’utilisation d’une table temporaire avec trois colonnes (ID, ProductID, Quantity) peut être remplacée à l’aide 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour