네이티브 컴파일 관리자Native Compilation Advisor

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

트랜잭션 성능 분석 보고서는 네이티브 컴파일을 사용하도록 변환할 경우 효과적인 해석된 저장 프로시저에 대한 정보를 제공합니다.Transaction Performance Analysis reports tells you which interpreted stored procedures in your database will benefit if ported to use native compilation. 자세한 내용은 메모리 내 OLTP에 테이블 또는 저장 프로시저를 이식해야 하는지 확인을 참조하세요.For details see Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP.

네이티브 컴파일을 사용하도록 변환할 저장 프로시저를 식별한 후 네이티브 컴파일 관리자(NCA)를 사용하여 해석된 저장 프로시저를 네이티브 컴파일로 마이그레이션할 수 있습니다.After you identify a stored procedure that you would like to port to use native compilation, you can use the Native Compilation Advisor (NCA) to help you migrate the interpreted stored procedure to native compilation. 고유하게 컴파일된 저장 프로시저에 대한 자세한 내용은 Natively Compiled Stored Procedures를 참조하세요.For more information about natively compiled stored procedures, see Natively Compiled Stored Procedures.

지정된 해석 저장 프로시저에서 NCA를 통해 네이티브 모듈에서 지원되지 않는 모든 기능을 식별할 수 있습니다.In a given interpreted stored procedure, the NCA allows you to identify all the features that are not supported in native modules. NCA는 해결 방법 또는 솔루션에 대한 설명서 링크를 제공합니다.The NCA provides documentation links to work-arounds or solutions.

마이그레이션 방법에 대한 자세한 내용은 메모리 내 OLTP – 일반적인 작업 패턴 및 마이그레이션 고려 사항을 참조하세요.For information about migration methodologies, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

네이티브 컴파일 관리자 사용 연습Walkthrough Using the Native Compilation Advisor

개체 탐색기에서 변환할 저장 프로시저를 마우스 오른쪽 단추로 클릭하고 네이티브 컴파일 관리자를 선택합니다.In Object Explorer, right click the stored procedure you want to convert, and select Native Compilation Advisor. 저장 프로시저 네이티브 컴파일 관리자시작 페이지가 표시됩니다.This will display the welcome page for the Stored Procedure Native Compilation Advisor. 계속하려면 다음 을 클릭합니다.Click Next to continue.

저장 프로시저 유효성 검사Stored Procedure Validation

이 페이지에는 저장 프로시저에 네이티브 컴파일과 호환되지 않는 구문이 사용되었는지 여부가 표시됩니다.This page will report if the stored procedure uses any constructs that are not compatible with native compilation. 다음 을 클릭하여 세부 정보를 볼 수 있습니다.You can click Next to see details. 네이티브 컴파일과 호환되지 않는 구문이 있는 경우 다음 을 클릭하여 세부 정보를 볼 수 있습니다.If there are constructs that are not compatible with native compilation, you can click Next to see details.

저장 프로시저 유효성 검사 결과Stored Procedure Validation Result

네이티브 컴파일과 호환되지 않는 구문이 있는 경우 저장 프로시저 유효성 검사 결과 페이지에 세부 정보가 표시됩니다.If there are constructs that are not compatible with native compilation, the Stored Procedure Validation Result page will display details. 보고서를 생성하고( 보고서 생성클릭), 네이티브 컴파일 관리자를 종료하고, 코드가 네이티브 컴파일과 호환되도록 업데이트할 수 있습니다.You can generate a report (click Generate Report), exit the Native Compilation Advisor, and update your code so that it is compatible with native compilation.

코드 예제Code Sample

다음 예에서는 해석된 저장 프로시저와 네이티브 컴파일을 사용했을 때의 해당 저장 프로시저를 보여 줍니다.The following sample shows an interpreted stored procedure and the equivalent stored procedure for native compilation. 이 예에서는 c:\data라는 디렉터리를 사용합니다.The sample assumes a directory called c:\data.

참고

일반적으로 FILEGROUP 요소 및 USE mydatabase 문은 Microsoft SQL Server에 적용되지만 Azure SQL 데이터베이스에는 적용되지 않습니다.As usual, the FILEGROUP element, and the USE mydatabase statement, apply to Microsoft SQL Server, but do not apply to 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;  

참고 항목See Also

메모리 내 OLTP로 마이그레이션 Migrating to In-Memory OLTP
메모리 액세스에 최적화된 테이블 사용을 위한 요구 사항 Requirements for Using Memory-Optimized Tables