Megosztás a következőn keresztül:


Táblák létrehozása és elérése a TempDB-ben tárolt eljárásokból

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

A TempDB-ben a táblák natívan lefordított tárolt eljárásokból történő létrehozása és elérése nem támogatott. Ehelyett használjon memóriaoptimalizált táblákat a DURABILITY=SCHEMA_ONLY használatával, vagy használjon táblázattípusokat és táblázatváltozókat.

További információ a temp table és a table variable forgatókönyvek memóriaoptimalizálásáról: Temp táblák és táblaváltozók gyorsítása memóriaoptimalizálás használatával.

Az alábbi példa bemutatja, hogyan helyettesíthető egy három oszlopból (ID, ProductID, Quantity) álló ideiglenes tábla használata egy dbo típusú @OrderQuantityByProduct táblaváltozóval . 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  

Lásd még:

Natívan lefordított tárolt eljárások áttelepítési problémái
Transact-SQL In-Memory OLTP által nem támogatott szerkezetek