Freigeben über


Erstellen und Zugreifen auf Tabellen in TempDB aus gespeicherten Prozeduren

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Das Erstellen von und Zugreifen auf Tabellen über nativ kompilierte gespeicherte Prozeduren in tempdb wird nicht unterstützt. Verwenden Sie stattdessen entweder speicheroptimierte Tabellen mit DURABILITY=SCHEMA_ONLY, oder verwenden Sie Tabellentypen und Tabellenvariablen.

Weitere Informationen zur Speicheroptimierung temporärer Tabellen- und Tabellenvariablenszenarios finden Sie unter Faster temp table and table variable by using memory optimization(Schnellere Leistung von temporären Tabellen und Tabellenvariablen mithilfe von Speicheroptimierung).

Im folgenden Beispiel wird gezeigt, wie Sie anstelle einer temporären Tabelle mit drei Spalten (ID, ProductID, Quantity) eine Tabellenvariable @OrderQuantityByProduct des Typs dbo.OrderQuantityByProduct verwenden können:

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  

Weitere Informationen

Migrationsprobleme bei systemintern kompilierten gespeicherten Prozeduren
Von In-Memory OLTP nicht unterstützte Transact-SQL-Konstrukte.