Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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