Partager via


Conseiller de compilation native

L’outil de rapports de performances des transactions (voir Déterminer si une table ou une procédure stockée doit être transférée vers In-Memory OLTP) vous informe des procédures stockées interprétées dans votre base de données si elles sont transférées pour utiliser la compilation native. Après avoir identifié une procédure stockée que vous souhaitez porter pour utiliser la compilation native, vous pouvez utiliser le conseiller de compilation natif pour vous aider à 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 Procédures stockées compilées en mode natif.

Pour commencer, connectez-vous à l’instance qui contient la procédure stockée interprétée. Vous pouvez vous connecter à l’instance SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 ou SQL Server 2014. Toutefois, si vous souhaitez effectuer une opération de migration avec l’assistant, vous devez vous connecter à une instance SQL Server 2014 sur laquelle In-Memory fonctionnalité OLTP est activée. Pour plus d’informations sur les exigences OLTP In-Memory, consultez Configuration requise pour l’utilisation de tables Memory-Optimized.

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

Procédure pas à pas à l’aide de l’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. Cette opération affichera la page de bienvenue de l’Assistant de Compilation Native des Procédures Stockées. Cliquez sur Suivant pour continuer.

Validation de procédure enregistrée

Cette page signale si la procédure stockée utilise des constructions qui ne sont pas compatibles avec la compilation native. Vous pouvez cliquer sur Suivant pour afficher les détails. S’il existe des constructions qui ne sont pas compatibles avec la compilation native, vous pouvez cliquer sur Suivant pour afficher les détails.

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

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

Exemple de code

L’exemple suivant montre une procédure stockée interprétée et la procédure stockée équivalente pour la compilation native. L’exemple suppose un répertoire appelé 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  

Voir aussi

Migration vers In-Memory OLTP