Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Det går inte att skapa och komma åt tabeller i TempDB från inbyggda kompilerade lagrade procedurer. Använd i stället antingen minnesoptimerade tabeller med DURABILITY=SCHEMA_ONLY eller använd tabelltyper och tabellvariabler.
Mer information om minnesoptimering av scenarier för temporära tabeller och tabellvariabler finns i: Snabbare temporär tabell och tabellvariabel med hjälp av minnesoptimering.
I följande exempel visas hur användningen av en temporär tabell med tre kolumner (ID, ProductID, Quantity) kan ersättas med hjälp av en tabellvariabel @OrderQuantityByProduct av typen 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
Se även
Migreringsproblem för internt kompilerade lagrade procedurer
Transact-SQL konstruktioner som inte stöds av In-Memory OLTP