Creare e accedere alle tabelle in TempDB da Stored Procedure
Si applica a: SQL Server, Database SQL di Azure e Istanza gestita di SQL di Azure
La creazione e l'accesso alle tabelle in TempDB dalle stored procedure compilate in modo nativo non è supportato. Usare invece tabelle ottimizzate per la memoria con DURABILITY=SCHEMA_ONLY o tipi di tabella e variabili di tabella.
Per altri dettagli sull'ottimizzazione per la memoria degli scenari di tabella temporanea e variabile di tabella, vedi: Faster temp table and table variable by using memory optimization(Tabella temporanea e variabile di tabella più rapide con l'ottimizzazione per la memoria).
L'esempio seguente mostra come usare una variabile di tabella @OrderQuantityByProduct di tipo dbo.OrderQuantityByProduct anziché una tabella temporanea con tre colonne (ID, ProductID, Quantity):
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
Vedi anche
Problemi di migrazione relativi alle stored procedure compilate in modo nativo
Costrutti Transact-SQL non supportati da OLTP in memoria