Поделиться через


Просмотр определяемых пользователем функций

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Вы можете получить сведения об определении или свойствах определяемой пользователем функции в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Возможность просмотреть определение функции может понадобиться, чтобы понять, как его данные извлекаются из исходных таблиц, или чтобы увидеть данные, определенные функцией.

Если имя объекта, на который ссылается функция, было изменено, необходимо изменить функцию так, чтобы в ее тексте использовалось новое имя. Поэтому, прежде чем переименовать объект, отобразите список его зависимостей, чтобы определить, отразится ли планируемое изменение на каких-либо функциях.

Разрешения

Использование sys.sql_expression_dependencies для поиска всех зависимостей функции требует разрешения VIEW DEFINITION на базе данных и разрешения SELECT на sys.sql_expression_dependencies для базы данных. Определения системных объектов, например полученные в OBJECT_DEFINITION, видимы для всех.

Использование SQL Server Management Studio

Отображение свойств определяемой пользователем функции

  1. В Обозревателе объектов выберите значок плюса рядом с базой данных, содержащей функцию, свойства которой вы хотите просмотреть, а затем выберите значок плюса, чтобы развернуть папку Programmability.

  2. Выберите знак "плюс", чтобы развернуть папку "Функции ".

  3. Выберите плюс, чтобы развернуть папку, содержащую функцию, для которой вы хотите просмотреть свойства:

    • Табличная функция
    • Скалярно-значная функция
    • Агрегатная функция
  4. Щелкните правой кнопкой мыши функцию, свойства которой необходимо просмотреть, и выберите пункт Свойства.

    Следующие свойства отображаются в диалоговом окне Свойства функции —имя_функции.

    Имя функции Описание
    База данных Имя базы данных, содержащей эту функцию.
    Сервер Имя текущего экземпляра сервера.
    Пользователь Имя пользователя этого соединения.
    Дата создания Отображает дату создания функции.
    Выполнить как Контекст выполнения для функции.
    Имя. Имя текущей функции.
    Схема Отображает схему, которой принадлежит функция.
    Системный объект Указывает принадлежность функции к системным объектам. Значения: True и False.
    NULL по стандарту ANSI Указывает, был ли объект создан с параметром ANSI NULL.
    Зашифрованный Указывает, зашифрована ли функция. Значения: True и False.
    Тип функции Тип определяемой пользователем функции.
    Заключенный в кавычки идентификатор Показывает, был ли объект создан с параметром «идентификатор, заключённый в кавычки».
    Привязка к схеме Указывает, привязана ли функция к схеме. Возможные значения: True и False. Сведения о функциях, связанных с схемой, см. в разделе SCHEMABINDING в CREATE FUNCTION (Transact-SQL).

Использование 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_description,
        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).