Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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