사용자 정의 함수 보기

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

SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 사용자 정의 함수의 정의 또는 속성에 대한 정보를 얻을 수 있습니다. 해당 데이터가 원본 테이블에서 파생되는 방식을 이해하거나 함수에서 정의된 데이터를 보려면 함수의 정의를 확인해야 할 수 있습니다.

함수에서 참조하는 개체의 이름을 변경하는 경우 해당 텍스트가 새 이름을 반영할 수 있도록 해당 함수를 수정해야 합니다. 따라서 개체 이름을 바꾸기 전에 먼저 개체의 종속성을 표시하여 제안된 변경 내용의 영향을 받는 함수가 있는지 확인합니다.

사용 권한

sys.sql_expression_dependencies 함수에 대한 모든 종속성을 찾으려면 데이터베이스에 대한 VIEW DEFINITION 권한과 데이터베이스에 sys.sql_expression_dependencies 대한 SELECT 권한이 필요합니다. OBJECT_DEFINITION에 반환되는 정의와 같은 시스템 개체 정의는 모두에게 표시됩니다.

SQL Server Management Studio 사용

사용자 정의 함수의 속성 표시

  1. 개체 탐색기에서 속성을 보려는 함수가 포함된 데이터베이스 옆에 있는 더하기 기호를 선택한 다음 더하기 기호를 선택하여 프로그래밍 기능 폴더를 확장합니다.

  2. 더하기 기호를 선택하여 Functions 폴더를 확장합니다 .

  3. 더하기 기호를 선택하여 속성을 보려는 함수가 포함된 폴더를 확장합니다.

    • 테이블 반환 함수
    • 스칼라 반환 함수
    • Aggregate 함수
  4. 속성을 보려는 함수를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    함수 속성 -function_name 대화 상자에 다음 속성이 나타납니다.

    함수 이름 설명
    데이터베이스 이 함수를 포함하는 데이터베이스의 이름입니다.
    Server 현재 서버 인스턴스의 이름입니다.
    User 이 연결을 사용하는 사용자의 이름입니다.
    만든 날짜 함수를 만든 날짜를 표시합니다.
    다음으로 실행 함수에 대한 실행 컨텍스트입니다.
    입력 현재 함수의 이름입니다.
    스키마 함수를 소유하는 스키마를 표시합니다.
    시스템 개체 함수가 시스템 개체인지 여부를 나타냅니다. 값은 다음과 같습니다 TrueFalse.
    ANSI NULL ANSI NULL 옵션을 사용하여 개체가 만들어졌는지를 나타냅니다.
    Encrypted 함수가 암호화되었는지 여부를 나타냅니다. 값은 다음과 같습니다 TrueFalse.
    함수 유형 사용자 정의 함수의 형식입니다.
    따옴표 붙은 식별자 따옴표 붙은 식별자 옵션을 사용하여 개체가 만들어졌는지를 나타냅니다.
    스키마 바인딩 스키마 바운드 함수인지 여부를 나타냅니다. 사용 가능한 값은 True와 False입니다. 스키마 바인딩 함수에 대한 자세한 내용은 CREATE FUNCTION(Transact-SQL)SCHEMABINDING 섹션을 참조하세요.

Transact-SQL 사용

함수의 정의 및 속성 가져오기

  1. 개체 탐색기에서 데이터베이스 엔진의 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예제 중 하나를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.

    다음 코드 샘플에서는 함수 이름, 정의 및 관련 속성을 가져옵니다.

    USE AdventureWorks2022;
    GO
    -- Get the function name, definition, and relevant properties
    SELECT sm.object_id,
       OBJECT_NAME(sm.object_id) AS object_name,
       o.type,
       o.type_desc,
       sm.definition,
       sm.uses_ansi_nulls,
       sm.uses_quoted_identifier,
       sm.is_schema_bound,
       sm.execute_as_principal_id
    -- using the two system tables sys.sql_modules and sys.objects
    FROM sys.sql_modules AS sm
    JOIN sys.objects AS o ON sm.object_id = o.object_id
    -- from the function 'dbo.ufnGetProductDealerPrice'
    WHERE sm.object_id = OBJECT_ID('dbo.ufnGetProductDealerPrice')
    ORDER BY o.type;
    GO
    

    다음 코드 샘플에서는 예제 함수 dbo.ufnGetProductDealerPrice의 정의를 가져옵니다.

    USE AdventureWorks2022;
    GO
    -- Get the definition of the function dbo.ufnGetProductDealerPrice
    SELECT OBJECT_DEFINITION (OBJECT_ID('dbo.ufnGetProductDealerPrice')) AS ObjectDefinition;
    GO
    

자세한 내용은 sys.sql_modules(Transact-SQL)OBJECT_DEFINITION(Transact-SQL)를 참조하세요.

함수의 종속성 가져오기

  1. 개체 탐색기에서 데이터베이스 엔진의 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예제를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다.

    USE AdventureWorks2022;
    GO
    -- Get all of the dependency information
    SELECT OBJECT_NAME(sed.referencing_id) AS referencing_entity_name,
        o.type_desc AS referencing_desciption,
        COALESCE(COL_NAME(sed.referencing_id, sed.referencing_minor_id), '(n/a)') AS referencing_minor_id,
        sed.referencing_class_desc, sed.referenced_class_desc,
        sed.referenced_server_name, sed.referenced_database_name, sed.referenced_schema_name,
        sed.referenced_entity_name,
        COALESCE(COL_NAME(sed.referenced_id, sed.referenced_minor_id), '(n/a)') AS referenced_column_name,
        sed.is_caller_dependent, sed.is_ambiguous
    -- from the two system tables sys.sql_expression_dependencies and sys.object
    FROM sys.sql_expression_dependencies AS sed
    INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
    -- on the function dbo.ufnGetProductDealerPrice
    WHERE sed.referencing_id = OBJECT_ID('dbo.ufnGetProductDealerPrice');
    GO
    

자세한 내용은 sys.sql_expression_dependencies(Transact-SQL)sys.objects(Transact-SQL)를 참조하세요.