고유하게 컴파일된 T-SQL 모듈 변경

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SQL Server(SQL Server 2016(13.x) 이상) 및 Azure SQL Database에서는 문을 사용하여 고유하게 컴파일된 저장 프로시저 및 고유하게 컴파일된 기타 고유하게 컴파일된 Transact-SQL 모듈(예: 스칼라 UDF 및 트리거)에 대한 ALTER 작업을 수행할 ALTER 수 있습니다.

고유하게 컴파일된 Transact-SQL 모듈에서 실행하는 ALTER 경우 모듈은 새 정의를 사용하여 다시 컴파일됩니다. 다시 컴파일이 진행되는 동안 이전 버전의 모듈을 계속 실행할 수 있습니다. 컴파일이 완료되면 모듈 실행이 종료되고 새 버전의 모듈이 설치됩니다. 고유하게 컴파일된 Transact-SQL 모듈을 변경하는 경우 다음 옵션을 수정할 수 있습니다.

  • 매개 변수
  • EXECUTE AS
  • TRANSACTION ISOLATION LEVEL
  • LANGUAGE
  • DATEFIRST
  • DATEFORMAT
  • DELAYED_DURABILITY

참고 항목

고유하게 컴파일된 Transact-SQL 모듈은 고유하게 컴파일되지 않은 모듈로 변환할 수 없습니다. 고유하게 컴파일되지 않은 T-SQL 모듈을 고유하게 컴파일된 모듈로 변환할 수는 없습니다.

기능 및 구문에 대한 ALTER PROCEDURE 자세한 내용은 ALTER PROCEDURE(Transact-SQL)를 참조하세요.

고유하게 컴파일된 Transact-SQL 모듈에서 sp_recompile 실행할 수 있으므로 모듈이 다음 실행에서 다시 컴파일됩니다.

다음 예에서는 메모리 최적화 테이블(T1)과 T1의 모든 열을 선택하는 고유하게 컴파일된 저장 프로시저(usp_1)를 만듭니다. 그런 다음, EXECUTE AS 절을 제거하고, LANGUAGE를 변경하고, T1에서 하나의 열(C1)만 선택하도록 usp_1을 변경합니다.

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    

참고 항목

고유하게 컴파일된 저장 프로시저