Ratgeber für systeminterne Kompilierung

Gilt für:SQL ServerAzure SQL-Datenbank

Berichte zur Transaktionsleistungsanalyse informieren Sie darüber, welche interpretierten gespeicherten Prozeduren in der Datenbank von einer Portierung zur nativen Kompilierung profitieren. Details finden Sie unter Bestimmen, ob eine Tabelle oder eine gespeicherte Prozedur zu In-Memory OLTP portiert werden soll.

Nachdem Sie eine gespeicherte Prozedur identifiziert haben, die Sie zur Verwendung der nativen Kompilierung portieren möchten, können Sie den Ratgeber für native Kompilierung verwenden, um die Migration der interpretierten gespeicherten Prozedur zur nativen Kompilierung zu vereinfachen. Weitere Informationen zu systemintern kompilierten gespeicherten Prozeduren finden Sie unter Natively Compiled Stored Procedures.

In einer bestimmten interpretierten gespeicherten Prozedur können Sie mit dem Ratgeber für native Kompilierung alle Features identifizieren, die in nativen Modulen nicht unterstützt werden. Der Ratgeber für native Kompilierung bietet Links zu Problemumgehungen oder Lösungen an.

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-Explorer mit der rechten Maustaste auf die gespeicherte Prozedur, die Sie konvertieren möchten, und wählen Sie den systemeigenen Kompilierungsratgeber aus. 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 native Kompilierung erläutert. Das in diesem Beispiel verwendete Verzeichnis ist c:\data.

Hinweis

Wie üblich gelten das FILEGROUP -Element und die USE MyDatabase-Anweisung für Microsoft SQL Server, jedoch nicht für die Azure SQL-Datenbank.

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;  

Weitere Informationen

Migrieren zu In-Memory OLTP
Anforderungen für die Verwendung von speicheroptimierten Tabellen