Bagikan melalui


Native Compilation Advisor

Berlaku untuk: SQL ServerAzure SQL Database

Laporan Analisis Performa Transaksi memberi tahu Anda prosedur tersimpan yang ditafsirkan dalam database Anda akan mendapat manfaat jika di-port untuk menggunakan kompilasi asli. Untuk detailnya, lihat Menentukan apakah Tabel atau Prosedur Tersimpan Harus Di-Port ke OLTP Dalam Memori.

Setelah mengidentifikasi prosedur tersimpan yang ingin Anda port untuk menggunakan kompilasi asli, Anda dapat menggunakan Native Compilation Advisor (NCA) untuk membantu Anda memigrasikan prosedur tersimpan yang ditafsirkan ke kompilasi asli. Untuk informasi selengkapnya tentang prosedur tersimpan yang dikompilasi secara asli, lihat Prosedur Tersimpan yang Dikompilasi Secara Asli.

Dalam prosedur tersimpan yang ditafsirkan tertentu, NCA memungkinkan Anda mengidentifikasi semua fitur yang tidak didukung dalam modul asli. NCA menyediakan tautan dokumentasi ke solusi atau work-around.

Untuk informasi tentang metodologi migrasi, lihat OLTP Dalam Memori - Pola Beban Kerja Umum dan Pertimbangan Migrasi.

Panduan Menggunakan Native Compilation Advisor

Di Object Explorer, klik kanan prosedur tersimpan yang ingin Anda konversi, dan pilih Native Compilation Advisor. Ini akan menampilkan halaman selamat datang untuk Penasihat Kompilasi Asli Prosedur Tersimpan. Pilih Berikutnya untuk melanjutkan.

Validasi Prosedur Tersimpan

Halaman ini akan melaporkan jika prosedur tersimpan menggunakan konstruksi apa pun yang tidak kompatibel dengan kompilasi asli. Anda dapat mengklik Berikutnya untuk melihat detailnya. Jika ada konstruksi yang tidak kompatibel dengan kompilasi asli, Anda dapat mengklik Berikutnya untuk melihat detailnya.

Hasil Validasi Prosedur Tersimpan

Jika ada konstruksi yang tidak kompatibel dengan kompilasi asli, halaman Hasil Validasi Prosedur Tersimpan akan menampilkan detail. Anda dapat membuat laporan (klik Buat Laporan), keluar dari Native Compilation Advisor, dan memperbarui kode Anda sehingga kompatibel dengan kompilasi asli.

Sampel Kode

Sampel berikut menunjukkan prosedur tersimpan yang ditafsirkan dan prosedur tersimpan yang setara untuk kompilasi asli. Sampel mengasumsikan direktori yang disebut c:\data.

Catatan

Seperti biasa, elemen FILEGROUP , dan pernyataan USE mydatabase, berlaku untuk Microsoft SQL Server, tetapi tidak berlaku untuk Azure SQL Database.

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;  

Lihat Juga

Migrasi ke OLTP Dalam Memori
Persyaratan untuk Menggunakan Tabel yang Dioptimalkan Memori