Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Vytváření tabulek a přístup k tabulkám v databázi TempDB z nativně zkompilovaných uložených procedur se nepodporuje. Místo toho použijte tabulky optimalizované pro paměť s DURABILITY=SCHEMA_ONLY nebo použijte typy tabulek a proměnné tabulky.
Další informace o optimalizaci paměti scénářů dočasných tabulek a proměnných tabulek najdete v tématu: Rychlejší dočasná tabulka a proměnná tabulky pomocí optimalizace paměti.
Následující příklad ukazuje, jak lze použití dočasné tabulky se třemi sloupci (ID, ProductID, Quantity) nahradit pomocí proměnné tabulky @OrderQuantityByProduct typu 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
Viz také
Problémy s migrací pro nativně zkompilované uložené procedury
Transact-SQL konstrukty, které In-Memory OLTP nepodporuje