Creare e accedere alle tabelle in TempDB da stored procedureCreate and Access Tables in TempDB from Stored Procedures

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2014)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

La creazione e l'accesso alle tabelle in TempDB dalle stored procedure compilate in modo nativo non è supportato.Creating and accessing tables in TempDB from natively compiled stored procedures is not supported. Usare invece tabelle con ottimizzazione per la memoria con DURABILITY=SCHEMA_ONLY o tipi di tabella e variabili di tabella.Instead, use either memory-optimized tables with DURABILITY=SCHEMA_ONLY or use table types and table variables.

Per altre informazioni sull'ottimizzazione per la memoria degli scenari di tabella temporanea e variabile di tabella, vedere: Faster temp table and table variable by using memory optimization(Tabella temporanea e variabile di tabella più rapide con l'ottimizzazione per la memoria).For more details about memory-optimization of temp table and table variable scenarios see: Faster temp table and table variable by using memory optimization.

L'esempio seguente mostra come usare una variabile di tabella @OrderQuantityByProduct di tipo dbo.OrderQuantityByProductanziché una tabella temporanea con tre colonne (id, ProductID, Quantity):The following example shows how the use of a temp table with three columns (id, ProductID, Quantity) can be replaced using a table variable @OrderQuantityByProduct of 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  

Vedere ancheSee Also

Problemi di migrazione relativi alle stored procedure compilate in modo nativo Migration Issues for Natively Compiled Stored Procedures
Costrutti Transact-SQL non supportati da OLTP in memoria Transact-SQL Constructs Not Supported by In-Memory OLTP