Microsoft SQL Server
ネイティブにコンパイルされたモジュール(Hekaton)
サーチ…
ネイティブにコンパイルされたストアドプロシージャ
ネイティブコンパイルの手順では、T-SQLコードはdllにコンパイルされ、ネイティブCコードとして実行されます。ネイティブコンパイルストアドプロシージャを作成するには、以下を行う必要があります。
- 標準のCREATE PROCEDURE構文を使用する
- ストアドプロシージャ定義でNATIVE_COMPILATIONオプションを設定する
- ストアドプロシージャ定義でSCHEMABINDINGオプションを使用する
- ストアドプロシージャ定義でEXECUTE AS OWNERオプションを定義する
標準BEGIN ENDブロックの代わりに、BEGIN ATOMICブロックを使用する必要があります。
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
例:
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
ネイティブにコンパイルされたスカラー関数
ネイティブにコンパイルされた関数のコードはCコードに変換され、dllとしてコンパイルされます。ネイティブ・コンパイルされたスカラー関数を作成するには、以下が必要です。
- 標準のCREATE FUNCTION構文を使用する
- 関数定義でNATIVE_COMPILATIONオプションを設定する
- 関数定義でSCHEMABINDINGオプションを使用する
標準BEGIN ENDブロックの代わりに、BEGIN ATOMICブロックを使用する必要があります。
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
例:
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)
ネイティブインラインテーブル値関数
ネイティブコンパイルされたテーブル値関数は結果としてテーブルを返します。ネイティブにコンパイルされた関数のコードはCコードに変換され、dllとしてコンパイルされます。インラインテーブル値関数のみがバージョン2016でサポートされています。ネイティブテーブル値関数を作成するには、以下を行う必要があります。
- 標準のCREATE FUNCTION構文を使用する
- 関数定義でNATIVE_COMPILATIONオプションを設定する
- 関数定義でSCHEMABINDINGオプションを使用する
標準BEGIN ENDブロックの代わりに、BEGIN ATOMICブロックを使用する必要があります。
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
例:
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
);
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow