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.