Assistente compilazione nativaNative Compilation Advisor

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2014)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

I report di analisi delle prestazioni delle transazioni indicano quali stored procedure interpretate nel database traggono vantaggio se vengono trasferite per usare la compilazione nativa.Transaction Performance Analysis reports tells you which interpreted stored procedures in your database will benefit if ported to use native compilation. Per altri dettagli, vedere Determinare se una tabella o una stored procedure deve essere trasferita a OLTP in memoria.For details see Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP.

Una volta identificata la stored procedure da trasferire per usare la compilazione nativa, è possibile usare l'Assistente compilazione nativa per facilitare la migrazione della stored procedure interpretata alla compilazione nativa.After you identify a stored procedure that you would like to port to use native compilation, you can use the Native Compilation Advisor (NCA) to help you migrate the interpreted stored procedure to native compilation. Per altre informazioni sulle stored procedure compilate in modo nativo, vedere Natively Compiled Stored Procedures.For more information about natively compiled stored procedures, see Natively Compiled Stored Procedures.

In una determinata stored procedure interpretata, l'Assistente compilazione nativa consente di identificare tutte le funzionalità non supportate nei moduli nativi.In a given interpreted stored procedure, the NCA allows you to identify all the features that are not supported in native modules. L'Assistente compilazione nativa fornisce collegamenti alla documentazione relativa a soluzioni alternative e soluzioni.The NCA provides documentation links to work-arounds or solutions.

Per informazioni sulle metodologie di migrazione, vedere OLTP in memoria: considerazioni sulla migrazione e sui modelli di carico di lavoro comuni.For information about migration methodologies, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

Procedura dettagliata per l'utilizzo dell'Assistente compilazione nativaWalkthrough Using the Native Compilation Advisor

In Esplora oggettifare clic con il pulsante destro del mouse sulla stored procedure che si desidera convertire, quindi selezionare Assistente compilazione nativa.In Object Explorer, right click the stored procedure you want to convert, and select Native Compilation Advisor. Verrà visualizzata la pagina introduttiva di Assistente compilazione nativa stored procedure.This will display the welcome page for the Stored Procedure Native Compilation Advisor. Fare clic su Avanti per continuare.Click Next to continue.

Convalida stored procedureStored Procedure Validation

In questa pagina verrà indicato se la stored procedure utilizza dei costrutti che non sono compatibili con la compilazione nativa.This page will report if the stored procedure uses any constructs that are not compatible with native compilation. Fare clic su Avanti per vedere i dettagli.You can click Next to see details. Se sono presenti costrutti che non sono compatibili con la compilazione nativa, fare clic su Avanti per vedere i dettagli.If there are constructs that are not compatible with native compilation, you can click Next to see details.

Risultati di convalida stored procedureStored Procedure Validation Result

I dettagli su eventuali costrutti non compatibili con la compilazione nativa saranno visualizzati nella pagina Risultati di convalida stored procedure .If there are constructs that are not compatible with native compilation, the Stored Procedure Validation Result page will display details. È possibile generare un report (facendo clic su Genera report), uscire da Assistente compilazione nativae aggiornare il codice in modo che risulti compatibile con la compilazione nativa.You can generate a report (click Generate Report), exit the Native Compilation Advisor, and update your code so that it is compatible with native compilation.

Codice di esempioCode Sample

L'esempio seguente mostra una stored procedure interpretata e la stored procedure equivalente per la compilazione nativa.The following sample shows an interpreted stored procedure and the equivalent stored procedure for native compilation. Nell'esempio viene supposto l'utilizzo di una directory denominata c:\data.The sample assumes a directory called c:\data.

Nota

Come al solito, l'elemento FILEGROUP e l'istruzione mydatabase USE si applicano a Microsoft SQL Server, ma non al database SQL di Azure.As usual, the FILEGROUP element, and the USE mydatabase statement, apply to Microsoft SQL Server, but do not apply to Azure SQL Database.

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;  

Vedere ancheSee Also

Migrazione a OLTP in memoria Migrating to In-Memory OLTP
Requisiti per l'utilizzo di tabelle con ottimizzazione per la memoria Requirements for Using Memory-Optimized Tables