Erstellen und Zugreifen auf Tabellen in TempDB aus gespeicherten Prozeduren
Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 von Temp-Tabellen- und Tabellenvariablenszenarien finden Sie unter: Schnellere Temp-Tabelle und Tabellenvariable mithilfe der Speicheroptimierung.
Das folgende Beispiel zeigt, wie die Verwendung einer temporären Tabelle mit drei Spalten (ID, ProductID, Menge) mithilfe einer Tabellenvariablen @OrderQuantityByProduct vom Typ "dbo" ersetzt werden kann. 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
Weitere Informationen
Migrationsprobleme bei systemintern kompilierten gespeicherten Prozeduren
Von In-Memory OLTP nicht unterstützte Transact-SQL-Konstrukte.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für