Microsoft SQL Server
Módulos compilados de forma nativa (Hekaton)
Buscar..
Procedimiento almacenado nativamente compilado
En un procedimiento con compilación nativa, el código T-SQL se compila a dll y se ejecuta como código C nativo. Para crear un procedimiento almacenado nativo compilado, necesita:
- Utilice la sintaxis estándar de CREAR PROCEDIMIENTO
- Establecer la opción NATIVE_COMPILATION en la definición de procedimiento almacenado
- Utilice la opción SCHEMABINDING en la definición de procedimiento almacenado
- Defina la opción EJECUTAR COMO PROPIETARIO en la definición de procedimiento almacenado
En lugar del bloque BEGIN END estándar, necesita usar el bloque BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Ejemplo:
CREATE PROCEDURE usp_LoadMemOptTable (@maxRows INT, @FullName NVARCHAR(200))
WITH
NATIVE_COMPILATION,
SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
DECLARE @i INT = 1
WHILE @i <= @maxRows
BEGIN
INSERT INTO dbo.MemOptTable3 VALUES(@i, @FullName, GETDATE())
SET @i = @i+1
END
END
GO
Función escalar compilada de forma nativa
El código en la función compilada de forma nativa se transformará en código C y se compilará como dll. Para crear una función escalar compilada nativa necesitas:
- Utilice la sintaxis estándar de CREATE FUNCTION
- Establecer la opción NATIVE_COMPILATION en la definición de la función
- Utilice la opción SCHEMABINDING en la definición de la función
En lugar del bloque BEGIN END estándar, necesita usar el bloque BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Ejemplo:
CREATE FUNCTION [dbo].[udfMultiply]( @v1 int, @v2 int )
RETURNS bigint
WITH NATIVE_COMPILATION, SCHEMABINDING
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'English')
DECLARE @ReturnValue bigint;
SET @ReturnValue = @v1 * @v2;
RETURN (@ReturnValue);
END
-- usage sample:
SELECT dbo.udfMultiply(10, 12)
Función de valor de tabla en línea nativa
La función de valor de tabla compilada nativa devuelve tabla como resultado. El código en la función compilada de forma nativa se transformará en código C y se compilará como dll. Solo las funciones con valor de tabla en línea son compatibles con la versión 2016. Para crear una función de valor de tabla nativa, necesita:
- Utilice la sintaxis estándar de CREATE FUNCTION
- Establecer la opción NATIVE_COMPILATION en la definición de la función
- Utilice la opción SCHEMABINDING en la definición de la función
En lugar del bloque BEGIN END estándar, necesita usar el bloque BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Ejemplo:
CREATE FUNCTION [dbo].[udft_NativeGetBusinessDoc]
(
@RunDate VARCHAR(25)
)
RETURNS TABLE
WITH SCHEMABINDING,
NATIVE_COMPILATION
AS
RETURN
(
SELECT BusinessDocNo,
ProductCode,
UnitID,
ReasonID,
PriceID,
RunDate,
ReturnPercent,
Qty,
RewardAmount,
ModifyDate,
UserID
FROM dbo.[BusinessDocDetail_11]
WHERE RunDate >= @RunDate
);