sys.sql_modules(Transact-SQL)
적용 대상: SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform 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(메모리 내 최적화)