sys.sql_modules(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

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

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

열 이름 데이터 형식 설명
object_id int 포함하는 개체의 개체 ID입니다. 데이터베이스 내에서 고유합니다.
definition 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 모든 입력에 대한 출력을 생성하기 위해 모듈이 NULLNULL 선언되었습니다.
execute_as_principal_id 정수 EXECUTE AS 데이터베이스 보안 주체의 ID입니다.

NULL 기본적으로 또는 EXECUTE AS CALLER인 경우

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

-2 = 소유자로 실행합니다.
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입니다.

설명

D 형식의 개체인 DEFAULT 제약 조건에 대한 SQL 식은 sys.default_constraints 카탈로그 뷰에 있습니다. CHECK 제약 조건의 SQL 식( C 형식의 개체)은 sys.검사카탈로그 뷰를 _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 시스템 카탈로그 쿼리 FAQ
메모리 내 OLTP(메모리 내 최적화)