Conseiller de compilation native

S’applique à :SQL ServerAzure SQL Database

L’outil d’analyse des rapports de transaction indique quelles procédures stockées interprétées dans votre base de données tireront parti de l’utilisation de la compilation native. Pour plus d’informations, consultez Déterminer si une table ou une procédure stockée doit être déplacée vers l’OLTP en mémoire.

Après avoir identifié une procédure stockée que vous souhaitez déplacer pour utiliser la compilation native, vous pouvez utiliser le conseiller de compilation native pour migrer la procédure stockée interprétée vers la compilation native. Pour plus d'informations sur les procédures stockées compilées en mode natif, consultez Natively Compiled Stored Procedures.

Dans une procédure stockée interprétée donnée, le conseiller de compilation native vous permet d’identifier toutes les fonctionnalités qui ne sont pas prises en charge dans les modules natifs. Le conseiller de compilation native fournit des liens de documentation permettant de résoudre ou de contourner les problèmes rencontrés.

Pour plus d’informations sur les méthodologies de migration, consultez OLTP en mémoire - Modèles de charge de travail courants et considérations relatives à la migration.

Procédure pas à pas d'utilisation du Conseiller de compilation native

Dans l’Explorateur d’objets, cliquez avec le bouton droit sur la procédure stockée à convertir, puis sélectionnez Conseiller de compilation native. Ce faisant, vous affichez la page d'accueil du Conseiller compilation native de procédure stockée. Cliquez sur Suivant pour continuer.

Validation de la procédure stockée

Cette page signale si la procédure stockée utilise des éléments qui ne sont pas compatibles avec la compilation native. Vous pouvez cliquer sur Suivant pour afficher les détails. Si certains éléments ne sont pas compatibles avec la compilation native, vous pouvez cliquer sur Suivant pour afficher les détails.

Résultats de la validation de la procédure stockée

Si certains éléments ne sont pas compatibles avec la compilation native, la page Résultat de la validation de la procédure stockée affiche les détails. Vous pouvez générer un rapport (cliquez sur Générer le rapport), quitter le Conseiller de compilation nativeet mettre à jour votre code afin qu’il soit compatible avec la compilation native.

Exemple de code

L’exemple suivant illustre une procédure stockée interprétée et la procédure stockée équivalente pour la compilation native. L'exemple suppose la présence d'un répertoire appelé c:\data.

Note

Comme d’habitude, l’élément FILEGROUP et l’instruction USE base_de_données s’appliquent à Microsoft SQL Server, mais pas à la base de données SQL Azure.

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;  

Voir aussi

Migration vers OLTP en mémoire
Exigences liées à l’utilisation des tables à mémoire optimisée