Microsoft SQL Server
Nativ zusammengestellte Module (Hekaton)
Suche…
Nativ kompilierte gespeicherte Prozedur
In einer Prozedur mit systemeigener Kompilierung wird T-SQL-Code in dll kompiliert und als nativer C-Code ausgeführt. Um eine native, kompilierte gespeicherte Prozedur zu erstellen, müssen Sie:
- Verwenden Sie die standardmäßige CREATE PROCEDURE-Syntax
- Legen Sie die Option NATIVE_COMPILATION in der Definition der gespeicherten Prozedur fest
- Verwenden Sie die Option SCHEMABINDING in der Definition gespeicherter Prozeduren
- Definieren Sie die Option EXECUTE AS OWNER in der Definition der gespeicherten Prozedur
Anstelle des Standard-BEGIN END-Blocks müssen Sie den BEGIN ATOMIC-Block verwenden:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Beispiel:
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
Nativ kompilierte Skalarfunktion
Code in nativ kompilierter Funktion wird in C-Code umgewandelt und als DLL kompiliert. Um eine native kompilierte Skalarfunktion zu erstellen, müssen Sie:
- Verwenden Sie die standardmäßige CREATE FUNCTION-Syntax
- Legen Sie die Option NATIVE_COMPILATION in der Funktionsdefinition fest
- Verwenden Sie die Option SCHEMABINDING in der Funktionsdefinition
Anstelle des Standard-BEGIN END-Blocks müssen Sie den BEGIN ATOMIC-Block verwenden:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Beispiel:
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)
Native Inline-Tabellenwertfunktion
Die native kompilierte Tabellenwertfunktion gibt eine Tabelle als Ergebnis zurück. Code in nativ kompilierter Funktion wird in C-Code umgewandelt und als DLL kompiliert. In Version 2016 werden nur Inline-Tabellenwertfunktionen unterstützt. Um eine native Tabellenwertfunktion zu erstellen, müssen Sie:
- Verwenden Sie die standardmäßige CREATE FUNCTION-Syntax
- Legen Sie die Option NATIVE_COMPILATION in der Funktionsdefinition fest
- Verwenden Sie die Option SCHEMABINDING in der Funktionsdefinition
Anstelle des Standard-BEGIN END-Blocks müssen Sie den BEGIN ATOMIC-Block verwenden:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Beispiel:
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
);