Sdílet prostřednictvím


Vytváření a přístup k tabulkám v databázi TempDB z uložených procedur

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Vytváření tabulek a přístup k tabulkám v databázi TempDB z nativně zkompilovaných uložených procedur se nepodporuje. Místo toho použijte tabulky optimalizované pro paměť s DURABILITY=SCHEMA_ONLY nebo použijte typy tabulek a proměnné tabulky.

Další informace o optimalizaci paměti scénářů dočasných tabulek a proměnných tabulek najdete v tématu: Rychlejší dočasná tabulka a proměnná tabulky pomocí optimalizace paměti.

Následující příklad ukazuje, jak lze použití dočasné tabulky se třemi sloupci (ID, ProductID, Quantity) nahradit pomocí proměnné tabulky @OrderQuantityByProduct typu 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  

Viz také

Problémy s migrací pro nativně zkompilované uložené procedury
Transact-SQL konstrukty, které In-Memory OLTP nepodporuje