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

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

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

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

Разрешения

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

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

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

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

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

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

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

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

    Имя функции Description
    База данных Имя базы данных, содержащей эту функцию.
    Сервер Имя текущего экземпляра сервера.
    Пользователь Имя пользователя этого соединения.
    Дата создания Дата создания функции.
    Выполнить как Контекст выполнения для функции.
    Имя Имя текущей функции.
    Схема Схема, которой принадлежит функция.
    Системный объект Указывает принадлежность функции к системным объектам. Значения: True и False.
    Значения NULL по стандарту ANSI Указывает, был ли объект создан с параметром ANSI NULL.
    Encrypted Указывает, зашифрована ли функция. Значения: 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_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).