Altering Natively Compiled T-SQL ModulesAltering Natively Compiled T-SQL Modules

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server 2016SQL Server 2016 이상 및 SQL 데이터베이스SQL Database 에서는 ALTER 문을 사용하여 고유하게 컴파일된 저장 프로시저와 스칼라 UDF, 트리거 등 고유하게 컴파일된 다른 T-SQL 모듈에 대해 ALTER 작업을 수행할 수 있습니다.In SQL Server 2016SQL Server 2016 (and later) and SQL 데이터베이스SQL Database you can perform ALTER operations on natively compiled stored procedures and other natively compiled T-SQL modules such as scalar UDFs and triggers using the ALTER statement.

고유하게 컴파일된 T-SQL 모듈에 대해 ALTER를 실행하면 새 정의를 사용하여 모듈이 다시 컴파일됩니다.When executing ALTER on a natively compiled T-SQL module, the module is recompiled using a new definition. 다시 컴파일이 진행되는 동안에는 이전 버전의 모듈을 계속 실행할 수 있습니다.While recompilation is in progress, the old version of the module continues to be available for execution. 컴파일이 완료되면 모듈 실행이 종료되고 새 버전의 모듈이 설치됩니다.Once compilation completes, module executions are drained, and the new version of the module is installed. 고유하게 컴파일된 T-SQL 모듈을 변경하는 경우 다음 옵션을 수정할 수 있습니다.When you alter a natively compiled T-SQL module, you can modify the following options.

  • 매개 변수Parameters

  • EXECUTE ASEXECUTE AS

  • TRANSACTION ISOLATION LEVELTRANSACTION ISOLATION LEVEL

  • LANGUAGELANGUAGE

  • DATEFIRSTDATEFIRST

  • DATEFORMATDATEFORMAT

  • DELAYED_DURABILITYDELAYED_DURABILITY

참고

고유하게 컴파일된 T-SQL 모듈을 고유하게 컴파일되지 않은 모듈로 변환할 수는 없습니다.Natively compiled T-SQL modules cannot be converted to non-natively compiled modules. 고유하게 컴파일되지 않은 T-SQL 모듈을 고유하게 컴파일된 모듈로 변환할 수는 없습니다.Non-natively compiled T-SQL modules cannot be converted to natively compiled modules.

ALTER PROCEDURE 기능과 구문에 대한 자세한 내용은 ALTER PROCEDURE(Transact-SQL)를 참조하세요.For more information on ALTER PROCEDURE functionality and syntax, see ALTER PROCEDURE (Transact-SQL)

고유하게 컴파일된 T-SQL 모듈에서 sp_recompile을 실행할 수 있으며 다음 실행 시 모듈이 다시 컴파일됩니다.You can execute sp_recompile on a natively compiled T-SQL modules, which causes the module to recompile on the next execution.

예제Example

다음 예에서는 메모리 최적화 테이블(T1)과 T1의 모든 열을 선택하는 고유하게 컴파일된 저장 프로시저(SP1)를 만듭니다.The following example creates a memory-optimized table (T1), and a natively compiled stored procedure (SP1) that selects all the T1 columns. 그런 다음 EXECUTE AS 절을 제거하고, LANGUAGE를 변경하고, T1에서 하나의 열(C1)만 선택하도록 SP1을 변경합니다.Then, SP1 is altered to remove the EXECUTE AS clause, change the LANGUAGE, and select only one column (C1) from T1.

CREATE TABLE [dbo].[T1]  
(  
[c1] [int] NOT NULL,  
[c2] [float] NOT NULL,  
CONSTRAINT [PK_T1] PRIMARY KEY NONCLUSTERED ([c1])  
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )  
GO  

CREATE PROCEDURE [dbo].[usp_1]  
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER  
AS BEGIN ATOMIC WITH  
(  
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'  
)  
 SELECT c1, c2 from dbo.T1  
END  
GO  

ALTER PROCEDURE [dbo].[usp_1]  
WITH NATIVE_COMPILATION, SCHEMABINDING  
AS BEGIN ATOMIC WITH  
(  
 TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'Dutch'  
)  
 SELECT c1 from dbo.T1  
END  
GO