Asistente de compilación nativa

Se aplica a:SQL ServerAzure SQL Database

Los informes de análisis de rendimiento de transacciones le informan sobre los procedimientos almacenados interpretados de la base de datos que se beneficiarían si se convierten para utilizar la compilación nativa. Para obtener más información, vea Determinar si una tabla o un procedimiento almacenado se debe pasar a OLTP en memoria.

Después de identificar el procedimiento almacenado que desea convertir para que utilice la compilación nativa, puede utilizar el Asistente para compilación nativa (NCA) para que le ayude a migrar el procedimiento almacenado interpretado a la compilación nativa. Para obtener más información acerca de los procedimientos almacenados compilados de forma nativa, vea Natively Compiled Stored Procedures.

En un procedimiento almacenado interpretado determinado, el NCA le permite identificar todas las características que no se admiten en los módulos nativos. El NCA proporciona vínculos de documentación a soluciones alternativas o soluciones propiamente dichas.

Para obtener más información sobre las metodologías de migración, vea OLTP en memoria: patrones de carga de trabajo comunes y consideraciones sobre la migración.

Tutorial del uso del Asistente de compilación nativa

En el Explorador de objetos, haga clic con el botón derecho en el procedimiento almacenado que desea convertir, y seleccione Asistente de compilación nativa. Se mostrará la página de bienvenida del Asistente de compilación nativa de procedimiento almacenado. Haga clic en Siguiente para continuar.

Validación del procedimiento almacenado

Esta página le indicará si el procedimiento almacenado utiliza construcciones que no son compatibles con la compilación nativa. Puede hacer clic en Siguiente para ver los detalles. Si hay construcciones que no son compatibles con la compilación nativa, puede hacer clic en Siguiente para ver los detalles.

Resultado de la validación del procedimiento almacenado

Si hay construcciones que no son compatibles con la compilación nativa, la página Resultado de la validación del procedimiento almacenado mostrará los detalles. Puede generar un informe (haga clic en Generar informe), salir del Asistente de compilación nativay actualizar el código para que sea compatible con la compilación nativa.

Ejemplo de código

El ejemplo siguiente muestra un procedimiento almacenado interpretado y el procedimiento almacenado equivalente para la compilación nativa. El ejemplo supone que existe un directorio denominado c:\data.

Nota:

Como de costumbre, el elemento FILEGROUP y la instrucción mydatabase USE son válidos en Microsoft SQL Server, pero no en Base de datos SQL de 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;  

Consulte también

Migrar a OLTP en memoria
Requisitos para utilizar las tablas con optimización para memoria