Delen via


Tabellen maken en openen in TempDB vanuit opgeslagen procedures

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Het maken en openen van tabellen in TempDB op basis van systeemeigen opgeslagen procedures wordt niet ondersteund. Gebruik in plaats daarvan tabellen die zijn geoptimaliseerd voor geheugen met DUURZAAMHEID=SCHEMA_ONLY of gebruik tabeltypen en tabelvariabelen.

Zie voor meer informatie over geheugenoptimalisatie van tijdelijke tabel- en tabelvariabelescenario's: Snellere tijdelijke tabel en tabelvariabele met behulp van geheugenoptimalisatie.

In het volgende voorbeeld ziet u hoe het gebruik van een tijdelijke tabel met drie kolommen (id, product-id, hoeveelheid) kan worden vervangen met behulp van een tabelvariabele @OrderQuantityByProduct van het 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  

Zie ook

Migratieproblemen voor systeemeigen gecompileerde opgeslagen procedures
Transact-SQL constructies die niet worden ondersteund door In-Memory OLTP