Freigeben über


Ratgeber für native Kompilierung

Das Tool für Transaktionsleistungsberichte (siehe Ermitteln, ob eine Tabelle oder eine gespeicherte Prozedur zu In-Memory OLTP portiert werden soll) informiert Sie darüber, welche interpretierten gespeicherten Prozeduren in Ihrer Datenbank von Nutzen sind, wenn sie zur Verwendung der nativen Kompilierung portiert werden. Nachdem Sie eine gespeicherte Prozedur identifiziert haben, die Sie zur Verwendung der systeminternen Kompilierung portieren möchten, können Sie den Ratgeber für die systeminterne Kompilierung verwenden, um die Migration der interpretierten gespeicherten Prozedur zur systeminternen Kompilierung zu vereinfachen. Weitere Informationen zu systemintern 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, SQL Server 2008 R2, SQL Server 2012 oder SQL Server 2014 instance herstellen. Wenn Sie jedoch einen Migrationsvorgang mit dem Advisor durchführen möchten, müssen Sie eine Verbindung mit einer SQL Server 2014 instance herstellen, für die In-Memory OLTP-Funktionalität aktiviert ist. Weitere Informationen zu den Anforderungen für In-Memory OLTP finden Sie unter Requirements for Using Memory-Optimized Tables.

Weitere Informationen zu Migrationsmethoden finden Sie unter In-Memory OLTP - Common Workload Patterns and Migration Considerations (In-Memory-OLTP: Allgemeine Workloadmuster und Überlegungen zur Migration).

Exemplarische Vorgehensweise: Ratgeber für native Kompilierung

Klicken Sie im Objekt-Explorermit der rechten Maustaste auf die gespeicherte Prozedur, die Sie konvertieren möchten, und wählen Sie Ratgeber für native Kompilierungaus. Daraufhin wird die Willkommensseite für Ratgeber für die native Kompilierung gespeicherter Prozedurenangezeigt. Klicken Sie auf zum Fortfahren auf Weiter.

Überprüfung der gespeicherten Prozedur

Auf dieser Seite wird angezeigt, ob die gespeicherte Prozedur Konstrukte verwendet, die mit der nativen Kompilierung nicht kompatibel sind. Klicken Sie auf Weiter , um weitere Details anzuzeigen. Wenn Konstrukte vorhanden sind, die nicht mit der nativen Kompilierung kompatibel sind, können Sie durch Klicken auf Weiter zusätzliche Details abrufen.

Überprüfungsergebnis der gespeicherten Prozedur

Wenn Konstrukte vorhanden sind, die nicht mit der nativen Kompilierung kompatibel sind, werden auf der Seite Überprüfungsergebnis der gespeicherten Prozedur detaillierte Informationen angezeigt. Sie können (durch Klicken auf Bericht generieren) einen Bericht generieren, den Ratgeber für native Kompilierungbeenden und den Code aktualisieren, sodass er mit der nativen Kompilierung kompatibel ist.

Codebeispiel

Im folgenden Beispiel werden eine interpretierte gespeicherte Prozedur und die äquivalente gespeicherte Prozedur für die systeminterne Kompilierung erläutert. Das in diesem Beispiel verwendete Verzeichnis ist c:\data.

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  

Weitere Informationen

Migrieren zu In-Memory OLTP