Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
El informe de análisis del rendimiento de las transacciones le informa 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 debe migrarse a OLTP en memoria.
Después de identificar el procedimiento almacenado que desea convertir para que utilice la compilación nativa, puede utilizar el Asesor de 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 Procedimientos almacenados compilados de forma nativa.
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 temporales o soluciones propiamente dichas.
Para obtener más información sobre las metodologías de migración, vea In-Memory OLTP - Common Workload Patterns and Migration Considerations.
Recorrido con el 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 Asesor de compilación nativa. Se mostrará la página de bienvenida del Stored Procedure Native Compilation Advisor. 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
Cuando ejecutas CREATE DATABASE sin opciones adicionales en Azure SQL Database, la base de datos se crea en el servidor lógico con la configuración predeterminada. La FILEGROUP sintaxis no se aplica a Azure SQL Database ni a la base de datos SQL en Microsoft Fabric.
En Azure SQL Database o SQL Database en Microsoft Fabric, si la base de datos prevista ya existe, puedes saltarte las sentencias CREATE DATABASE de ejemplo y las sentencias USE, que no son compatibles, y conectarte directamente a esa base de datos. Conéctate directamente a la master y a las bases de datos de usuario deseadas por separado.
USE [master];
GO
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;