sys.sql_modules(Transact-SQL)

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

고유하게 컴파일된 스칼라 사용자 정의 함수를 포함하여 SQL Server SQL 언어 정의 모듈인 각 개체에 대한 행을 반환합니다. P, RF, V, TR, FN, IF, TF 및 R 유형의 개체에는 연결된 SQL 모듈이 있습니다. 이 뷰에는 독립 실행형 기본값인 유형 D 개체에 대한 SQL 모듈 정의도 있습니다. 이러한 형식에 대한 설명은 sys.objects 카탈로그 뷰의 열을 참조 type 하세요.

자세한 내용은 메모리 내 OLTP에 대한 사용자 정의 스칼라 함수를 참조하세요.

열 이름 데이터 형식 Description
object_id int 포함하는 개체의 개체 ID입니다. 데이터베이스 내에서 고유합니다.
정의 nvarchar(max) 이 모듈을 정의하는 SQL 텍스트입니다. 이 값은 OBJECT_DEFINITION 기본 제공 함수를 사용하여 가져올 수도 있습니다.

NULL = 암호화됨
uses_ansi_nulls bit SET ANSI_NULLS ON으로 모듈을 만들었습니다.

규칙과 기본값에 대해서는 항상 0입니다.
uses_quoted_identifier bit SET QUOTED_IDENTIFIER ON으로 모듈을 만들었습니다.
is_schema_bound bit SCHEMABINDING 옵션으로 모듈을 만들었습니다.

고유하게 컴파일된 저장 프로시저의 경우 항상 1 값을 포함합니다.
uses_database_collation bit 1 = 스키마 바운드 모듈 정의는 정확한 평가를 위해 데이터베이스의 기본 데이터 정렬에 의존합니다. 그렇지 않으면 0입니다. 이러한 종속성으로 인해 데이터베이스의 기본 데이터 정렬을 바꿀 수 없습니다.
is_recompiled bit WITH RECOMPILE 옵션으로 프로시저를 만들었습니다.
null_on_null_input bit 모든 NULL 입력에 대한 출력을 생성하기 위해 모듈이 NULL 선언되었습니다.
execute_as_principal_id 정수 EXECUTE AS 데이터베이스 보안 주체의 ID입니다.

NULL 기본적으로 또는 EXECUTE AS CALLER인 경우 입니다.

EXECUTE AS SELF 또는 EXECUTE AS <보안 주체인 경우 지정된 보안 주체>의 ID입니다.

-2 = EXECUTE AS OWNER
uses_native_compilation bit 적용 대상: SQL Server 2014(12.x)~SQL Server 2014(12.x).

0 = 고유 컴파일 아님

1 = 고유 컴파일

기본값은 0입니다.
is_inlineable bit 적용 대상: SQL Server 2019 (15.x) 이상

모듈을 인라인으로 사용할 수 있는지 여부를 나타냅니다. 인라인성은 여기에 지정된 조건을 기반으로 합니다.

0 = 인라인 불가능

1 = 인라인입니다.

UDF(스칼라 사용자 정의 함수)의 경우 UDF를 인라인으로 사용할 수 있으면 값이 1이고, 그렇지 않으면 0이 됩니다. 항상 TVF(인라인 테이블 반환 함수)의 경우 1, 다른 모든 모듈 형식의 경우 0 값을 포함합니다.
inline_type bit 적용 대상: SQL Server 2019 (15.x) 이상

현재 모듈에 대해 인라인이 설정되어 있는지 여부를 나타냅니다.

0 = 인라인이 꺼져 있습니다.

1 = 인라인이 켜져 있습니다.

스칼라 UDF(사용자 정의 함수)의 경우 인라인이 켜져 있는 경우(명시적 또는 암시적으로) 값은 1이 됩니다. 값은 항상 TVF(인라인 테이블 반환 함수)의 경우 1이고 다른 모듈 형식의 경우 0입니다.

설명

DEFAULT 제약 조건인 D 형식의 개체에 대한 SQL 식은 sys.default_constraints 카탈로그 뷰에 있습니다. CHECK 제약 조건의 SQL 식인 C 형식의 개체는 sys.check_constraints 카탈로그 뷰에 있습니다.

이 정보는 sys.dm_db_uncontained_entities(Transact-SQL)에도 설명되어 있습니다.

저장 프로시저, 함수, 뷰 또는 트리거의 이름을 바꾸면 카탈로그 뷰의 정의 열에 있는 해당 개체의 sys.sql_modules 이름이나 OBJECT_DEFINITION 기본 제공 함수에서 반환된 정의가 변경되지 않습니다. 따라서 이러한 개체 형식의 sp_rename 이름을 바꾸는 데 사용하지 않는 것이 좋습니다. 대신 해당 개체를 삭제하고 새로운 이름으로 다시 만듭니다. sp_rename(Transact-SQL)에서 자세히 알아보세요.

사용 권한

사용자가 소유하고 있거나 사용 권한을 부여 받은 보안 개체에 대해서만 카탈로그 뷰의 메타데이터를 볼 수 있습니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

예제

다음 예제에서는 현재 데이터베이스에 있는 각 모듈의 object_id, 스키마 이름, 개체 이름, 개체 형식 및 정의를 반환합니다.

SELECT 
          sm.object_id
        , ss.[name] as [schema]
        , o.[name] as object_name
        , o.[type]
        , o.[type_desc]
        , sm.[definition]  
FROM sys.sql_modules AS sm     
JOIN sys.objects AS o 
    ON sm.object_id = o.object_id  
JOIN sys.schemas AS ss
    ON o.schema_id = ss.schema_id  
ORDER BY 
      o.[type]
    , ss.[name]
    , o.[name];  

관련 항목

카탈로그 뷰(Transact-SQL)
개체 카탈로그 뷰(Transact-SQL)
SQL Server 시스템 카탈로그 쿼리에 대한 질문과 대답
메모리 내 OLTP(메모리 내 최적화)