다음을 통해 공유


사용자 정의 함수 보기

적용 대상: SQL Server Azure SQL 데이터베이스 Azure 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. 더하기 기호를 선택하여 함수 폴더를 확장합니다.

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

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

    다음 속성이 함수 속성 – function_name 대화 상자에 표시됩니다.

    함수 이름 설명
    데이터베이스 이 함수가 포함된 데이터베이스의 이름입니다.
    Server 현재 서버 인스턴스의 이름입니다.
    사용자 이 연결을 사용하는 사용자의 이름입니다.
    만든 날짜 함수를 만든 날짜를 표시합니다.
    다음으로 실행 함수에 대한 실행 컨텍스트입니다.
    이름 현재 함수의 이름입니다.
    스키마 함수를 소유하는 스키마를 표시합니다.
    시스템 개체 함수가 시스템 개체인지 여부를 나타냅니다. 값은 TrueFalse입니다.
    ANSI NULL ANSI NULL 옵션을 사용하여 개체가 만들어졌는지 여부를 나타냅니다.
    암호화됨 암호화된 함수인지 여부를 나타냅니다. 값은 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)를 참조하세요.