Freigeben über


Nativer Kompilierungsratgeber

Tool für Transaktionsleistungsberichte (siehe Ermitteln, ob eine Tabelle oder gespeicherte Prozedur zu In-Memory OLTP portiert werden soll) informiert Sie darüber, welche interpretierten gespeicherten Prozeduren in Ihrer Datenbank von Vorteil sind, wenn eine portierte systemeigene Kompilierung verwendet wird. Nachdem Sie eine gespeicherte Prozedur identifiziert haben, die Sie portieren möchten, um die systemeigene Kompilierung zu verwenden, können Sie den systemeigenen Kompilierungsratgeber verwenden, um die interpretierte gespeicherte Prozedur zur systemeigenen Kompilierung zu migrieren. Weitere Informationen zu nativ kompilierten gespeicherten Prozeduren finden Sie unter "Natively Compiled Stored Procedures".

Stellen Sie zunächst eine Verbindung mit der Instanz her, die die interpretierte gespeicherte Prozedur enthält. Sie können eine Verbindung mit SQL Server 2008- oder SQL Server 2008 R2-, SQL Server 2012- oder SQL Server 2014-Instanz herstellen. Wenn Sie jedoch einen Migrationsvorgang mit dem Ratgeber ausführen möchten, müssen Sie eine Verbindung mit einer SQL Server 2014-Instanz herstellen, auf der In-Memory OLTP-Funktionalität aktiviert ist. Weitere Informationen zu In-Memory OLTP-Anforderungen finden Sie unter "Requirements for Using Memory-Optimized Tables".

Informationen zu Migrationsmethoden finden Sie unter In-Memory OLTP – Allgemeine Arbeitsauslastungsmuster und Migrationsüberlegungen.

Exemplarische Vorgehensweise mit dem nativen Kompilierungsratgeber

Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die gespeicherte Prozedur, die Sie konvertieren möchten, und wählen Sie den nativen Kompilierungsratgeber aus. Dadurch wird die Willkommensseite für den nativen Kompilierungsratgeber für gespeicherte Prozeduren angezeigt. Klicken Sie auf Weiter, um fortzufahren.

Überprüfung der gespeicherten Prozedur

Diese Seite meldet, ob die gespeicherte Prozedur Konstrukte verwendet, die nicht mit der nativen Kompilierung kompatibel sind. Sie können auf "Weiter" klicken, um Details anzuzeigen. Wenn es Konstrukte gibt, die nicht mit der nativen Kompilierung kompatibel sind, können Sie auf "Weiter" klicken, um Details anzuzeigen.

Ergebnis der Überprüfung der gespeicherten Prozedur

Wenn Konstrukte vorhanden sind, die nicht mit der systemeigenen Kompilierung kompatibel sind, werden auf der Seite " Ergebnis der Überprüfung der gespeicherten Prozedur " Details angezeigt. Sie können einen Bericht generieren (klicken Sie auf " Bericht generieren", den systemeigenen Kompilierungsratgeber beenden und den Code so aktualisieren, dass er mit der systemeigenen Kompilierung kompatibel ist.

Codebeispiel

Das folgende Beispiel zeigt eine interpretierte gespeicherte Prozedur und die entsprechende gespeicherte Prozedur für die systemeigene Kompilierung. Im Beispiel wird davon ausgegangen, dass ein Verzeichnis mit dem Namen "c:\data" verwendet wird.

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  
  
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME2, @status TINYINT  
AS   
BEGIN   
  
  INSERT dbo.SalesOrders VALUES (@id, @date, @status)  
  
END  
  
go  
  
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  
exec dbo.InsertOrder @id= 10, @date = '1956-01-01 12:00:00', @status = 1 ;  
exec dbo.InsertOrderXTP @id= 11, @date = '1956-01-01 12:01:00', @status = 2 ;  
select * from SalesOrders  

Siehe auch

Migrieren zu In-Memory OLTP