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
Zprávy o analýze výkonu transakcí vám ukazují, které interpretované uložené procedury ve vaší databázi budou mít prospěch, pokud je převedete k použití nativní kompilace. Podrobnosti najdete v tématu Určení, jestli má být tabulka nebo uložená procedura portována do In-Memory OLTP.
Jakmile identifikujete uloženou proceduru, kterou chcete portovat tak, aby používala nativní kompilaci, můžete pomocí nativního poradce pro kompilaci (NCA) migrovat interpretovanou uloženou proceduru do nativní kompilace. Další informace o nativně kompilovaných uložených procedurách naleznete v tématu Nativní kompilace uložených procedur.
V dané interpretované uložené procedurě ncA umožňuje identifikovat všechny funkce, které nejsou podporovány v nativních modulech. NCA poskytuje odkazy na dokumentaci s alternativními postupy nebo řešeními.
Informace o metodologiích migrace najdete v tématu In-Memory OLTP – Běžné vzory úloh a aspekty migrace.
Návod s využitím nativního poradce pro kompilaci
V Průzkumníku objektů klikněte pravým tlačítkem myši na uloženou proceduru, kterou chcete převést, a vyberte Native Compilation Advisor. Zobrazí se úvodní stránka pro Nativního poradce pro kompilaci uložených procedur. Pokračujte kliknutím na Další.
Ověření uložené procedury
Tato stránka bude hlásit, pokud uložená procedura používá jakékoli konstrukty, které nejsou kompatibilní s nativní kompilací. Kliknutím na tlačítko Další zobrazíte podrobnosti. Pokud existují konstrukce, které nejsou kompatibilní s nativní kompilací, můžete kliknutím na tlačítko Další zobrazit podrobnosti.
Výsledek ověření uložené procedury
Pokud jsou konstrukty, které nejsou kompatibilní s nativní kompilací, zobrazí se podrobnosti na stránce Výsledek ověření uložené procedury . Můžete vygenerovat sestavu (klikněte na Generovat sestavu), ukončete nativní nástroj Advisor pro kompilaci a aktualizujte kód tak, aby byl kompatibilní s nativní kompilací.
Ukázka kódu
Následující ukázka ukazuje interpretovanou uloženou proceduru a ekvivalentní uloženou proceduru pro nativní kompilaci. Ukázka předpokládá adresář s názvem c:\data.
Poznámka:
Jako obvykle platí, že element FILEGROUP a příkaz USE mydatabase platí pro Microsoft SQL Server, ale nevztahuje se na Azure SQL Database.
CREATE DATABASE Demo
ON
PRIMARY(NAME = [Demo_data],
FILENAME = 'C:\DATA\Demo_data.mdf', size=500MB)
, FILEGROUP [Demo_fg] CONTAINS MEMORY_OPTIMIZED_DATA(
NAME = [Demo_dir],
FILENAME = 'C:\DATA\Demo_dir')
LOG ON (name = [Demo_log], Filename='C:\DATA\Demo_log.ldf', size=500MB)
COLLATE Latin1_General_100_BIN2;
go
USE Demo;
go
CREATE TABLE [dbo].[SalesOrders]
(
[order_id] [int] NOT NULL,
[order_date] [datetime] NOT NULL,
[order_status] [tinyint] NOT NULL
CONSTRAINT [PK_SalesOrders] PRIMARY KEY NONCLUSTERED HASH
(
[order_id]
) WITH ( BUCKET_COUNT = 2097152)
) WITH ( MEMORY_OPTIMIZED = ON )
go
-- Interpreted.
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME2, @status TINYINT
AS
BEGIN
INSERT dbo.SalesOrders VALUES (@id, @date, @status);
END
go
-- Natively Compiled.
CREATE PROCEDURE [dbo].[InsertOrderXTP]
@id INT, @date DATETIME2, @status TINYINT
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS
BEGIN ATOMIC WITH
(TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'
)
INSERT dbo.SalesOrders VALUES (@id, @date, @status);
END
go
SELECT * from SalesOrders;
go
EXECUTE dbo.InsertOrder @id= 10, @date = '1956-01-01 12:00:00', @status = 1;
EXECUTE dbo.InsertOrderXTP @id= 11, @date = '1956-01-01 12:01:00', @status = 2;
SELECT * from SalesOrders;
Viz také
Migrace na In-Memory OLTP
Požadavky na používání paměťově optimalizovaných tabulek